Code前端首页关于Code前端联系我们

渗透测试技术攻击网站:SQL注入与WAF规避分享思路

terry 2年前 (2023-09-28) 阅读数 70 #Web安全

作者:Ahackerorg

网站就会打开这样,很熟悉的表单页面,定期测试,我厌倦了xsss、SQL、xss感觉这不是要学的东西试试你的运气并测试 SQL。 ?我大概知道,

1。网站是aspx

2。中间件是 IIS

3。 “字符串 'aaa'” 后面的引号不完整。 “aaa”附近有语法错误。这意味着执行单引号

IV。数据库判断

aspx+iis其实基本都是MSSQL数据库,不过为了确认一下,我还是判断一下是否是MSSQL,不然数据库会失败,那不是浪费时间吗?

输入aaa'和user>0作为用户名渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

这里的用户名是一个字符串,必须用引号引起来。我这里不关闭,点击“确认提交”,返回如下: 渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

说明 我的输入是通过waf过滤的。此时我的心里是:渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

继续测试,结构是aaa'且'1'='1,但是也被waf过滤了。 渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

此时我仍然无法识别它是MSSQL数据库。冷静了两分钟,经过测试,终于发现数据库中所有常见的关键字都被过滤掉了,但是有些特殊字符却没有过滤掉。 渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

继续构造,aaa' /*a @@version>0 and '1 '='1′*/–,这里解释一下,/**/是注释字符,–是MSSQL和Oracle注释字符,如果是要使评论成功,它可以是两个之一。特别说明:Mysql也可以注释-,但是后面有一个空格,所以-,而另外两个后面没有空格。 渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

终于成功了。 “用户名不存在”显然意味着用户名aaa不存在。顺便说一下,我随机输入了用户名“aaa”。如果用户名存在,会提示“输入的厂家名称信息不正确!”至此,指定的SQL注释符已经执行成功,并且“-”注释符目前在MSSQL和Oracle两个数据库中都可用。基本上就确定是这两个数据库之一了。继续评估这个想法:使用“;”法院的理由是 MSSQL 支持“;”,这是 MSSQL 命令分隔符,而 Oracle 不支持此命令分隔符。渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

5。 Waf 绕过

关于WAF 绕过没什么好说的。只是不断的测试,构造命令来破坏WAF的保护,同时在后端也能成功完成。每个应用程序、数据库、中间文件等都对应不同的构造语法,需要结合真实环境进行测试。例如HTTP参数污染绕过waf:http://www.test.com/test.asp?id=123&id=456

提交的参数为id=1&id=2&id=3,即/test.asp?id= 1&id =2&id=3

http://Asp.net + iis:id=1,2,3

Asp + iis:id =1,2,3

Php + apache/nginx: id = 3

这里以asp.net+iis为例。 asp.net+iis提取后id=1,2,3因为这三个参数都是id。

此时,将GET请求修改为:id=union+select+password/*&id=*/from+admin

通过asp.net+iis提取:

id=union+select+password /* , */from+admin,在数据库中查询id参数时,中间被注释掉,变成id=union+select+password from+admin。这是一个完整的SQL语句。这是一种绕过HPP参数污染的方法。这里提供这个例子是为了说明每个应用程序使用不同的处理方法。

1。省略空格

经过一番集思广益,我发现如果省略空格,关键字函数之间的空格就被过滤掉了。比如union select之间的空格是这样写的,被过滤了,可以用tab、%0a来替换空格,即union%0aselect,这里用tab键来替换空格。

测试上面过滤后的命令。直接输入aaa'a '1'='1被过滤。这里在a和1之间使用tab键,所以aaa'和'1'='1,渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

这次终于不过滤了,这里测试发现用tab键代替空格也可以绕过渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

我的心情时刻:渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

2。提取数据库的当前版本

aaa'a%0a@ @version>0--

3。爆破用户名

aaa'a用户>--

6.使用sqlmap

手动数组爆破速度太慢。现在你知道了过滤规则,你可以使用sqlmap了。调用篡改脚本 space2mssqlblank.py。该脚本用其他空符号替换空格。如果你已经知道过滤规则而没有合适的调用脚本,你也可以自己编写。该命令如下:

sqlmap.py -r 2 .txt –risk 3 –dbms=mssql--random-agent -v 3 -p "txtUserNo" --tamper=space2mssqlblank.py渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

七。总结

剩下的手动测试就是平时的爆表、字段,字段内容比较简单,就不演示了。关键是绕过WAF需要太多的脑力。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门