ASP代码审计之Http请求伪造漏洞分析

CracerCracer 2016-1-5 代码审计 661 0 8

Http请求伪造漏洞分析

 

概述:一个比欺骗表单更高级和复杂的攻击方式是HTTP请求欺骗。这给了攻击者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据。看到大多数浏览器会包含一个来源的URL值,你可能会试图使用Request.ServerVariables(“HTTP_REFERER”)变量去防止欺骗。确实,这可以用于对付利用标准浏览器发起的攻击,但攻击者是不会被这个小麻烦给挡住的。通过编辑HTTP请求的原始信息,攻击者可以完全控制HTTP头部的值,GET和POST的数据,以及所有在HTTP请求的内容。

漏洞原理:通过Request.ServerVariables 去验证数据来源的合法性,依旧不可靠,毕竟一切从Request获取的值都可以被伪造出来的。

漏洞代码:下面以ASP中经典验证来源的代码做分析

1
2
3
4
5
6
7
8
9
<%
Dim From_url , Serv_url
From_url = Cstr(Request.ServerVariables("HTTP_REFERER"))
Serv_url = Cstr(Request.ServerVariables("SERVER_NAME"))
If Mid(From_url,8,Len(Serv_url)) <> Serv_url then
Response.Write "非法链接!"
Response.End
End if
%>

 

上述代码中2个判断的值均来自客户端环境变量,判断思路是目标地址和来源地址的域名是否一致,不一致则认为是非法访问,这段代码常用于防盗链模块中。

漏洞利用:用法HTTP代理软件构造一个特定的数据包,在HTTP头加上Referer 。如下图所示

 

1

 

漏洞修复:验证数据来源的真实性还是应该放在服务端,Request变量获取的值都是不可靠的。

 

 

 

转载请注明来自Cracer,本文标题:《ASP代码审计之Http请求伪造漏洞分析》

喜欢 (8) 发布评论
发表评论


Top