HOST头攻击
前几天一直准备别的事情,然后用了2/3天时间去挖了补天某厂的SRC,还是太菜了,最后提交了一个低危(还没出结果,还有点敏感信息泄露,感觉略鸡肋也没交),不过偶然发现之前提的一个公益SRC被收了(当时快半个月都没人处理)不过没money,等过几天有时间再看吧,还是得虚心学技术,慢慢的进步。
1. HOST头的作用
1.1 文字原理讲解
首先我们需要了解一个概念叫虚拟主机
,也就是一台服务器上存在多个网站。你会想这还不简单,每个站点分一个端口即可,但是我说的是一个端口。
既然如此,那么我们不管它是怎么实现的,我们要关注的是为什么如此,为什么我们访问这些网站均是正常的呢?这就是HOST头的作用了,当我们去访问一个url的时候,这个域名只会被DNS解析为IP,但是因为这些虚拟主机的IP是同一个,所以会看我们的HOST头,它的值是谁,那么服务器就去交给那个站去响应。(如下图)
![image-20220608134349633 image-20220608134349633](https://image.3001.net/images/20220620/1655719479_62b046376fa7471f185df.png!small)
1.2 实际演示
我这里用小皮面板
再来演示一下它的奇妙之处,首先我先创建两个站点,分别是pikachu和dvwa,配置如下图。
![image-20220608135012232 image-20220608135012232](https://image.3001.net/images/20220620/1655719479_62b04637acedf1dde4aad.png!small)
![image-20220608135031215 image-20220608135031215](https://image.3001.net/images/20220620/1655719479_62b04637df17706b48498.png!small)
可以看到,这时候我给它们不同的域名,而且端口均为本机的80,好,接下来我去访问。
![image-20220608135147488 image-20220608135147488](https://image.3001.net/images/20220620/1655719480_62b046389625b7b591cc9.png!small)
![image-20220608135153094 image-20220608135153094](https://image.3001.net/images/20220620/1655719481_62b046390042eb1f7d247.png!small)
两个站点没有任何问题,紧接着我重新访问dvwa并抓包
![image-20220608144116741 image-20220608144116741](https://image.3001.net/images/20220620/1655719481_62b0463959c3dd45ece31.png!small)
再来看一下页面
![image-20220608144151455 image-20220608144151455](https://image.3001.net/images/20220620/1655719481_62b04639c797ac38bb50c.png!small)
OK相信到这里就了解了,HOST头的作用了,接下来,围绕着Burp Suite官方实验室,演示下会发生的安全问题
2. 漏洞利用
2.1 基本密码重置中毒
要求如下:
![image-20220608145041353 image-20220608145041353](https://image.3001.net/images/20220620/1655719482_62b0463a0f9c46f9f9ea5.png!small)
我们需要登录到Carlos才可以完成,登录时点击忘记密码
![image-20220608145206659 image-20220608145206659](https://image.3001.net/images/20220620/1655719482_62b0463a490723c131dae.png!small)
可以看到是根据我们的账户名或邮箱地址,发一封重置密码的邮件给我们
![image-20220608145241705 image-20220608145241705](https://image.3001.net/images/20220620/1655719482_62b0463a8aaf3df8230c8.png!small)
我们先用自己的账户,也就是wiener来试试,ok,点击后去漏洞利用服务器试试
![image-20220608145617649 image-20220608145617649](https://image.3001.net/images/20220620/1655719482_62b0463aca737196f4343.png!small)
往下翻有个Email client,点进去查看刚刚的邮件内容
![image-20220608145609138 image-20220608145609138](https://image.3001.net/images/20220620/1655719483_62b0463b0589cf02b85f0.png!small)
看到有个修改密码连接,ok,我们打开它,并随便修改成123
![image-20220619163246817 image-20220619163246817](https://image.3001.net/images/20220620/1655719483_62b0463b3c8fe0dc45648.png!small)
![image-20220608145900506 image-20220608145900506](https://image.3001.net/images/20220620/1655719483_62b0463b9787a0ce6a506.png!small)
接下来我们去Burp看下刚刚的数据包,如下,可以看到里面存在一个temp-forgot-password-token
值,所以我们现在需要搞到它。
POST /forgot-password?temp-forgot-password-token=F7vqHnRQVDFVZwEfG8CjqPOx4gwgMGr2 HTTP/1.1Host: ac3d1fxxxxxx060.web-security-academy.netCookie: _lab=46%7cMasdCwCFAiRGPkiVdxxxNhS8mYDOMvkk3CWJakAhR0wUzpasdGqNbbKzMESDTwqnN4%2bmfnDv415Yp1OeYCQWOHaYTqDhOeWLYsbDczuZvkT8kfY2yqQxeqN9CdAsyGMC7FUxTGUuUMjnXEJlyJaZ1ArCyi5xbmznovOWg2psOzMjkzQnGNekasdzgthyY%3d; session=jcqZVUOp3gtGaRpFeBD7r577ERV38AkV7User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedContent-Length: 135Upgrade-Insecure-Requests: 1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: same-originSec-Fetch-User: ?1Te: trailersConnection: closecsrf=KmpFXtDQMQuzxEkE0t8LRYxfT698ibN1&temp-forgot-password-token=F7vqHnRQVDFVZwEfG8CjqPOx4gwgMGr2&new-password-1=123&new-password-2=123
接下来我的猜想就来了,既然我们知道漏洞肯定跟HOST头注入有关,那么我猜我们刚刚点击忘记密码,发包的时候肯定是抓不到这个token的,而是网站后端服务器发送到我们的邮箱,但是这个时候如果我们将HOST头改成我们自己利用服务器,那么流量会不会就会到我们这里,然后根据这个token值构造重置密码链接,ok,说干就干。
![image-20220619163138663 image-20220619163138663](https://image.3001.net/images/20220620/1655719483_62b0463bc52d8bea6cbba.png!small)
紧接着去我们漏洞利用服务器查一下token
![image-20220608151427869 image-20220608151427869](https://image.3001.net/images/20220620/1655719484_62b0463c4ff16c762da4c.png!small)
构造重置密码链接,直接将我们重置密码的包里面的csrf
(值在上上个图中)和temp-forgot-password-token
值改成对应的,然后成功了
![image-20220608152531500 image-20220608152531500](https://image.3001.net/images/20220620/1655719484_62b0463c92610bc219bad.png!small)
2.2 主机标头身份验证绕过
要求如下:
image-20220608161747546
既然要进入管理面板,那么首先我们应该找到路径,随手加一个admin,演示仅对本地用户可用
![image-20220619163056154 image-20220619163056154](https://image.3001.net/images/20220620/1655719485_62b0463d1f221ee7e72ba.png!small)
一般我们搭建靶场用的最多的就是localhost,同理这里将HOST头改为localhost
![image-20220608162732093 image-20220608162732093](https://image.3001.net/images/20220620/1655719485_62b0463d6c34200913dbb.png!small)
直接删除,同样还得抓包改HOST
![image-20220608162912147 image-20220608162912147](https://image.3001.net/images/20220620/1655719485_62b0463da1a084dfc0c4b.png!small)
2.3 通过模糊请求导致Web缓存中毒
要求如下:
![image-20220619163031177 image-20220619163031177](https://image.3001.net/images/20220620/1655719485_62b0463dd875da5e61a70.png!small)
利用过程:
这个我盲猜可能就就是web缓存投毒并且非缓存建是HOST,相信看到我之前那篇文章的兄弟一下就懂了,就是web缓存投毒,投到HOST键上
首先刷新一下观察历史包,发现加载了两个js
![image-20220619163858150 image-20220619163858150](https://image.3001.net/images/20220620/1655719486_62b0463e3d08138035fc7.png!small)
存在缓存机制
![image-20220619163938866 image-20220619163938866](https://image.3001.net/images/20220620/1655719486_62b0463e65cfcff52f8b5.png!small)
那我现在漏洞利用服务器构造一下js文件
image-20220619164331866
ok,改一下HOST,投毒吧
image-20220619165421749
改了发现不可以,那么也就不能在原来基础上修改,那就尝试在原来基础上增加,双写HOST
image-20220619165540252
可以看到加载我们利用服务器的js了,这个时候正常如何访问就会中毒了
![image-20220619173820386 image-20220619173820386](https://image.3001.net/images/20220620/1655719487_62b0463fa4f098271a2b9.png!small)
2.4 基于路由的SSRF
要求如下:
image-20220619173951042
利用过程:
首先这里提示了,必须使用Burp Collaborator
来进行测试,如果不知道它是什么,可以百度,我暂时没找到好文章,后续打算就其使用写个帖子,这里先简单理解成dnslog就好了,数据由Burp->靶机,靶机响应到Burp Collaborator
再到Burp,也就是说它的内网靶机不会出网,除非是Burp自带Burp Collaborator
地址,所以我们需要配置一下
点击Burp
->Burp Collaborator client
出现下图界面,点击Copy to clipboard
来获取一个随机地址
![image-20220619215636812 image-20220619215636812](https://image.3001.net/images/20220620/1655719488_62b046407126be2e7622b.png!small)
然后可以在Project options
里面查看一下,我们这里使用默认的Collaborator的server就好
![image-20220619221018445 image-20220619221018445](https://image.3001.net/images/20220620/1655719488_62b04640c737d9a4096a8.png!small)
尝试SSRF漏洞,将访问实验室主页的包的HOST头改成我们的Collaborator server
地址,然后发包,然后就可以看到Collaborator server
存在流量,然后就可以关掉Collaborator了
![image-20220619221233374 image-20220619221233374](https://image.3001.net/images/20220620/1655719489_62b04641133ec6ba322b9.png!small)
证明存在SSRF漏洞,可通过HOST值访问内部敏感系统,但是不知道IP,所以直接爆破,如下图设置
![image-20220619174730976 image-20220619174730976](https://image.3001.net/images/20220620/1655719489_62b046418b5548212293d.png!small)
别忘了关掉自动更新Header功能
![image-20220619221528007 image-20220619221528007](https://image.3001.net/images/20220620/1655719489_62b04641df69c863627ba.png!small)
Payload设置如下
![image-20220619174835235 image-20220619174835235](https://image.3001.net/images/20220620/1655719490_62b046424d190af8c5f77.png!small)
这里因为没特殊字符,所以paylaod Encoding勾不勾没关系,直接爆破,130被爆破成功
![image-20220619221621267 image-20220619221621267](https://image.3001.net/images/20220620/1655719490_62b04642a5a5e50311388.png!small)
然后我们访问主页并抓包将HOST改成192.168.0.130然后放出去,同样的删除用户的这个POST包也需要将HOST改为192.168.0.130
![image-20220619221949746 image-20220619221949746](https://image.3001.net/images/20220620/1655719490_62b04642e5005513047fa.png!small)
成功了
2.5 SSRF通过有缺陷的请求解析
要求:
![image-20220619222536993 image-20220619222536993](https://image.3001.net/images/20220620/1655719491_62b046434edd437c9ab41.png!small)
利用过程:
这题拿到手很懵圈,感觉跟上一个一样,于是按照上一个的做法将HOST先改成Collaborator Server
的地址,发现返回403,并且Collaborator Server
无解析
![image-20220619222925187 image-20220619222925187](https://image.3001.net/images/20220620/1655719491_62b04643ad891322e29b4.png!small)
既然如此,再看一下要求,基于路由的
这几个大字出现在眼前的时候,就应该意识到是路由地址的问题,于是尝试将GET / 改成绝对的
![image-20220619223244507 image-20220619223244507](https://image.3001.net/images/20220620/1655719492_62b046440258efd0ad6e3.png!small)
非常nice,然后就跟上边一样了,爆破,251
![image-20220619223436312 image-20220619223436312](https://image.3001.net/images/20220620/1655719492_62b0464476136210c569f.png!small)
删除用户,像下边这样改包(请求admin目录的和删除用户的都类似)
![image-20220619224113256 image-20220619224113256](https://image.3001.net/images/20220620/1655719492_62b04644cf76b1dbc38b4.png!small)
成功
![image-20220619224124325 image-20220619224124325](https://image.3001.net/images/20220620/1655719493_62b0464527a290db84f19.png!small)
本文作者:小惜, 转载请注明来自FreeBuf.COM
请登录后查看评论内容