Fiddler的灵活使用

小川 2016-04-28 15:33:00

0x00 前言


Fiddler是一款强大的web调试工具,其基本用法网上已经有很详细的教程,这里我就不再多说了。下面只是经验之谈,利用Fiddler各种功能达到自动检测漏洞的目的。

0x01 市场需求


我们在进行漏洞挖掘过程中,由于需要做大量的请求分析、大量的测试规则,且需要不断的重放修改请求进行探测,这导致消耗的精力、时间巨大。如果我们可以将请求保存下来,本地模拟请求的发送,自动修改请求,加载各种漏洞的测试规则,然后对请求的返回结果、状态进行漏洞特点的判断,那么对一些常见的sql注入、xss漏洞、文件包含等漏洞挖掘就非常的方便了。有了这样的需求,我们来看看Fiddler能否给我们提供很好的技术支持

0x02 需求分析


Fiddler采用代理的方式捕获请求,能够完美的截获请求头,这样就能满足我们的一些登录会话的需求,以及厂商做了rerferer验证、或者其他请求头验证的情况。而且Fiddler很好的支持https,可保存完整的请求以及发送的数据、参数等信息方便快捷的过滤规则,能够保留我们需要的测试session,轻松过滤一些js、css、图片等不必要的请求。

0x03 干活


Fiddler虽然支持保存请求头,但是不支持一键保存。每次保存请求头时都需要点一次确认。这使得保存请求非常的不方便。哎!重点来了,看官注意了,后来查询一些资料才知道,Fiddler有一个Fiddler2 Script Editor它支持用户调用其自定义的一些函数,自行编辑脚本,非常简单易懂,位置在rules->Customize rule下。

起初的想法是这样的:在脚本编辑器中有个OnBeforeRequest函数,在该函数下编辑的代码,代表可以在request触发前对request进行处理。

我们先在ClassHandlers下定义一个菜单,用于控制开启插件的开关:

在OnBeforeRequest函数下增加如下代码:

if(nowsave){
            oSession.SaveRequest(""+oSession.id+"_Request.txt",false);
            
        }

意思就是当捕获到session时就将请求request保存到指定目录

来看看效果,在rule下会出现我们添加的菜单,选中它后就开始时时的存储request到本地了:

保存本地的request:

post数据,参数、数据也都在其中,

能够时时的存储request,再配合自己写的一些对request进行模拟请求探索漏洞的工具,每天随便看看网站,逛逛各大厂商就能挖洞!妈妈再也不用担心我会和漏洞url擦肩而过了!是不是特别给咱妈省心?

然而这还不能满足我们的需求,因为在工作中我们需要对一些特定的请求进行过滤后再进行测试,比如一些请求有插入数据的功能列如评论,如果这种请求进行自动化探测的话,会带来大量的垃圾数据,往往测试时需要过滤掉。另外时时存储会保存大量request,全部都进行测试效率会降低。利用fiddler的过滤规则,我们已经能够保留我们希望测试的request,如果能有一个命令,能一键保存我们过滤留下的session,那效率将会大大提高。然而fiddler并没有这样的功能,就像上边说到的,保存request每次都会弹框点击确认才行。我们再来看看Fiddler 2 Script Edit是否能解决这个问题。果然在OnExecAction函数下可以让我们自定义命令,输入命令后,执行我们想要的代码,直接上代码:

case "save":
            var Sessions=UI.GetAllSessions();
                for (var i=0;i<Sessions.Length;i++)
                {
                    Sessions[i].SaveRequest("你的目录"+i.toString()+"_Request.txt",false);
                }
            return true;

增加一个case,循环保存即可。虽然上面的代码很简单,但是我却分析学习测试了好长时间,包括哪些fiddler的函数可用,用哪个类等等,这段过程就比较曲折了,就不多说了。 来看看效果,打开fiddler,在左下角输入命令save

request被一键保存了:

0x04 总结


好了request保存以后,对request的分析,就要靠个人如何去写漏洞识别的工具了,不同的人有不同的思路、想法,但是都离不开原始request,这些就不是本文要讲述的了。希望能给大家一点点帮助。

评论

莫里 2016-04-28 16:22:30

简单点说,你就是ctrl+s 保存请求包洛。。。。
我还以为你加了一个什么自动检测漏洞插件进去呢。。。。。

路人甲 2016-04-28 16:48:56

从来都没有错过Wooyun的文章,每篇都是干货!

J

JotPot 2016-04-28 20:44:54

还是喜欢fiddler的composer功能

海豚1号 2016-04-28 21:20:37

为什么不用burpsuite貌似用burpsuite更加简单。burpsuite不能save history吗?

jye33 2016-04-28 22:33:03

自动化挖掘是未来的趋势

鼓楼男神 2016-04-29 14:49:34

学习了 谢谢

小葵 2016-04-29 15:49:17

@莫里 不要说的那么直接

大亮 2016-04-29 15:53:08

似乎看到了川神刷了各大src的门径

路人甲 2016-05-02 20:47:59

来安利一个node.JS下的代理工具:https://github.com/alibaba/anyproxy ,没fiddler这么完善,但能用JS来搞各种脚本,哈哈

0

0x0F 2016-05-05 11:17:14

@OttoMao 你这波安利我收了!

V

vc1 2016-05-05 22:37:43

@OttoMao 这个不能截断修改?

小川

一个致力要将乌云变成搞笑论坛的男人

twitter weibo github wechat

随机分类

后门 文章:39 篇
无线安全 文章:27 篇
iOS安全 文章:36 篇
其他 文章:95 篇
事件分析 文章:223 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录