burp靶场-User ID controlled by request parameter with password disclosure

Lab: 由具有密码泄露功能的请求参数控制的用户 ID

靶场链接:https://portswigger.net/web-security/access-control/lab-user-id-controlled-by-request-parameter-with-password-disclosure

实验描述:
This lab has user account page that contains the current user’s existing password, prefilled in a masked input.
此实验室具有用户帐户页面,其中包含当前用户的现有密码,该密码预填充在掩码输入中。

To solve the lab, retrieve the administrator’s password, then use it to delete the user carlos.
要解决该实验,请检索管理员的密码,然后使用该密码删除用户 carlos

You can log in to your own account using the following credentials: wiener:peter
您可以使用以下凭证登录自己的帐户:wiener:peter

实验办法:

  1. Log in using the supplied credentials and access the user account page.
    使用提供的凭证登录并访问用户账户页面。
  2. C
在Web应用程序中,如果用户角色(如管理员、普通用户等)的控制依赖于客户端提供的请求参数(例如URL参数、表单字段或HTTP头),则可能存在严重的安全漏洞。这种设计违反了安全最佳实践,因为客户端提供的数据不可信,攻击者可以轻易篡改这些参数,从而提升权限或访问未授权的功能,这种漏洞通常被称为 **"Broken Access Control"** 或 **"User Role Controlled by Request Parameter"** 漏洞。 ### 风险分析 当用户角色由请求参数控制时,例如通过如下方式: ```http GET /api/data?role=admin HTTP/1.1 ``` 服务器端若直接信任该 `role` 参数而未进行实际的身份验证和授权检查,则攻击者可以通过修改参数值(如 `role=superuser`)来绕过访问控制机制。这种做法缺乏对用户身份的验证和会话状态的管理,极易导致横向或纵向越权访问。 ### 安全建议 1. **基于会话的身份验证** 用户角色应由服务器端根据认证后的会话信息(如Session或JWT)确定,而不是依赖于客户端传递的参数[^4]。 2. **最小权限原则** 确保每个用户仅能访问其角色所允许的资源。应使用基于角色的访问控制(RBAC)机制,并在每次请求时进行权限校验[^4]。 3. **参数不可信原则** 所有来自客户端的输入都应被视为不可信。对任何涉及权限、角色或资源ID的参数都应进行严格的校验和白名单控制。 4. **使用安全框架** 利用成熟的安全框架(如Spring Security、Shiro、OWASP ESAPI等)来管理身份验证和授权流程,避免自行实现带来的安全隐患。 5. **日志与监控** 对异常访问行为进行日志记录,并设置监控机制,及时发现潜在的越权尝试。 ### 示例:不安全的实现 ```python @app.route('/get_data') def get_data(): role = request.args.get('role') # 危险:直接使用用户输入的角色 if role == 'admin': return admin_data() else: return user_data() ``` ### 改进后的安全实现 ```python @app.route('/get_data') def get_data(): user = get_authenticated_user() # 从会话中获取已认证用户 if user.role == 'admin': return admin_data() else: return user_data() ``` ### 安全测试建议 - 尝试修改请求参数中的角色值,验证是否可以访问未授权的内容。 - 使用Burp Suite等工具进行自动化测试。 - 对关键接口进行权限边界测试,确保低权限用户无法通过参数篡改获得高权限访问。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值