靶机开启后正常配置,fscan 先扫一下,发现 80/22 端口开放
访问 80 端口,是一个介绍性的主页
可以发现有效的链接只有一个 LaTeX,直接访问不到,需要配置 /etc/hosts
,把域名和 IP 都加进去
配置完后再次访问是个表达式生成器,按照给定的规则输进框里就会返回一张表达式图片
LaTeX 之前接触的不多,记得之前打 CTF 的时候遇到过一次,从网上找到了一些相关漏洞的文章:
尝试 \input{/etc/passwd}
读取,但是发现被拦截了,应该是关键字检测
正好文章里有其他方法,可以读取指定文件的一行
newread\file
\openin\file=/etc/passwd
\read\file to\line
\text{\line}
\closein\file
但是只读一行显然是不够的,需要能一次性读完,之前比赛的 payload 在这里也用不上
因为涉及到文件读取,又搜了下读取相关的文章,注意到有个读取代码文件的示例操作 \lstinputlisting[firstline=200, lastline=210]{../src/source.c}
,而且 \lstinputlisting{}
不会触发拦截
同时,考虑到当前有可能处在数学模式下,也就是 $eqn
的值可能被 "$" 包裹起来了,所以在构造时尝试闭合两端的 "$" 即 "$\lstinputlisting{/etc/passwd}$"
再读下源码 \lstinputlisting{../equation.php}
,可以看到 \begin{}
和 \end{}
都没了,所以没办法写🐎;\write
和 \immediate
以及 \def
也没了,没办法执行命令
接下来只能继续在文件读取上找突破点,但是读什么文件是个问题,已经知道开放了 22 端口,如果能知道一个用户的登录凭据并且连接上去,那对于后续的渗透更有利
/etc/shadow
是读不了的,需要 root 权限;再回到刚刚读到的 /etc/passwd
,可以发现存在用户 vdaisley
,同时用 ffuf 扫子域名的时候,发现 dev.topology.htb
是 401 状态,需要用户名密码登录
那么对于 Apache 而言,做 401 认证的时候存在一个文件 .htapasswd
,但是放在哪里不知道,最后看了下别的师傅写的 wp 确定位置在 /var/www/dev
下
得到 Hash 值后,用 john 破解掉,得到 vdaisley:calculus20
,尝试 SSH 登录 ssh vdaisley@topology.htb
想办法提权,已经有人传了 pyps64 和 linpeas.sh,直接用就行了;先是 ./linpeas.sh > 123.txt
再 ./pspy64s > 124.txt
,因为靶机是公用的,所以看着有点乱,但不难发现大家都在执行定时任务,而且和 gnuplot
有关
恰好 /opt/gnuplot
可写,cd 过去,正好也可以看到权限
所以思路其实就是写入一个 .plt 文件然后利用定时任务执行命令提权; system "chmod u+s /bin/bash"
,最后直接 /bin/bash -p
即可