渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

2019-10-1110:00:33WEB安全防护Comments4,132 views字数 1878阅读模式

作者:Ahackerorg文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

网页打开是这样的,好熟悉的表单页面,常规测试一下,xsss、SQL,xss我都玩腻了感觉没啥好研究的。随便碰碰运气测下SQL。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

三、挖掘思路文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

当我在用户名处输入aaa’时,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

直接返回错误,典型的IIS错误,目测可能存在注入,返回页面如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

从上述返回结果,我大概知道了,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

1、 网站是aspx文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

2、 中间件是IIS文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

3、“字符串 ‘aaa” 后的引号不完整。’aaa” 附近有语法错误。”说明单引号被执行文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

四、数据库判断文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

其实aspx+iis基本上都是MSSQL数据库,但是我为了确认一下,还是判断是否为MSSQL,否则数据库搞错了,那岂不是瞎忙了嘛。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

用户名处输入 aaa’ and user>0文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

此处用户名处是字符串,肯定需要闭合引号的,这里我先不闭合直接点击“确定提交”,返回如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

说明有waf过滤我的输入,此时我的内心:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

继续测试,构造为aaa’ and ’1′=’1,但是同样被waf过滤了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享
渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

到了这里我还是没法确定为MSSQL数据库,冷静了两分钟之后,经过测试,最后发现数据库常用关键字都被过滤了,但是某些特殊字符未被过滤。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

继续构造,aaa’ /*and @@version>0 and ’1 ‘=’1′*/–,这里解释下,/**/是注释符,–是MSSQL、Oracle的注释符,如果能够成功注释,可能为两个之一,特别说明:Mysql也可以– 注释,但是后面还有个空格,即– ,而其它两个后面是没有空格的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

终于成功执行了。“用户名不存在”,当然就是aaa用户名不存在的嘛,毕竟用户名“aaa“是我随便输入的,如果用户名存在,则会提示“所填厂家名称资料有误!”到这一步已经成功执行了我输入的SQL注释符,而“–“注释符目前有两个数据库可以使用,MSSQL与Oracle,基本上确定为这两个数据库之一,继续判断思路:用”;“即可判断,因为MSSQL支持”;“,它是MSSQL的语句分隔符,而Oracle不支持这个语句分隔符。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享
渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

五、waf绕过文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

绕过waf没啥好说的,就是不断的测试,构造语句打乱waf的防护,同时又能在后端成功执行即可,每个应用、数据库、中间件等,都对应不同的构造语法,需要结合实际环境来测试,比如HTTP参数污染绕过waf:test.com/test.asp?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

提交的参数为id=1&id=2&id=3,即/test.asp?id=1&id=2&id=3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

Asp.net + iis:id=1,2,3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

Asp + iis:id=1,2,3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

Php + apache/nginx:id=3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

这里用asp.net+iis做示例,经过asp.net+iis提取为id=1,2,3,因为三个参数都是id。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

此时修改GET请求为:id=union+select+password/*&id=*/from+admin文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

经过asp.net+iis提取:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

id=union+select+password/*,*/from+admin,当在数据库中查询id参数的时候,中间被注释掉,变为id=union+select+password from+admin,这是完整的SQL语句,这是HPP参数污染绕过的方法,这里举这个例子是为了说明每个应用都采用不同的处理方式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

1、空格绕过文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

经过大量的烧脑测试之后,发现只要绕过空格即可,关键字函数之间的空格被过滤,比如union select之间的空格如果就这样写的话,是被过滤的,可以用tab、%0a代替空格,即union%0aselect,这里用tab键代替空格。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

测试一下刚刚上面被过滤的语句,aaa’and ’1′=’1直接输入是被过滤的,这里在and与1之间用tab键代替,即aaa’ and ’1′=’1,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

这回终于没有被过滤了,这里测试发现用tab键代替空格也可绕过文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

此时的心情:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

2、爆当前数据库版本文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

aaa'and%0a@@version>0--文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

3、爆用户名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

aaa'and user>--文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

六、sqlmap使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

手工爆字段太慢,既然已经知道过滤规则,可以用sqlmap,调用tamper脚本space2mssqlblank.py,此脚本是把空格替换为其它空符号,如果已经知道过滤规则,没有合适的调用脚本,也可以自己编写一个,本次命令如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

sqlmap.py -r 2.txt –risk 3 –dbms=mssql--random-agent -v 3 -p "txtUserNo" --tamper=space2mssqlblank.py文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

渗透测试技术入侵网站:一次SQL注入与WAF绕过思路分享

七、总结文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

手工测试剩下的就是常规爆表、字段、字段内容,比较简单,不在进行演示,关键还是绕过waf太耗脑力。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/anquan/16822.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/anquan/16822.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定