用Mitmproxy辅助Sqlmap自动化利用特殊漏洞

本文主要介绍利用 mitmproxy 脚本辅助 sqlmap,自动化利用漏洞的方法。由于笔者毫无学习更多姿势的上进心,又在处理数据库注入漏洞方面才学浅薄,因此当一个漏洞不能用 sqlmap 利用的时候笔者就寸步难行了。

但同时,“懒癌患者”这一属性也让笔者发现了一些赖在sqlmap上面不走的方法。在一次测试过程中笔者遇到了这样一个场景:某网站信息修改页面的用户id参数没有被有效过滤。在一般情况下,这样的标准漏洞可以直接用sqlmap跑,但是拜CDN所赐,页面状态很不稳定,具体表现为HTTP状态码随机被过滤,页面也不时是被缓存的内容。这样不稳定的页面难以使用sqlmap自动化利用。于是笔者利用mitmproxy脚本,与sqlmap的二阶注入功能使sqlmap有能力通过自带的boolean-based检测方法来检测update是否成功,并据此判断表达式真假,自动化利用此漏洞。

一、场景

漏洞涉及两个页面,第一个页面包含修改内容的表单,表单里面包括当前的值。这个页面被用于获取update是否成功

get.php:

第二个页面是执行update的页面。这个页面包含数据库注入漏洞。

change.php:

显然第二个页面的update语句user_id参数没有被有效过滤。但是因为出错页面和http状态码都受到CDN缓存影响而不一定出现,直接利用sqlmap处理这个boolean-based的数据库注入十分困难。

二、手动利用的思路

一切从手动注入说起

发生数据库注入的语句:

因为update页面的返回极其不稳定,所以最好的利用方法是通过检测update来做boolean-based注入。

注:boolean-based注入指利用web应用在漏洞利用者注入的语句中特定表达式真假性不同时产生不同的输出来获取数据库中数据的方法。

举例:

0 和 1 的不同决定了更新是否成功。因此手动注入的时候就可以不停地企图把姓名更新为新的值,并通过更新是否成功来判断and后面表达式的值。

如图:

三、自动化利用思路

很遗憾,这个利用方式sqlmap并不支持。首先sqlmap对boolean-based 注入的检测非常静态,只可以基于一个确定的http状态码,正则表达式,字符串是否符合来检测。而这种利用需要每次更改检测的内容。其次,sqlmap的请求过程也是静态的,难以动态地把页面内容改成和之前不一样的值。

但是sqlmap也不是一无是处,其自带的二阶注入功能让利用者可以用get.php来检测update是否成功。

不妨换一种思路:既然sqlmap只支持把数据更新成一个确定的值,那不妨在每一次检测过后都把数据“重置”。如果手写一个http代理,就可以在sqlmap尝试修改之前将数据设定为初始值,这样sqlmap的静态更新和检测就适用于这个漏洞了。

如图:

四、自动化利用的实现

这里使用了mitmdump来实现。工具kali自带,安装方法在此不再赘述。

具体的API可以参考API文档

mitmdump的脚本编程

十分简单的代码,如果请求是在提交修改,就在提交之前首先重置数据。

首先开启代理

然后运行sqlmap

request:

最终结果

五、总结

固然,自动化利用工具难以把漏洞的各种场景都涵盖。但是我们借助于可编程的web代理等工具,在对自动化利用工具的工作原理有了解的前提下,往往有机会将那些可以手动利用的特殊漏洞转化成可以被自动化工具利用的漏洞。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维技术迷

chattr命令

chattr命令用来改变文件属性。这项指令可改变存放在ext2/3/4文件系统上的文件或目录属性。 一、文件或目录属性 1.1 属性 这些属性共有以下8种模式...

3405
来自专栏帘卷西风的专栏

linux编译curl库的动态库so

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 

721
来自专栏生信技能树

samtools安装踩坑记录

但是在使用samtools的时候,总是报错,没有载入samtools的库文件(动态库缺失)

2287
来自专栏张善友的专栏

SQL Server 2005的负载均衡

SQL Server 2005仍然不直接地支持负载均衡——但是它为以前SQL Server版本中可用的所有负载均衡方法提供了令人激动的改善和支持。   目录 1...

21310
来自专栏自由而无用的灵魂的碎碎念

在windows server 2008 r2上安装nokia pc 套件

我下载了最新版的nokia pc套件,不过发现无法在windows server 2008 r2上安装:

1043
来自专栏云豹直播系统开发

怎么搭建短视频系统?全套负载均衡方案

短视频系统跟直播系统有一样的特点,面向的用户群体数量较大,聚集时间点集中。比如午饭时间,晚上休闲时间。所以做好系统的负载特别重要,既能提高系统的稳定性和可用性,...

2444
来自专栏我的博客

scp命令提示bash:scp command not found

今天需要从a主机拷贝文件到b主机,两个主机都是linux的。 在a主机上使用scp命令拷贝 scp /root/1.txt root@www.0377joyou...

3565
来自专栏Laoqi's Linux运维专列

Nginx为什么比Apache 高效

什么是阻塞:就是线程在执行IO操作获取数据时,这个IO可能会需要一定的时间才能等到数据返回,然后才能接着执行下面的命令。那么,此时,这个线程的等待状态我们就把它...

3016
来自专栏PHP技术大全

grafana+prometheus快速搭建MySql监控系统实践

对于LNMP环境下的开发者来说,mysql是非常重要的一环,同时mysql的性能监控也是开发者所需要关注的一环;如果大家使用阿里云的RDS会感觉到其监控功能非常...

1653
来自专栏叔叔的博客

阿波罗配置中心的体验

这个好用,可以对部分实例进行灰度发布,比如对部分服务器的实例进行测试,观察一段时间没问题,再正式发布,就是体验服。

1264

扫码关注云+社区