CTF 记录
一些记录。在 pico 上大部分 web 题都做了,现在主要做课程的实验和 Hack The Box。HTB 上的难度都挺高,UI 也很现代化,比某些 CTF 网站好看不知道多少倍。
清华大学校园网无法使用 SSH 解决方案
清华大学校园网是公网 IP(SSH 到一个服务器之后在服务器上 netstat -tnp 可以验证),这点挺好的,但是只能 SSH 出去,不能从外面 SSH 进来。使用 tcpdump 或 wireshark 可以发现,根本没有收到 SSH 的请求,但是 ping 却能收到,合理怀疑被防火墙挡住了。
解决方案:换端口。默认端口是 22,换个端口就行了。类似于文件名后缀和文件格式问题,很多地方默认文件名后缀就是格式,但是处理的时候又是另一套,例如上次 telegram 的漏洞。
太草了,换端口就可以 ssh 了。咱就是说防火墙有啥用
I feel like a legend now
SSRF
HTB: ProxyAsAService
这题可以使用 proxy 上 reddit。我们要访问 /debug/environment 获取 flag,但是如果从外部访问,会没有权限。所以我们要从内部访问,也就是 SSRF。
内部访问正常情况下只能访问 reddit.com,那么一种想法是我们去看 reddit API,看看能不能 redirect 到本地。但是找了很久也没发现,最后 google 也搜不出啥,只能看题解。
漏洞在于获取 URL 的时候直接拼接起来。这时如果 google URL manipulation 可以发现 URL parse 会对特殊字符处理,但是因为我问的是 GPT-4,这家伙太蠢了,没告诉我。具体来说:
Bypass using tricks combination
http://1.1.1.1 &@2.2.2.2# @3.3.3.3/
urllib2 : 1.1.1.1
requests + browsers : 2.2.2.2
urllib : 3.3.3.3
这题是 requests,我们输入 @localhost
用 http://reddit.com@localhost
就可以 SSRF。但是代码里面还会检查初始路径和最终路径(最终路径可能 redirect 了)是否包含本地的一些关键字,包括
localhost
127.
192.168.
172.
然后我们 google localhost bypass 可以发现 localhost 有很多变种,包括十进制、八进制、十六进制、0.0.0.0、0。输入 127.0.0.1 的十进制或输入 0.0.0.0 等都可以绕过。
总结:应该善于利用 google,有时候 GPT-4 有一定作用,但是 CTF 方面用处真不如 google。
HTB: PDFy
输入网址将网址转化为 pdf 返回过来。没有给出后端源码。
根据观察 pdf 头部,可以发现使用的是 wkhtmltopdf 0.12.5。输入一个不是 html 的网页可以返回一个错误,发现 server 是 python,转 pdf 用的是 wkhtmltopdf 的命令行,也可以看到参数。参数是默认参数。
google 可以找到几个东西,一个是 XML,一个是 iframe,还有一个一开始没看懂。然后试了前两个都不行。github 上 XML 那个测试了只有用本地文件才可以复现,改成 http 开头的 localhost 就不行。iframe 那个 src 直接写本地 file:// 的也不行,没记错的话这两个都是要用本地文件,加上 http 就不行。一种可能是我版本是 0.12.6,下载不了 0.12.5,但是交上去也不行。
最后还有一个用 php 的。漏洞原理是 iframe 只检测源路径,但是源路径可以跳转,没有检测跳转的路径。写一个 php 跳转到 file:// 的脚本,放到公网 IP,再改一个 github 主页(或者有公网 IP 就用那个),在 html 里面加一个 iframe 链接到 php 跳转脚本,这样就可以读取 file:// 了。
虽然对 XML HTML iframe 这些不熟,但还是用 google 解决了