Burpsuite HTTP_Methods 头注入

通常服务端只接受客户端的GET和POST请求,正因为HTTP协议是无状态的还有其他请求方式,在HTTP/1.0的时候,全部请求方式为:GET,HEAD,POST,PUT,DELETE,OPTIONS,TRACE,PATCH,MOVE,COPY,CONNECT,LINK,UNLINK,WRAPPED等。如果开了PUT方法可以导致任意写入文件,如果开了DELETE则会造成遍历删除文件,很多开发环境发现此问题后,在一些环境配置中默认禁用了PUT,DELETE等一些危险的请求方法。

首先说下漏洞的测试,在Burpsuite中的Repeater中添加域名ip和端口号.

在Request中写入OPTIONS / HTTP/1.1,执行后返回:
HTTP/1.1 400 Bad Request
Date: Wed, 24 Feb 2016 12:47:40 GMT
Server: Apache/2
Content-Length: 287
Connection: close
Content-Type: text/html; charset=iso-8859-1

OPTIONS请求正常则应该返回支持的请求方法,而这里确没有返回,再试试HTTP/1.0协议版本

在Request中写入OPTIONS / HTTP/1.0,执行后返回:
HTTP/1.1 200 OK
Date: Wed, 24 Feb 2016 12:31:36 GMT
Server: Apache/2
Allow: GET,HEAD,POST,OPTIONS
Vary: Accept-Encoding,User-Agent
Content-Length: 0
Connection: close
Content-Type: text/html

可以看到正常返回了支持的请求方法。
测试过在win系列和Linux系列都可以正常返回,这样可以用Python写一个脚本从百度爬url,实现自动拿shell,不过此问题大多数环境部署默认都解决了,只有一些老环境版本会存在HTTP头注入漏洞。
使用方法如下:
PUT /hack.txt HTTP/1.0
my name is 0535code.com!

 

KaLi burpsuite request 导出日志 sqlmap批量扫注入点

在网上公开提供的方法,这里完善下细节和在KaLi下使用sqlmap的详细方法。
首先在burpsuite里面设置下日志,如下:
Options->Misc->Logging->Proxy:Requests 设置下保存路径 XXX.txt
然后通过burpsuite嗅探的raw都会保存在XXX.txt
开始在KaLi下使用,一直报错?the specified list of targets does not exist,不晓得那里发生了问题,找不到目标主机。网上在win和bt5下使用sqlmap都是用python sqlmap.py方式启动,而在KaLi下是用sqlmap启动。怀疑是版本问题,换了burpsuite其他版本,发现日志的格式都是一样的,排除版本的问题了,其次就是日志里面有乱码,以为是乱码问题,找了3个不带乱码的请求也是无效的,看了下谷歌了一下,找到了原因,要把扫描的文件放入sqlmap目录下才可以。
把XXX.txt放入/usr/share/sqlmap/目录下就可以用了。
python??sqlmap.py -l 文件名 –batch -smart
batch:自动选yes。
smart:启发式快速判断,节约时间。
最后能注入的url会保存到out文件夹下
Expection:log文件中如果有sqlmap无法读取的字符(ascii码之外的字符)会读取失败。
输出路径:
[23:22:43] [INFO] you can find results of scanning in multiple targets mode inside the CSV file ‘/usr/share/sqlmap/output/results-01292016_1122pm.csv’
如果request多的话,防止cookies失效,可以添加 –proxy http://127.0.0.1:8080 使用本地代理会更新cookies的标识;
“””
you provided a HTTP Cookie header value. The target URL provided its own cookies
within the HTTP Set-Cookie header which intersect with yours. Do you want to me
rge them in futher requests? [Y/n] Y

“””

burp Intruder 攻击模块参数说明

常用类型(attack type)
(1)Sniper:适用于单变量,提交时是逐个提交(每次一个)。
(2)Battering Ram:适用于同变量,提交时是批量提交(每次一批),如在头部带cookie和网页主体中同用一个username的HTTP请求。
(3)Pitchfork:适用于多变量,成对提交(每次一组),类似于同时提交A:B:C…,最多8个变量,提交的总次数是Max(A,B,C…)的数量。
(4)Cluster Bomb:适用于多变量,交叉提交(循环交叉),类似于A:B:C…,A:C:B…,B:A:C…,最多8个变量,提交的总次数为A*B*C*…,这个数量是相当惊人的。

