DC-1靶场渗透实验
一、环境准备
Kali虚拟机
DC-1靶场http://www.five86.com/downloads/DC-1.zip
首先将kali虚拟机和靶机DC1都设置为net模式
ifconfig查看kali的IP为192.168.152.128

使用nmap扫描此网段下的主机
启动DC-1靶机
再次扫描得到DC-1靶机的IP地址为192.168.152.138
二、实验过程
使用nmap针对该IP进行详细扫描
发现打开了22、80和111的端口,还开启了ssh服务
访问发现80端口可以访问,如图
是一个登录界面
这里很明显的可以看到
Powered by Drupal由 Drupal 提供支持,后面会用到
在使用burpsuit尝试进行爆破登录时被锁定了
使用御剑扫描也没有找到其他页面
尝试使用awvs进行扫描
发现存在远程代码执行(SA-CORE-2018-002)漏洞
使用msfconsole工具搜索该漏洞
直接在kali下调用该工具
search SA-CORE-2018-002
搜索该漏洞及利用方式
use 使用该模块
show options查看此模块中我们还需要设置的选项,为YES且空的就是还需要我们设置的
如图RHOST(目标IP地址)为YES但是还没有设置
使用set设置目标IP
Exploit进行攻击
如图攻击成功发现第一个flag,并提示我们
翻译如下
提示我们去找该CMS的配置文件
我们按渗透的常理来说一般都会尝试去看一下像账户、密码这样重要的文件,于是我们在/etc/passwd配置文件下找到一个flag4用户,在flag4用户的家目录/home/flag4下找到了flag4

根据flag1的提示我们去找此网站CMS的配置文件
前面我们发现网页有Powered by Drupal的指纹,说明此网站采用Drupal的开源内容管理框架(CMF)
搜一下drupal的配置文件
在sites/default/下
我们去到此目录
发现三个文件
逐个打开发现flag2在setting.php文件中
翻译过来就是
爆破攻击和字典攻击不是 获得访问权限的唯一方法(您将需要访问权限)。你能用这些证书做什么?
提示我们暴力破解不行,只能获取权限
同时也发现数据库的大量信息username、password等
所以接下来我们进行提权
利用python的内置模块pty中的spawn()方法
构造命令
python -c 'import pty;pty.spawn("/bin/bash")'
实现交互式shell
尝试登录MySQL数据库
登录成功
由前面发现的信息可以知道密码存放在drupaldb数据库users表中
我们可以看见用户名为admin的账户,并且看到其密码,但是被加密了
我们使用hash-identifie工具查询一下它的加密方式
新建一个终端
直接输入hash-identifie打开
粘贴admin的密码
发现找不到此密码采用的加密方式
搜索发现正是因为查询不到其加密方式,所以暴力破解是无法攻破的,需要利用Drupal 7的一个脚本文件password-hash.sh
exit 退出数据库
cd / 回到根目录
find / -name password-hash*
在根目录下查询所有名字中带有password-hash的所有文件
如图找到此脚本的位置在/var/www/scripts/下
此脚本的使用需要在/var/www目录下
cd /var/www到此目录
运行scripts/password-hash.sh 10010
得到10010通过此加密方式加密的结果
接下来进行密码替换
回到数据库
执行
update users set pass=’$S$DvKJG.ztCY1wgzNfTFGwQO2jFdKS8fhaMnWIjZAVNEkrVOdfpDhe’ where name =’admin’;
替换密码
如图替换成功
尝试在网页登录
登陆成功后在如图所示位置找到flag3
flag3的信息中提到了passwd和shadow,很明显就是/etc/passwd和/etc/shadow,还提到了find、perms、-exec,应该是提权用的。
前面我们已经发现了flag4了,这里学到了另一种方法得到flag4
根据提示在/etc/passwd下发现一个flag4的账户
但是查看/etc/shadow失败,看不到密码
因为前面在扫描的时候发现靶机开启了ssh远程服务
现在又发现这个flag4的用户
新建一个终端
使用hydra工具尝试进行密码的暴力破解
sudo hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.152.138
得到用户名密码flag4/orange
尝试登录靶机
如图登录成功找到flag4
Flag4提示下一个flag在root目录下
但是没有权限访问
我们使用具备root权限的SUID文件进行提权,SUID可以让调用者以文件拥有者的身份运行该文件,利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
使用find查询具有root权限的SUID的文件
find / -perm -u=s -type f 2>/dev/null
可以看到find命令有SUID权限,如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行
查找根目录下名为jwt的文件并执行shell
touch jwt
find / -name jwt -exec “/bin/sh” \;
whoami查看拿到了root权限
cd /root
ls
cat thefinalflag.txt
拿到了最后的flag。