前言
靶机下载:https://www.vulnhub.com/entry/dc416-2016,168/
该靶机属于DC416-2016系列
一、探测扫描
确定靶机ip与开启服务
22、80、443,应该是web靶机
二、Web页面的RCE漏洞
先看看网页
提示不需要爆破ssh,有3个flag,值得注意的是自动跳转到443端口了
扫描下网页
gobuster dir -u https://192.168.7.153/ -w dict/raft-large-directories.txt -x php,html,txt,bak -k --no-error
主要看看scanner.php
看上去像个ping的命令执行页面
尝试后发现执行的是nmap命令,那试下命令拼接
尝试了;分割命令,被检测到过滤,有点熟悉的感觉,这种post类型的命令执行拼接绕过可以试试抓包后换行来实现分割
执行成功,接下来就是漏洞的利用了
三、RCE漏洞利用
ls -al命令能看到网站文件夹下的两个可疑目录k1ngd0m_k3yz和s1kr3t
继续分别看下这俩目录下的文件信息
可以看到k1ngd0m_k3yz文件夹下有master和passwd两个文件,而s1kr3t文件夹下藏着第一个flag:FLAG{n0_one_br3aches_teh_f0rt}
而master和passwd文件则记录了craven用户的passwd和shadow信息
在后台用john爆破下,继续搜集信息,查看下/etc/passwd和/home下的用户
/etc/passwd主要是craven和vulnhub用户值得注意,而/home目录则指向了/usr/home
发现可以查看craven和vulnhub用户家目录下信息,先看看craven用户的
可以看到flag文件,不过没有权限查看,另外两个hint.txt和reminders.txt文件可以查看
hint.txt提示craven用户的密码是三个数字+宠物名字+一个符号,看来john是不太可能破解出来了
reminders.txt则是备忘录,提到了要给他的狗qwerty喂骨头,因此可以知道craven密码是三个数字+qwerty+符号的组合,用crunch生成符合条件的字典
crunch 10 10 -t %%%qwerty^ -o dict.txt
用hydra爆破craven的ssh密码
hydra -t 64 -l craven -P dict.txt ssh://192.168.7.153
获得craven用户密码931qwerty?,登录ssh获得第二个flag:FLAG{w0uld_u_lik3_som3_b33r_with_ur_r3d_PiLL}
四、二进制文件逆向分析
进到vulnhub用户家目录,flag文件依然是没权限查看,有一个可执行文件reader
根据名称猜测是类似cat的读取文件内容的命令,strings查看下
看起来会检测读取的文件是否为flag和符号链接,下下来用ida反编译仔细看下
简单看下main函数逻辑,首先通过检查文件唯一标识符判断其文件类型是否为软链接,然后检测文件名中是否有flag,若上述条件均为假则输出文件内容
很明显思路是要用这个命令去读取flag.txt里的内容,既然会对文件名进行检测,又没有修改其名字的权限,就只能通过创建不含flag的名称的链接指向flag文件,而reader代码只对符号链接进行了检测,因此可以通过创建flag文件的硬链接进行读取
ln -f flag.txt /tmp/1
./reader /tmp/1
拿到最后的flag:FLAG{its_A_ph0t0_ph1ni5h}