靶机介绍
difficult:medium
keywords:curl、bash、code review
download:https://www.vulnhub.com/entry/momentum-2,702/
信息探测
主机发现 netdiscover -i eth0 -r 192.168.187.0/24
端口扫描,开放了22和80端口
目录扫描
gobuster dir -u http://192.168.187.171/ -x html,php,bak,txt --wordlist /usr/share/wordlist/dirbuster/directory-list-2.3-medium.txt
获取webshell
访问主页,除了三张图片之外,没有发现什么其他的信息了
访问一下dashboard.html
页面,是一个上传页,会将文件传到目录/owls
下
在上传文件时,发现不能上传php
文件
可以上传txt
文件
暂时利用不了这个文件上传功能了,查看一下ajax.php
页面,页面是空白的,啥也没有
不知道咋办了,看到靶机作者给的提示是 code review
,想着可能是代码审计相关的,就找找有没有代码的备份文件啥的,发现了备份文件ajax.php.bak
,查看一下内容
代码的内容是:当cookie存在,且键名为admin时,是可以上传pdf、php、txt
文件的;不过admin需要一个值,代码中已经给出了值,但是在这个值的最后还缺少一位大写的字符;此外,还要使用post
方式提交一个参数secure
;最后上传成功时会返回一个1
使用crunch
生成最后一位大写的字符crunch 1 1 -t , -o pass.txt
使用burpsuite
的Intruder
模块
加载生成的大写字符文件
添加一个POST
数据
当最后一个字符是R
时,返回的结果是1,因此完整的值是&G6u@B6uDXMq&MsR
最后成功上传了php文件
需要注意的是php文件中的IP和端口是需要修改的
监听端口,执行php文件,就可以得到一个连接了
使用 SHELL=bash script -q /dev/null
可以得到一个pty shell
;此外,因为靶机安装了python3,所以也可以使用python3 -c 'import pty;pty.spawn("/bin/bash")'
在目录/home/athena下找到第一个flag
提权
目录下还有一个密码文件
百度翻译一下Asterisk
,意思是星号,也就是*
,猜测密码的最后一位是任意的字符
这里使用crunch
生成密码
curnch 16 16 -t myvulnerableapp, >> pass.txt
curnch 16 16 -t myvulnerableapp@ >> pass.txt
curnch 16 16 -t myvulnerableapp% >> pass.txt
curnch 16 16 -t myvulnerableapp^ >> pass.txt
使用hydra
进行爆破,在看到密码的那一刻,感觉搞了个寂寞,在想是不是想的太多了,上面的Asterisk
就是字符*
的意思,而不是什么任意字符
ssh登陆,sudo -l
显示自己的当前的权限,发现可以以root
身份无密码使用cookie-gen.py
文件
查看文件的内容,脚本的意思是,在运行脚本时会要求输入一个seed
,这个seed
会echo
到log.txt
文件中,在echo
时会执行bash命令
所以在输入seed
,直接输入一个反弹的shell
监听端口就会得到一个root
权限,就可以得到第二个flag
总结
- 目录扫描
- 代码审计
- 文件上传
- 权限提升