这 个模块下集成了很多自动的字典类型,如数字序列、常用密码、常用姓名、几个字的英文组合等等,同时可以增加一些规则,如前辍、后辍、替换、截取、反转、自 定义等等,在提交测试时还可以对其进行编码,并对URL编码中如 ./\=<>?+&*;:(还可另行添加)这样的字符进行过滤。
(1)Preset list(预设序列):最简单的变量(载入)源,直接在显示框配置。
(2)Runtime file(运行文件):这个配置在载入时运行一个外部文本文件,并按行读取不包含回车符的字符,在加载数量很多的变量值时这种方法很有用,可以避免预设序列占用过多内存。
(3)Custom iterator(定制迭代):按照预先设定的模板产生一定排列格式的置换字符或其他项目。比如,一个利用形如AB/12的个人身份标识来测试的工资发放程序,你需遍历所有可能的人员编号以获得所有个人的细节。
(4)Character substitution(字符替换):按预先制定的规则,用一定的字符替换已有序列指定位置的字符以产生新的序列。此类型常用于密码猜解,如对字典文字部分字符产生常用的变化。
(5)Case substitution(大小写替换):对已有序列指定位置的字符进行大小写字母转换以产生新的序列。此类型常用于密码猜解,如对字典文字指定位置的字符进行大小写转换。
(6)Recursive grep(递归|循环):用预先设定的规则,运用从服务器前一次返回的信息作为下一次测试时的输入。
(7)Illegal unicode(非标准字符编码):从预先设定的序列中对指定字符进行非标准字符编码替换,用于遍历所有目标路径,在检测注入时比较有用。
(8)Character blocks(字符串|块):生成指定长度的字符串,在用于检测缓冲器溢出和测试软件运行中在本地(不受托管)的文本漏洞中非常有用。
(9)Numbers(数字):可在一定范围内随机或按指定的格式生成数字字典。
(10)Dates(日期):在指定的区间内生成指定格式(不同间隔)的日期,可用YYYY-MM-DD格式生成如1999.09.01,2010-12-01等形式。用于暴力破解。
(11)Brute forcer(暴力破解):按指定长度用不同的字符生成所有可能字符组合的序列。
(12)Null payloads(0长度字节):零长度的字符串,用它可生成一定数量的空载入,使运行无限期地持续。
(13)Char frobber(字符操作):对现有序列中指定的字符进行诸如ASCII码转换,在测试复杂session返回时比较有用。
(14)Bit flipper(前后翻转):对现有序列从第一条或指定字符进行前后翻转,对形如用CBC加密格式的解密比较用效,可用于脆弱性检测。
(15)Username generator(用户名生成器):利用人的名字作为输入,或使用各式各样的预设生成潜在的用户名。

重点设置options
(1)grep-match:作用于所有返回(responses)信息,类似返回信息的字符过滤器,一般是包含,regex则刚好相反(不包含);
(2)grep-extract:仅作用于返回的文字(text)信息,即不包含头部信息的字符,应用同上(1);
(3)grep-payloads:这个设置过滤字符时搜索的范围、是否区分大小写、是否包含头部信息、是否是原先未编码的变量位置等。
(4)redirects:302转向的设置,可以是从不转向、仅对站点、仅对设置的范围、一直转向4种,底下的process cookies in redircts是设置在转向时是否保留转向前的cookie。

实现Burpsuite和appscan等安全检测软件并开

如果用Burpsuite做代理扫描漏洞和手工查漏洞的话,appscan就用不了,下面总结了两种方法多个安全软件并开。
1.最笨拙的办法,在虚拟机配置Burpsuite,本机用appscan或者其他安全软件,一个代理的,一个不代理的。
2.默认Burpsuite可以配置多个代理,可以配置电脑端和手机端的做两个代理去扫描和渗透测试,appscan直接在本地跑就好了,不用做代理访问。这样就不会产生冲突了,可以同时用,再增加安全检测软件的话,夜市同理,要么不做代理,本地直接访问就好,要么用Burpsuite开多个代理。开多个代理的时候要用不同的浏览器,而且浏览器的内核必须要不同,这样就互不影响了。

Burpsuite手机端渗透测试配置

1.让Android手机和PC连入同一个网段的wifi,即在同一个无线局域网环境下。
2.查看PC的IP地址,cmd输入ipconfig命令,比如PC为192.168.1.111
3.打开Burpsuite,设置Proxy Listener(Proxy->Option->Proxy Listener),点击”Add”按钮,设置新的代理监听器,地址就填刚刚看到PC端的IP地址,在这里是192.168.1.111(根据实际情况有所不同),端口填8080或自定义的。
4.打开wifi设置,修改所连入wifi的网络设置,代理服务器设置为手动,接着输入“Proxy主机名称”和“代理服务器端口”,这两项就是在Burpsuite里新增加监听器的IP地址和端口,即192.168.1.111和8080。

burpsuite 常用功能整理

Target->sitemap 查看所有链接,找含有参数的链接
Proxy->intercept->forward(下一步)->drop(清空)->intercept is(是否截取数据包)->action(动作)
->raw(发送请求)->headers(头文件)->hex(16进制)
Proxy->History->Filter->show only parameterized requests (设置只返回有参数的链接和站点)

Spider 爬行
Scanner 漏洞扫描检测
Repeater 手工验证HTTP请求
Decoder 编码转换
Comparer 数据对比
Alerts 报警提示
Intruder 暴力破解
 
抓包大神工具:burpsuite和fiddler。