13.2 接口调用遍历测试
13.2.1 测试原理和方法
Web 接口一般将常见的一些功能需求进行封装,通过传入不同的参数来获取数据或
者执行相应的功能,其中一个最常见的场景就是通过接口传入 id 参数,返回对应 id 的一些
信息。在安全测试中,我们可以使用 Burp
Suite 作为 HTTP 代理,记录所有请求和响应信
息,通过 Burp Suite 以登录后的状态对整站进行爬取,再使用过滤功能找到传入 id 参数的
HTTP 请求,然后通过 Intruder 对 id 参数进行遍历,看是否返回不同的响应信息。如果不同
的 id 值对应不同用户的信息,则说明存在漏洞。
13.2.2 测试过程
如图 13-6 所示,攻击者在测试前,使用 Brup Suite 的爬虫功能对网站进行爬取,然后
筛选出包含用户标识参数的请求(如 id、uid),对筛选后的每一个请求进行分析,判断
其是否包含敏感信息。如果包含敏感信息,则通过 Brup Suite 的 Intruder 设置用户标识参数
为变量来进行遍历,如果返回他人信息,则漏洞存在。
图 13-5 接口调用遍历测试流程图
步骤一:如图 13-6 所示,使用 Burp Suite 的爬虫功能,从重点关注的目录(一般为网
站根目录)开始爬取,在 HTTP history 选项卡中选中要开始爬取的项,单击鼠标右键,
选择“Spider from here”,爬取登录后的网站链接。
图 13-6 使用 Burp Suite 爬取网站根目录
如图 13-7 所示,爬取的结果会在 Target→Site map 中显示,在爬取完毕后,再使用 Burp Suite 的过滤功能筛选出带有 uid 参数的链接,没有包含 uid 字符串的 HTTP 请求会被隐藏起
来,不会在 HTTP history 中显示。
图 13-7 过滤出带有 uid 的请求
如图 13-8 所示,在请求中找到 uid 参数出现的位置。
图 13-8 定位 uid 参数的出现位置
步骤二:如图 13-9 所示,查看对应的 HTTP 请求的响应包中是否带有想要的信息。由
HTTP
请求的参数我们可以猜测到这个请求的功能,如
method
参数值为
video.getUserVideoRecordList,作用是获取对应 uid 的视频播放的历史记录,由响应内容
可以确定。
图 13-9 查看对应的请求和响应
HTTP 响应中包含一些敏感信息,如观看视频时的 ip 地址、视频 id、视频的标题等。
如图 13-9 所示,第一个 title 的值为 All Polished&#039;";<;\/img>;,在浏览
器的 console 终端通过 document.write 函数解码输出后,得到 All Polished'"</img,如图 13-10
所示。
如图 13-11 所示,将 title 的值和视频历史播放记录进行比较,可以发现完全一致。
图 13-10 解码响应中的 title 值
图 13-11 与历史播放记录进行比较
步骤三:如图 13-12 所示,将 HTTP 请求发送到 Intruder,设置后四位数字为变量,进
行遍历测试。
图 13-12 发送到 Intruder
如图 13-13 所示,我们设置后四位数字为变量。
图 13-13 设置变量
如图 13-14 所示,设置 Payload 为 0000~9999 的数字。
图 13-14 设置 payload
设置完 Payload 后,单击“Start attack”按钮即可开始遍历测试。
步骤四:分析 Intruder 的测试结果,不存在对应的 uid 时,服务器会返回 code 为-201
的响应;存在时,返回的响应会包含"ip"(带双引号)这个字符串,以此来过滤出成功的
请求,如图 13-15 所示。
图 13-15 对 Interder 结果进行过滤
如图 13-16 所示,可以看到过滤后的请求,均是有播放记录的请求,确认存在接口调
用遍历测试漏洞。
图 13-16 确认漏洞
13.2.3 修复建议
在 Session 中存储当前用户的凭证或者 id,只有传入凭证或者 id 参数值与 Session 中的一
致才返回数据内容。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论