0 引言
今天天气严寒小智不想出门,来VULNHUB下载个靶场玩玩吧。
1 信息收集
1.1 主机探测
打开靶机映入眼帘的是Ubuntu登录界面。发现提示需要找到password.txt,后面的内容应该是文件位置,但是我们看不到。
打开虚拟网络编辑器查看靶机所在c段:192.168.40.0/24。使用Zenmap扫描存活的主机:
太大和太小的肯定不是,192.168.40.132是我的kali攻击机,所以192.168.40.130是靶机。
1.2 端口探测
对靶机进行全端口扫描,发现开启端口80和22。80端口一般为web界面,可能存在较多可利用点。
1.3 目录爆破
直接访问192.168.40.130。在页面中没有我们常见的功能点,所以直接用御剑进行目录扫描:
可以利用的点有wordpress服务和疑似敏感文件secret.txt。先访问一下secret.txt:
这里提示我们需要使用fuzz技术来寻找url中隐藏参数,并且需要找到location.txt文件。
1.4 FUZZ扫描
可以利用参数访问的目录有image.php和index.php。使用wfuzz对这两个文件进行扫描:
一共有951条,一条一条的找太慢了。所以我们可以过滤掉大部分重复的结果:
过滤结果为file,说明php存在一个file参数可以访问。该url存在本地文件包含(任意文件读取)漏洞。
2 漏洞利用
2.1 本地文件包含
上一步中提示我们需要location.txt文件,所以这里直接尝试访问:
成功了,有了新的提示。我们需要在另一个image.php文件中使用secrettier360参数访问,但是没给具体的参数值。所以应该尝试一下ubantu常见的敏感文件路径,如/etc/passwd。
访问成功了。这个文件中存放的是用户名和密码。这里的显示有点乱,我们可以使用kali自带的工具curl进行良好的显示:
发现密码全部显示为x,这并不代表没有密码,而是Ubuntu中密码统一存储在/etc/shadow。试着去访问一下:
里面是一个图片文件,猜测是flag,但是获取不了密码等有用的信息,只能再回到/etc/password中寻找。
发现这一行是登录界面未显示完全的内容。尝试访问该路径:
访问成功!页面下面有一行字符,应该就是密码了。但是去靶机上试了一下,发现不是操作系统的密码,也不是ssh密码。只能再看看网站其它后台目录有没有可利用的点。
2.2 wordpress命令执行
网站的其中一个后台就是wordpress,这是一个用于制作博客的平台。点击login后即可进入登录界面,所以合理推测刚才的密码应该就是wordpress的。一些版本的Wordpress存在代码执行漏洞,如果我们能成功登录,就有可能获取服务器控制权。
但是我们不知道用户名。查资料得知,wordpress在部署后,管理员会自动在主页发表一篇名为hello world的文章:
通过此处,我们就能够知道用户victor为管理员用户。使用刚才的密码尝试登录:
登录成功!接下来我们需要寻找一个上传点,在wordpress的Apperance--Theme Editor--secret.php中可以找到一个编写代码的功能点:
找到这里的时候,靶场会贴心的提醒我们。下一步,将我们的反弹shell放在框里并上传,再访问secret.php就可以触发反弹连接了。使用MSF生成反弹shell:
将生成的payload复制粘贴进代码框:
更新保存成功后,开启MSF的监听模块:
设置监听主机ip和端口,要和我们刚才payload里的对应上。接下来使用exploit命令开始监听:
成功了!接下来访问secret.php即可触发连接。通过查资料得知wordpress中secret.php的路径为/wordpress/wp-content/themes/twentynineteen/secret.php。直接访问:
此时MSF中出现meterpreter提示符,表示连接建立成功。
3 权限提升
3.1 Linux内核漏洞
在meterpreter中使用getuid命令收集版本信息:
有了版本号,可以通过MSF自带的漏洞库搜索一下当前版本是否存在可直接利用的内核漏洞:
发现下图这一条符合当前版本,而且正是我们需要的本地权限提升漏洞:
将漏洞利用脚本复制到当前工作目录下,并使用gcc编译为可执行文件45010:
将可执行文件45010上传至靶机。tmp目录任何用户都可以使用,所以一般选择传到靶机的tmp目录下。
查看文件夹,发现上传成功,但是没有执行权限:
使用meterpreter的shell功能,可以执行操作系统执行命令:
使用chmod命令加入x权限并执行,whoami查看当前权限,发现已获得root权限!
进入root文件夹查看,发现key.txt和root.txt:
在root.txt中成功获取flag!