今天我们来看看我今年早些时候进行的一项外部渗透测试。由于保密协议,我们将使用常用域名redacted.com
因此,为了给测试提供一些背景信息,它完全是黑盒子,客户提供的信息为零。我们唯一知道的是我们被允许测试 redacted.com 和子域 my.redacted.com
我将跳过整个被动信息收集过程,直奔主题。
我开始积极扫描和浏览网站以发现潜在的切入点。除了 80 和 443 之外,没有开放的端口。
因此,我开始使用 gobuster 进行目录暴力破解,然后我立即看到一个管理面板返回 403 — Forbidden 响应。
看到这一点,我们导航到该网站以验证它确实是一个 403 并使用 Burp Suite 捕获请求以进行潜在的绕过。
在我看来,我认为绕过它是不可能的,因为内部 IP 地址有一个 ACL。
尽管如此,我尝试了以下方法来绕过 403:
HTTP 方法Fuzz(GET、POST、TRACE、HEAD 等)
HTTP 标头Fuzz(X-Originating-IP:127.0.0.1,X-Forwarded-For:127.0.0.1 等)
路径Fuzz/强制浏览(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 禁止
https://redacted.com/Admin -> 200 OK
https://redacted.com/aDmin -> 200 OK
将任何字母转换为大写字母将绕过限制。
瞧!我们获得管理面板的登录页面。
我们对这个很幸运,尽管如此,我们现在可以尝试不同的攻击(密码喷洒、暴力破解等)。我们正在测试的公司不小,我们从泄露的数据库(泄漏检查、泄漏窥视等)中收集了大量员工凭证。但是,这是管理面板,因此我们进行常规测试:
查看是否有用户名枚举
查看是否有登录限制
检查可能会因请求数量而阻止我们的 WAF
简而言之,两者都没有。我们无法枚举用户名,但是没有任何类型的速率限制。
考虑到上述情况,我们加载 rockyou.txt 并开始暴力破解“admin”帐户的密码。经过几千次尝试,我们看到以下内容:
我们找到了管理员帐户的有效凭据。导航到网站的管理面板,进行身份验证,我们就进去了!
既然我们已经进入,我们需要做或可以做的事情就不多了(未经客户同意)。具有管理权限的管理面板允许您更改整个配置 - 控制用户及其属性,控制网站页面,真正控制一切。因此,我决定编写一个 Python 脚本来抓取整个用户数据库(大约 39,300 — 三万九千零三百),其中包含他们的姓名、电子邮件、电话和地址。收集所有这些细节的想法是,然后将它们呈现给客户(受害者)——以显示被利用漏洞的严重性。此外,由于这些安全漏洞的严重性,我们在同一天针对这些特定问题编写了一份报告,并在 24 小时内修复了这些问题。
最终,在整个利用过程中没有任何困难,但是不寻常的 403 绕过确实是我第一次看到,我认为你们中的一些人可能会将其武器化或将其添加到您未来的 403 绕过清单中。
原文地址:https://medium.com/@mares.viktor/unusual-403-bypass-to-a-full-website-takeover-external-pentest-4970c788c6bf
文章来源:hack学习君
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END
多一个点在看多一条小鱼干