[阿一网络安全]在查询字符串中利用服务器端参数污染

描述

要解决这个实验室,首先以管理员(administrator)身份登录,然后删除 carlos。

所需知识

要解决这个实验室,你需要掌握以下知识:

  1. 如何使用 URL 查询语法尝试修改服务器端请求。
  2. 如何利用错误消息来理解服务器端 API 如何处理用户输入。

这些内容在我们的 API 测试学院主题中有涵盖。

进入实验室

解决方案

1、 在 Burp 的浏览器中,触发管理员用户的密码重置操作。

2、 在 Proxy > HTTP history 中,注意 POST /forgot-password 请求和相关的 /static/js/forgotPassword.js JavaScript 文件。

3、 右键单击 POST /forgot-password 请求,选择 Send to Repeater。

4、 在 Repeater 标签页中,重新发送请求以确认响应是一致的。

在 HTTP history 中

5、 将 username 参数的值从 administrator 更改为一个无效的用户名,例如 administratorx。发送请求。注意到这会导致一个“Invalid username”(无效用户名)错误消息。

6、 尝试在服务器端请求中使用 URL 编码的 & 字符来添加第二个参数值对。例如,添加 URL 编码的 &x=y:

username=administrator%26x=y

发送请求。注意到这会返回一个“Parameter is not supported”(参数不支持)错误消息。这表明内部 API 可能将 &x=y 解释为一个单独的参数,而不是 username 的一部分。

7、 尝试使用 URL 编码的 # 字符来截断服务器端的查询字符串:

username=administrator%23

发送请求。注意到这会返回一个“Field not specified”(未指定字段)错误消息。这表明服务器端的查询可能包含一个额外的名为 field 的参数,而这个参数已被 # 字符移除。

8、 在请求中添加一个带有无效值的 field 参数,并在添加的参数值对之后截断查询字符串。例如,添加 URL 编码的 &field=x#:

username=administrator%26field=x%23

发送请求。注意到这会返回一个“Invalid field”(无效的字段)错误消息。这表明服务器端应用程序可能识别了注入的 field 参数。

9、 对 field 参数的值进行暴力破解:

  1. 右键单击 POST /forgot-password 请求,选择 Send to Intruder。
  2. 在 Intruder 标签页中,将 field 参数的值设置为 payload 位置,格式如下:

username=administrator%26field=§x§%23

        3. 在 Intruder > Payloads 中,点击 Add from list。选择内置的 Server-side variable names 负载列表,然后开始攻击。

        4. 查看结果。注意到带有用户名和电子邮件负载的请求都返回了 200 响应。

10、 将 field 参数的值从 x# 更改为 email:

username=administrator%26field=email%23

发送请求。注意到这会返回原始的响应。这表明 email 是一个有效的字段类型。

11、 在 Proxy > HTTP history 中,查看 /static/js/forgotPassword.js JavaScript 文件。注意密码重置端点,它涉及 reset_token 参数:

/forgot-password?reset_token=${resetToken}

可知密码修改是通过 token 鉴权

接下来想办法获得 token

12、 在 Repeater 标签页中,将 field 参数的值从 email 更改为 reset_token:

username=administrator%26field=reset_token%23

发送请求。注意到这会返回一个密码重置令牌。记下这个令牌。

读取 token

成功读取 token

13、 在 Burp 的浏览器中,将密码重置端点地址输入到地址栏中,并将你的密码重置令牌作为 reset_token 参数的值添加。例如:

/forgot-password?reset_token=123456789
###获取token###
/forgot-password?reset_token=n4wdpwaulzr1jqef23e0zj65u4t60a6f
###拼接链接###

https://0a13002204ca32d1853f4546004700f9.web-security-academy.net/forgot-password?reset_token=n4wdpwaulzr1jqef23e0zj65u4t60a6f

14、 设置一个新密码。

15、 使用你的新密码作为管理员用户登录。

16、 进入管理面板,然后删除 carlos 以解决实验室。

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值