最近在用BurpSuite做一次网络安全测试爆破
做的是微信投票,让目标用户投到第一名,遇到的是两个问题
1.电脑端的限制
2.个人投票的限制
针对第一个问题,使用BurpSuite抓取投票的数据包后,修改User-Agent为微信的包头信息。此案例中浏览器是通过User-Agent来判断是否为微信端的,所以只要修改此处的值就可以绕过这种验证。
主要是第二个问题,个人投票的限制,此处的个人投票是按照IP地址来区分的,而其IP地址的判断机制并不完善。可以通过伪造X-Forwarded-For这个属性来绕过ip地址的验证。包数据中的X-Forwarded-For属性是用于在网络层判断请求的IP地址,这样的判断机制可以修改包信息达到欺骗的效果。
来说说操作过程中Burp Suite的一些使用
这是把请求send to Repeater(中继器),作为一个中断继而手动发起请求,在此处尝试修改User-Agent和X-Forwarded-For信息,手动send请求,一开始搞了很多次都修改完后模拟send失败。但奇怪的是请求状态码为200,只是errorcode中的信息为-1,投票数也不变。
直接说结论,这里有两个坑
1.X-Forwarded-For,这个属性,全部的第一个字母要大写,有些人用的是X-Forwarded-for,不行
2.另一个就是Referer:xxxx 这个属性和X-Forwarded-For中间不能空一行,折腾了一晚上,不知道哪里不行,今天把空行删了就行
做个猜测,可能是这个靶场环境中规定死的读取浏览器数据格式就是这样。另一种可能就是现实的环境就是这样读取的数据,毕竟是在原先基础上加了个属性,虽说本人之前是全栈开发,但对于http数据包中各个属性的应用规范也基本不熟,就像是常听到很多没用过的前端标签一样,学习路上,任重而道远。
那做完Repeater之后,这只是一次,之后就可以用intruder(入侵)实现爆破了