1.端口扫描
nmap扫出了它的robots.txt,但是它里面的这些目录都不可访问。发现了一个疑似用户名oden,不知有没有用,先记录:
2.Web服务枚举
80端口主页,有一个输入邮箱的地方,测试做了特殊字符过滤,没测出什么。
目录扫描
用一般的字典没扫出其它东西,用 SecList的big字典扫描才扫出了敏感目录。以后有扫不出来的情况记得试一试这个。
gobuster dir -u http://10.0.2.103 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt
扫出目录:http://10.0.2.103/openemr/
利用OpenEMR SQL注入漏洞
该目录为OpenEMR v4.1.0的登录页,搜索该应用的exploit
searchsploit openemr 4.1
从搜索结果来看,该版本存在sql注入漏洞,按照exploit中的注入点试一下,确实存在漏洞。
而且根据错误提示来看,可以得到用户名和密码。
把/usr/share/exploitdb/exploits/php/webapps/49742.py文件拷贝到当前工作目录,编辑py文件修改ip地址。
执行exploit,得到账密信息
将结果复制进hash.txt,然后用Johnny工具破解密码:
破解出密码为:
- admin:ackbar
- medical:medical
3.反弹shell
用admin账户登录OpenEMR系统。
找到一处可以上传文件的地方
上传shell.php,这里没有做过滤,文件上传成功。接下来在kali监听端口,然后访问url触发。
反弹连接成功!
4.提权
目前是apache用户。
提权到medical用户
进入/home文件夹,发现了medical用户,还记得密码破解时破解出了medical用户的密码为medical,所以用这个密码切换到medical用户,成功!
用以下命令转换到/bin/bash(这个靶机里如果用python3会提示不存在,用python可以)。
python -c "import pty;pty.spawn('/bin/bash')"
提权到almirant用户
经过一番查找,在/var/backups目录中找到了shadow文件,查看shadow文件,发现了/home文件夹中存在的用户almirant密码。
靶机里如果出现除了root的其它用户,一般都是需要提权到该用户的,所以现在得到了shadow文件,尝试用john破解密码。
破解密码为skywalker,切换到almirant用户。
在almirant用户的主文件夹中获取到user.txt
提权到root用户
用以下命令查找suid权限文件
find / -type f -perm -u=s 2>/dev/null
可疑文件healthcheck
这是一个靶机作者自己写的程序,就不像其他已知程序一样可以查阅suid获取root权限的命令,所以要先看一下这个程序是干嘛的。
运行程序发现它显示的是做系统健康检测,打印出网卡信息和磁盘信息等。用strings命令查看程序中包含的字符串:
这里可以看到程序执行了ifconfig打印网卡信息,但是它没有使用绝对路径,那么就可以创建一个假的”ifconfig“程序并更改环境变量,进行目录劫持。
在almirant用户目录下,依次执行以下命令:
echo "/bin/bash" > ifconfig
chmod +x ifconfig
export PATH=/home/almirant:$PATH
/usr/bin/healthcheck
程序执行后,提权到root成功!
5.总结
该靶机主要考察以下知识点:
- 用“大字典”深度扫描目录;
- 已知漏洞exploit的利用;
- 密码破解工具;
- suid权限文件,劫持环境变量提权。