Hgame 2024 week 4
by:Infernity
Reverse and Escalation.
一个find提权闹麻了
这道题是ActiveMQ Jolokia 后台代码执行漏洞
https://blog.csdn.net/huangyongkang666/article/details/134814554
去github上下载一个poc
然后打入命令
1 |
|
等待处理完毕后进入/admin/shell.jsp?cmd=
然后就可以执行命令了,查看flag发现没权限,用suid提权试试
1 |
|
这里用第三条才行,其他两条不行。
执行发现find有root权限,那直接用find执行命令。.
1 |
|
hgame{961c3bf5c7a186ed8e39174ccf248b1aee228479}
Reverse and Escalation II.
我得坐起来跟他打.gif 感谢M1sery
承接上一道题,这道题的find命令没法正常使用,所以不能用find执行命令的方式读出flag。在得到/admin/shell.jsp?cmd=后,发现使用find命令会让我们回答一个计算题,但是时间只在瞬息之间,手打不可能,必须用脚本。
这里第一步需要先反弹shell,才好操作。
https://www.cnblogs.com/BOHB-yunying/p/15523680.html
普通的反弹shell语句都不可以,这篇文章提到了java中利用Runtime.getRuntime().exec来反弹shell,这里前面语句可能就是这个,所以尝试把这个语句传参打入:
1 |
|
测试后发现不行,那就把这段语句保存为一个文件,例如shell
然后把这个shell文件上传到自己的服务器(位置是/var/www/html/),再通过题目服务器自带的wget命令下载到题目服务器的网站根目录上,
1 |
|
这样还是不能执行shell文件,因为你ls -al发现shell的权限不够,那我们就需要给它升级权限,利用命令
1 |
|
这里就得到了一个可执行的shell,然后我们回到/admin/shell.jsp页面,在服务器上开启监听,执行shell文件
1 |
|
到这里反弹shell成功。
最开始我写了个bash脚本回答它给的问题,但是每次都是错误的,那可能find的内部逻辑不正确,我们把/user/bin/find这个程序下载到本地,拖到ida里逆出来拿到它的内部代码。
1 |
|
审计代码才发现,这里就是在我们执行find的时候,要回答随机数组成的39个问题,然后就会以root的权限执行system(“ls”);
而这里是以时间为种子的随机数,是伪随机数,我们可以自己写个脚本,把时间提前一点,得到的序列把39个答案卡好时间传给find就可以了。
1 |
|
这里是提前了10s,会生成39个答案
我们就把这一段,直接复制到我们反弹shell的终端里,卡好10s时间,多打几次,就能成功。
1 |
|
但是刚刚说了,这里39次成功后,系统执行的是ls命令,我们如何修改这个部分拿到flag呢。
这里就需要我们写一个名为ls的可执行文件,把它放到/tmp目录里,然后把/tmp目录,放在$PATH环境变量的最前面,这样系统执行system(“ls”)的时候,就会在环境变量的第一个也就是/tmp目录里去找我们写的ls可执行程序,来读取flag。
1 |
|
这个是ls源码,我们把它静态编译成可执行程序
1 |
|
这样就会在我们的linux上创建一个名为ls的可执行程序。我们把它上传到我们的服务器上,在利用wget下载到题目服务器的/tmp目录里。
1 |
|
然后把/tmp目录,放在$PATH环境变量的最前面
1 |
|
一切准备就绪,执行我们的find,拿到密码序列,然后卡时间打入find。
时间不好卡,算好提前量多发几次。
成功后拿到flag。
hgame{f288b31a0ca16ed51e49021c7be9ee7b614162b2}
Whose Home?
打开是qb的web ui 登录页面,这种一般是有默认账号和密码的,我们去网上搜搜。账户admin,密码adminadmin
登录进来后,我们了解到版本是4.5.5我们去网上搜搜关于这个版本的漏洞。
https://github.com/qbittorrent/qBittorrent/issues/18731
qb的后台可以rce。
在额外设置这里可以添加我们的rce代码。
尝试直接反弹shell不行后,我们就直接拿文章中的payload。
先把反弹shell的命令放到我们的服务器上,我保存为1.sh
1 |
|
然后把payload输入进去。
1 |
|
在我们的服务器上开启监听,然后随便添加个种子链接下载,比如这个magnet:?xt=urn:btih:99986864CEF6A163775C8E9DBB662A93B05B9948
拿到了shell。
但是我们发现flag没有权限去读
看看有什么suid提权。从中可以看到iconv存在suid权限
iconv如果存在suid权限,可以导致读取任意文件。
1 |
|
hgame{a81ebbed09bcfa55d3b87079c5731d43a80cfed9}