VulnHub通关日记-DC_1-Walkthrough
靶机简介
DC系列的靶机是一个专门构建的易受攻击的实验室,总共有九个!目的是获得渗透测试领域的经验。它的设计初学者是一个挑战,但是它的难易程度取决于您的技能和知识以及学习能力。要成功完成此挑战,您需要具备Linux技能,熟悉Linux命令行以及具有基本渗透测试工具的经验,例如可以在Kali Linux或Parrot Security OS上找到的工具。有多种获得根的方法,但是,我包括了一些标志,这些标志包含了初学者的线索。总共有五个Flag,但是最终目标是在root的主目录中找到并读取该标志。您甚至不需要成为root用户即可执行此操作,但是,您将需要root特权。根据您的技能水平,您可能可以跳过查找大多数这些标志并直接获得root资格。
学习到的知识
Drupal 7 CMS的RCE(Metasploit)
Drupal 7的Mysql写入SQL添加后台管理员账号
find命令SUID权限提升
信息搜集
拿到靶机后先对它端口进行扫描:
nmap -A -p- -T4 192.168.1.142
扫描出来结果发现它开放了22(ssh)、80(http)、111(nfs共享)。
其中http的web使用的CMS是Drupal 7。我们先从web下手吧:
在web页面上没有啥东西,尝试了一下弱口令无果,还是先对它进行扫描目录文件吧:
dirb http://192.168.1.142
扫描出来后发现有robots.txt文件,打开后是这样的:
我在翻了一些文件没有得到可利用的信息,只是知道它的版本好像是7.x版本。随后我搜索了一下有关于这个 CMS 的漏洞,看看能不能捡个漏:
searchsploit Drupal
从上图可知,它漏洞还是蛮多的,刚好有一个RCE可以用Metasploit来进行利用!随后我打开 MSF 搜索了一下它的利用模块,我使用的是这个模块(前面几个看了不能用):
exploit/unix/webapp/drupal_drupalgeddon2
之后设置rhosts开始攻击exploit得到一枚shell:
看了看只是一个普通的网站权限,系统是Linux的Debian。
我先是用MSF的提权辅助模块来尝试看看能不能运气爆棚的鸡蛋里挑骨头找到一个提权模块:
run post/multi/recon/local_exploit_suggester
额,没有找到可以用来提权的模块,那么就算了~我还是先进它shell里面看看吧,只有打入敌人内部才能取敌将首级!进入到shell后先用python来得到一枚sh吧:
python -c 'import pty;pty.spawn("/bin/sh")
Flag1
我所在的目录是网站的绝对路径/var/www,下面有一个flag1.txt文件,cat查看文件后拿到第一个flag,里面有作者给我们的提示:
Every good CMS needs a config file - and so do you.
翻译过来大概就是让我们找CMS的配置文件,这也是我们获取下一个flag的线索之一!
Flag2
得到线索后,我疯狂翻网站的目录找到了它的配置文件:
/var/www/sites/default/settings.php
查看文件后我们得到了Flag2,又得到了一个新线索:
<?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? * */ $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'drupaldb', 'username' => 'dbuser', 'password' => 'R0ck3t', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ), );
翻译过来大概的意思是告诉我们暴力用字典破解不是一个有效的方式,既然得到了配置文件,你能用这个配置文件来做什么?
Flag3
很明显了,这段提示下面就是一个数据库的配置信息,作者可能是要让我们进入到Mysql里面!
数据库名:'drupaldb',用户名:'dbuser',密码:'R0ck3t',
成功登陆到它的 Mysql 里面,我找到了一些账号和密码:
但是这玩意密码有哈希加密了的,我又连续查询了好多表才发现了Flag3的一丝线索:
它这里的title里有flag3,但是里面没有提示信息!既然是在title上有flag3的线索,那么有可能是在网站的里面,也就是网站的后台里!
接着我重新写入了一段SQL语句,把管理员的密码给重置了:
具体可以看这篇文章:https://www.isfirst.net/drupal/drupal-reset-passwordupdate users set pass='$S$DFLfuzfO9WDKAJcUHnNmhS9NwOD6MRj3pk00qEl4O7iNBD2X4n3v' where name='admin';# 这段 sql 语句的意思是把 admin 的密码重置为 drupal ,因为它的 pass 加密是 password-hash.sh ,所以我们直接给他替换掉!
写入成功后,我们来到网站的登陆页面:http://192.168.1.142/user
admin:drupal
登陆进去后我们得到了Flag3!这个时候我们又得到了一个新线索:
Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
大概的意思是让我们通过-exec命令来得到密码啥的!
Flag4
既然提示说要我们通过命令来得到密码,那么我首先是查看了passwd文件,发现了有关flag4的线索:
有一个flag4的用户,随后我来到了flag4的目录发现了flag4.txt文件!(saul文件是我之前玩靶机留下的,大家当作没有就好了)
打开之后呢得到了最后一个线索:
Can you use this same method to find or access the flag in root?Probably. But perhaps it's not that easy. Or maybe it is?
翻译过来的意思大概是让我们以相同的方式来得到root目录下的flag。
Flag5
得到线索后我习惯性的sudo -l查看有没有什么命令可以让我提权的,但是它没有sudo这个命令:
额,有点打脑壳!借用朝阳冬泳怪鸽的话:我们遇到什么困难也不要怕,微笑着面对它!消除恐惧的最好办法就是面对恐惧!坚持,才是胜利。加油!奥利给!
别慌,抽根烟再好好想想!我又接着查看下,看它有没有root权限的文件,但是没有:
find / -perm -4000 2>/dev/null
接着我又查看了有没有root权限的SUID命令发现了这些:
find / -type f -perm -u=s 2>/dev/null
其中有一个命令我之前提权的时候用过,就是find命令!刚好之前在拿到Flag3的时候它提示了-exec命令!这是一个参数,搭配find查找命令使用可以调用命令来去执行!
我首先是想在flag4目录创建个文件,但是失败了!但是没关系!
由于当前目录下有一个flag4.txt文件我们就直接使用find查看当前权限,请忽略上面那条命令!(当时的思路是创建一个文件,然后使用 find 命令来查找这个文件然后执行命令的)
find flag4.txt -exec "whoami" \;
可以看到,我们的权限是root了,我们直接提权把:
find flag4.txt -exec "/bin/sh" \;# 这段命令的意思就是先使用 find 命令查找 flag4.txt 文件,然后使用它的参数 -exec 来执行命令 /bin/sh ,这样我们就能获取到 root 权限了!
最后也是在root目录下拿到了最后的Flag文件!