猫窝私语 — Makumo's Blog

玛酷猫的温馨小窝,记录生活点点滴滴。

@玛酷猫15年前

12/6
01:46
他山之石 建站日志

HTTP_X_FORWARDED_FOR、IP、安全性

(由于本人也是PHP的初学者,对于一些安全问题了解的也不是很多。可能是空间商“将程序隐藏在Apache的Proxy模块后面”,除了使用HTTP_X_FORWARDED_FOR,其他方法获取的IP地址都是127.0.0.1。@gowers在之前所写的《解决wordpress留言评论者IP都是127.0.0.1》提到了关于HTTP_X_FORWARDED_FOR安全性的问题,我在网上查找了些资料,安全性的漏洞可以使用格式检查和SQL语句不安全字符过滤方法来封堵,不过对于伪造IP就没什么办法了。引用下kingthy的一篇文章《使用HTTP_X_FORWARDED_FOR获取客户端IP的严重后果》)

在WEB开发中.我们可能都习惯使用下面的代码来获取客户端的IP地址:

//优先取得代理IP
string IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(IP)) {
 //没有代理IP则直接取连接客户端IP
 IP = Request.ServerVariables["REMOTE_ADDR"];
}

上面代码看来起是正常的.可惜这里却隐藏了一个隐患!!因为”HTTP_X_FORWARDED_FOR”这个值是通过获取HTTP头的”X_FORWARDED_FOR”属性取得.所以这里就提供给恶意破坏者一个办法:可以伪造IP地址!!

下面是测试代码:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/ip.aspx");
request.Headers.Add("X_FORWARDED_FOR", "0.0.0.0");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream());
string IP = stream.ReadToEnd();
stream.Close();
response.Close();
request = null;

“ip.aspx”文件代码:

