投票系统程序设计缺陷分析
背景介绍
年终了,公司组织了各单位"文明窗口"评选网上投票通知。 安全工程师"墨者"负责对投票系统进行安全测试,看是否存在安全漏洞会影响投票的公平性。
实训目标
1、了解浏览器插件的使用;
2、了解开发程序员对IP地址获取方式;
3、了解网络协议软件的使用,如burpsuite等;
解题方向
根据页面提示,进行投票页面测试。
学习资料:bilibili小迪安全。
学习资料:墨者学院。
题目要求:
多次投票时,会提示错误:
所以根据实训目标,我们分析到同一IP地址,一天只能投票一次。所以这题解题思路有两个,一是使用代理,更换ip;二是采用开发程序员的ip的验证,进行ip验证绕过。
php验证ip的方法有多种。其中我们在对php验证ip的X-Forwarded-For方法进行伪装。 伪装方法如下:
我们抓取点击投票按钮时,浏览器发送的请求数据包:
单击右键,把抓到的数据包发送到Repeater
然后按照序号依次点击1和2处,即可成功打开Response数据包窗口
在请求数据包中加入:
x-Forwarded-For:192.168.247.1
将该ip地址中第三部分改为动态的,即:192.168.xxx.1,用以欺骗投票系统对本机的ip检测。
步骤:
选中247,右键单击,点击Send to intruder(发送给入侵者)
将Attack type(攻击类型)选择为Cluster bomb(集束炸弹)
打开payloads(有效载荷),payloads type(有效载荷类型)选择Numbers(号码)
设置第一个变量从1到255逐步加一增长。
再设置第二个变量:
将第二个参数也设置为Numbers类型,从1到255变化,中间间隔也设置为1:
从程序上的提示,我们可以得知这两种ip的变化方式可以产生65025个ip地址:
这样,就可以不断地发送ip地址不同的数据,进行投票。
点击开始:
随便点击一个请求,查看其响应数据,错位提示值为0,即没有错误
停止抓取
刷新网页,提示成功,成功的获取到了密钥key,闯关成功:mozhec0b8198234f1085efa9c736f3ec
总结:
通过今天的学习,我们了解到数据包各种参数的对应含义,有验证ip的,有验证客户端的,有验证浏览器的,有验证数据包的完整性的等等。如果渗透测试不正常,或者被过滤,很有可能就是数据包上的原因。