今天我们将看一下我在今年早些时候进行的一项外部渗透测试之一。
由于有保密协议,我们将使用 REDACTED.COM 来代替目标域名。
这是一个完全的黑盒测试,客户没有提供任何信息,我们唯一知道的是,我们被允许测试 redacted.com 和子域名 my.redacted.com
我将跳过整个被动信息收集过程,直奔主题。
我开始积极扫描和浏览网站以发现潜在的切入点, 除了 80 和 443 端口外,没有其他端口是开放的。 因此,我开始使用 gobuster 进行目录爆破,很快就看到一个返回 403 - 禁止访问响应的管理员面板。
看到这个,我们会进入网站确认是否确实返回了403 错误码,然后使用 Burp Suite 捕获请求,以便进行可能的绕过操作。
在我看来,我认为很难绕过这个限制,因为存在针对内部 IP 地址的访问控制列表(ACL)。尽管如此,我还是尝试了以下方法来绕过 403:
-
HTTP方法模糊测试(GET,POST,TRACE,HEAD等)
-
HTTP头部模糊测试(X-Originating-IP:127.0.0.1, X-Forwarded-For:127.0.0.1等)
-
路径模糊测试/强制浏览(https://redacted.com/admin/index.html, https://redacted.com/admin/./index.html等)
-
协议版本更改 (从HTTP 1.2降级到HTTP 1.1等)
-
字符串终止符 (%00, 0x00, //, ;, %, !, ?, []等) - 将其添加到路径的末尾和路径内部
长话短说,这些方法都没有奏效。所以,我记得有时安全控制是建立在请求中组件的字面拼写和大小写之上的。因此,我尝试了 "大小写转换" 技术——这可能听起来很愚蠢,但它实际上奏效了!
测试结果:
-
https://redacted.com/admin -> 403 Forbidden
-
https://redacted.com/Admin -> 200 OK
-
https://redacted.com/aDmin -> 200 OK
将任何一个字母大写,就能绕过限制。太好了!我们得到了管理面板的登录页面。
我们这一次比较幸运,尽管如此,我们现在可以尝试不同的攻击(如密码喷洒、暴力破解等)。我们测试的公司不小,并且我们从泄漏的数据库(如leak check、leak peek等)中收集了相当多的员工凭据。然而,这是管理面板,因此我们继续进行常规测试:
-
查看是否存在用户名枚举
-
查看是否存在任何登录限制
-
检查是否有可能的WAF,由于请求数量过多而会阻止我们的请求
简单地说,这两个都没有。我们无法枚举用户名,但也没有任何形式的速率限制。鉴于这一点,我们加载 rockyou.txt 并开始暴力破解 "admin" 账户的密码。几千次尝试后,我们看到以下结果:
我们找到了 admin 账户的有效凭证。导航到网站的管理员面板,进行身份验证,然后就可以登录了!
既然我们登录成功了,我们就没有太多事情可以做或可以做的(没有客户的同意)。具有管理权限的管理员面板允许您更改整个配置-控制用户及其属性,控制网站页面,真正控制一切。因此,我决定编写一个 Python 脚本,以抓取包含他们的姓名、电子邮件、电话和地址的所有用户的完整数据库(约39,300个)。收集所有这些详细信息的想法是将它们呈现给客户(受害者)-以展示被攻击漏洞的严重性。此外,由于这些安全漏洞的严重程度,我们在同一天写了一个报告,针对这些特定问题,这些问题在24小时内得到了修复。
总的来说,在整个利用过程中并没有什么太难的地方,但是不寻常的 403 绕过是我第一次见到的东西,我认为你们中的一些人可能会利用它或将其添加到未来的 403 绕过清单中。
原文始发于微信公众号(刨洞技术交流):不寻常的403绕过,可能导致整个网站被接管
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论