Response.Clear();
//优先取得代理IP
string IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(IP))
{
  //没有代理IP则直接取客户端IP
  IP = Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write(IP);
Response.End();

这样.当测试代码中去访问ip.aspx文件时.”string IP = stream.ReadToEnd();”这段代码取到的IP数据就是”0.0.0.0″!!!!(呵.在真实情况下.这样的IP地址肯定不是我们想要的结果.而在有些投票系统中限制一个IP只能投1次票时,如果也是用类似的代码取得对方IP然后再判断的话.呵呵.限制就失效咯)…

或者如果你用上面代码获取IP地址后后面又不再进行数据判断的话也许还能更进一步进行数据破坏!!
比如你用类似上面的代码中获取IP地址就直接有这样的SQL语句:
string sql = “INSERT INTO (IP) VALUE (‘” + IP + “‘)”;
那么也许破坏者还可以进行SQL注入进行数据破坏!!

这样看来利用”HTTP_X_FORWARDED_FOR”这个属性获取客户端IP的方法就不再可取了.-_-# 但如果不用这种方法.那么那些真正使用了代理服务器的人.我们又不能再获取到他们的真实IP地址(因为某些代理服务器会在”X_FORWARDED_FOR”这个HTTP头里加上访问用户真正的IP地址).呵.现实就是这样,某种东西都有有得必有失…

HTTP_X_FORWARDED_FOR、IP、安全性

@玛酷猫17年前

07/10
10:25
病毒安全

多引擎病毒扫描网站VirusTotal

当朋友传给你文件,而你又不能确定文件的安全的时候,尤其是你需要这个文件但机器上又没有很好或者最新病毒库的杀毒软件,你会怎么处理?拒绝接受还是先使用再说?Virustotal可以帮你解决这个问题。(感觉怎么说都像是在做广告=。=语言这个东西还是要靠积累呀!)

Virustotal是一项分析可疑文件和便利快速探测病毒,蠕虫,木马和各类被反病毒引擎所能探测的恶意软件的服务,目前是25个病毒引擎,详细参看分析结果列表。当然他是免费的,所以只能帮你分析,不能帮你去处,你可以根据分析结果来决定如何处理这个文件。

首先当然是进入VirusTotal站点,网址是:www.virustotal.com。这是个国外站点,不过页面很简单,不会英文也会使用^^
点击右上“浏览”选取需要扫描的文件后点击“Send”按钮。只能单个文件分析,如果有多个文件请打包。如图:

显示文件上传中,请稍等,文件越大时间越长。如图:

如果使用人数比较多,会提示文件正在排队中,以及排队时间,如图:

分析中,依次使用多个病毒引擎进行分析,时间比较长,可以先做其他事情。如图:

分析结果以及文件基本信息。如图:

除了直接使用网站,还可以使用[name]VirusTotal Uploader,http://www.virustotal.com/vtsetup.exe[/name]。这是一款官方提供的只有几十k的小插件。安装了它以后你只需对要检查的文件右键–>发送到->VirusTotal就可以了,很方便。如果使用的是Firefox,你还可以使用VirusTotal的[name]Firefox插件,https://addons.mozilla.org/en-US/firefox/addon/4451[/name]。

同类型的网站还有JottiVirus.Org等等,使用起来大同小异,就不多叙述了。

PS:图片宽度一超过500,版面就乱了=。=无奈只有缩小点了,可能看不清楚。不知道有没有只自动截断图片超出范围部分的插件,自己先找找再说。

多引擎病毒扫描网站VirusTotal

@玛酷猫17年前

05/24
14:49
病毒安全

一个伪装ASP.NET框架的挂马

前段时间朋友的服务器被挂马了,找我帮忙。登陆他的站点,发现所有页面尾部有2段IFRAME的挂马。远程登陆他的服务器,查看了他的原代码,并没有看到挂马代码。查了下资料,应该确定是 ISAPI扩展 出了问题。在主IIS上——右键属性——ISAPI,共有4个扩展:
1、ASP.NET_1.1.(版本号) 级别是低, 路径C:WINDOWSMicrosoft.NETFrameworkv1.1.xxxxxaspnet_filter.dll
2、ASP.NET_1.0.(版本号) 级别是高, 路径C:WINDOWSMicrosoft.NETFrameworkv1.0.xxxxxaspnet_filter.dll
3、RpcProxy
4、wanps.dll 级别是高, 路径c:windowshelpwanps.dll
很明显,最后一个就是挂马。
查看目录还包括另外2个文件:
wanps.ini内容为:

=GAG5=ABCDEFG
Redirector=C:windowshelpwanps.txt

wanps.txt内容为:

 
 
 
 
 

停止IIS,删掉有问题的ISAPI和相关文件,重启IIS,浏览网页,挂马少了一个,不过还有一个依旧存在。代码类似,只不过网页地址加密过。

继续在网上查资料,也考虑到中了其他病毒/木马,或者ARP欺骗挂马,但是用杀软检查已经ARP检测工具也没有发现相关病毒以及ARP攻击,系统目录下asp.dll文件也没有什么改动。没办法,又把目光回到IIS上,初看那另外3条ISAPI扩展好象没有什么问题。不过我记得WIN2003默认.NET版本是1.1的,怎么有个1.0的,检查了C:WINDOWSMicrosoft.NETFramework目录下各个版本的文件,发现问题所在,那个1.0的文件夹下面只有3个文件,除了aspnet_filter.dll还有另外2个DLL(删快了,忘记录文件名了),判定应该是这块问题。停止IIS,删除ISAPI以及文件,再重启,挂马解决。

最后总结下目前几种挂马:
1、最基本的网页添加挂马,可以在受害程序中查找到挂马代码。通过程序漏洞、系统漏洞的方式直接添加在原始程序的头尾或者中间部分。删除原始程序代码中木马部分,打上漏洞补丁既能解决 。
2、病毒、木马挂马。解决方法:查杀病毒、木马。
3、ISAPI扩展挂马 ,往往全站都被挂马,原始程序中无挂马部分。解决方法如上。
4、系统文件C:WINDOWSsystem32inetsrvasp.dll(特指ASP的站点,PHP站点应该也有类似的)被修改挂马,用MD5软件和正常asp.dll的MD5码对比即可鉴别,解决方法停止IIS用正常的覆盖问题文件,重启IIS即可。
5、ARP欺骗挂马,原理不多叙述了,可以google下关键字“ARP 挂马 原理”,有很多这方面说明,以及解决方法。
6、CDN挂马,这个我也不是很懂,出现的比较少,感觉这个就类似某些地区的ADSL上网会被强行插入广告或者跳转至114站点。

目前只知道这么多了,以后有新的在补充。

一个伪装ASP.NET框架的挂马