环境
- vulhub系列之DC5靶场
- VMware虚拟机
- kali
文件包含突破点
根据目标靶机MAC地址得到靶机IP为192.168.43.160,直接上nmap扫描。

发现开放了80、111、36936端口,暂时只知道端口80是web站点,另外两个端口未知。其他无头绪,直接访问网页。

进入网页,一堆的英文,看了一下内容发现没有什么用,只有Contact页面有几个输入点,经过SQL注入和XSS测试,没有发现相关漏洞。
卡了半天没有找到什么突破点了,所以尝试爆破目标网站的目录看是否有没发现的页面。用kaili自带目录爆破工具dirbuster。
命令行输入
dirbuster -u http://192.168.43.160
输入命令后会自动进入软件页面。默认字典在/usr/share/dirbuster/wordlists
目录下。

该目录下有几个字典,先选择小字典进行爆破,没有结果就进行选择其他字典爆破。

爆破结果发现了footer.php目录。

进入footer.php目录发现只有几个字符,但是每次刷新页面后面的年份都会变,想到了之前页面下也有类似的字符。

经过寻找发现只有thankyou.php下面的字符年份页面刷新会变,其他页面的年份不会变,所以想到在thankyou.php页面下存在文件包含。

经过几个常见文件包含的参数测试,发现文件包含的参数是file,并且可以访问包含页面。(可以用参数字典进行爆破寻找,毕竟真实环境中参数不会那么简单)

发现不用绕过就可以直接访问根目录下的文件,但是访问/etc/passwd文件没有收获,其他目录下也没有收获。
这时想到了从前面可以知道这是一个nginx站点,nginx日志默认字典路径为/var/log/nginx/access.log。所以想到了通过日志文件写入小马再通过菜刀连接。

抓包写入php小马。

访问日志,发现成功写入小马。(由于之前进行目录爆破导致日志文件加载有点慢)

连接成功。
反弹shell到kali上。
screen提权

查看是否有提权的突破点,发现有个/bin/screen-4.5.0具有root权限。因为直接告诉我们版本了,所以直接去漏洞库查看是否有可利用的脚本。

发现有本地提权的利用脚本,打开41154.sh文件查看。

查看文件可以知道,脚本文件需要分成3个步骤完成。
第一步:将第一部分代码写入libhax.c文件中,再执行相应命令生成libhax.so文件。最后删除libhax.c文件。

第二步:将第二部分的代码写入rootshell.c文件并执行命令生成rootshell文件,最后删除rootshell.c文件。

第三步:将最后一部分代码写入dc5.sh文件中。需要注意的是,需要在文件开头写入#!/bin/bash
表示执行环境。最后保存是需要输入:set ff=unix
是为了防止脚本的格式错误。


完成3个步骤后之间把三个文件上传至靶机的/tmp文件下,然后执行./dc5即可提权。

我是用scp
命令直接将kali中的文件夹复制到目标靶机上的。复制成功进入文件夹。记得需要给dc5.sh脚本赋予权限。

得到flag.