环境搭建
- 下载靶机(DC-1 靶机下载)
- 解压后,使用 VMware 打开,并将攻击机和靶机的网卡,设置为 NAT 模式。
NAT 模式:将攻击机与靶机设置在同一网段下
环境信息
- 攻击机:kali -> IP:192.168.237.128
- 靶机:DC-1(Linux)
有多种获得 root 的方法,但是,我已经包含了一些包含初学者线索的 flag。
总共有五个 flag,但最终目标是在 root 的主目录中找到并读取 flag。 您甚至不需要成为 root 即可执行此操作,但是,您将需要 root 权限。
渗透思路
1信息收集
- 使用
nmap -sS -O 192.168.237.0/24扫描网段,找寻靶机的 IP。
- 根据扫描出的系统信息,以及端口的开放情况,判断
192.168.237.161是目标靶机的 IP,所以使用nmap -A -T4 -p- 192.168.237.161对靶机进行全面扫描。
- 扫描出靶机的 http 站点是一个 Drupal 站点。
- 使用
http://192.168.237.161访问靶机的 http 站点。
- 访问成功后根据页面内容,再次确定该站点的 CMS 为 Drupal 。
内容管理系统(CMS):一种位于 WEB 前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。 ——摘自百度百科
2漏洞发现
- 使用
msfconsole运行 MSF 工具。 - 根据网站的 CMS 信息,在 MSF 中使用
search drupal搜索相关的漏洞利用模块。
- 找到了两个与 http 相关的模块,根据 Rank(等级)优先选择带颜色的模块,使用
use 2装载模块。 - 使用
show options查看需要进行的设置,发现只需要设置 RHOSTS(目标),所以使用set RHOSTS 192.168.237.161进行设置。设置完后如下:
- 使用
run或exploit运行模块。
- 运行模块后,成功建立会话,使用
shell即可获得靶机的 WebShell 。
3漏洞利用
- 使用
whoami查看当前用户的权限。
- 为了方便后面的操作,使用
python -c "import pty;pty.spawn('/bin/bash')"实现交互式 Shell。
交互式 Shell:可以执行一些需要上下文的命令,并且会显示操作的结果。
- 使用
ls -al浏览当前目录中所有的文件及其权限。
- 发现了
flag1.txt文件,使用cat flag1.txt进行查看。
每个好的 CMS 都需要一个配置文件 - 你也一样。
- 根据文件内容,百度搜索 Drupal 站点的默认配置文件,得知文件名为
settings.php。 - 先使用
find /var/www/ -name settings.php在网站目录下搜索settings.php文件。
- 成功搜索到配置文件,使用
cat sites/default/settings.php进行查看。
蛮力和字典攻击不是获得访问权限的唯一方法(您将需要访问权限)。 您可以使用这些凭据做什么?
- 查看后发现这个文件就是我们要找的第二个 flag,并且还发现了靶机数据库的账户和密码。
- 使用
mysql -u dbuser -pR0ck3t尝试登录靶机数据库。
- 登录成功后,使用
show databases;查看所有数据库。
- 根据库名进行判断,
drupaldb应该是靶机的 Drupal 站点使用的数据库。 - 使用
use drupaldb;进入数据库,然后使用show tables;查看当前数据库中的所有表。
- 浏览表名后,发现一个
users表,猜测其可能保存着网站用户的相关信息。 - 使用
select * from users\G;纵向显示users表中的所有字段。
- 找到了 admin(管理员)账号的密码,根据密码形式可以得知密码经过了加密。
- 得到密码密文后可以尝试进行解密或修改密码,搜索资料后发现这种加密是不可逆,并且 Drupal 提供了可以直接修改管理员密码的方法。在
/var/www/下使用php scripts/password-hash.sh tkm即可生成 tkm 这个字符串对应的 hash 值。
- 再次进入到数据库中,使用
update drupaldb.users set pass="<hash 值>" where name='admin'即可修改 admin 的密码为之前生成 hash 时使用的字符串,此处为tkm。
- 尝试使用
admin:tkm登录靶机的 Drupal 站点。
- 成功使用管理员账户登录站点,看到最上方有一排选项,如果看不懂,就都试一次。
- 尝试点击
Dashboard选项,找到了flag3.txt,点击进行查看。
特殊权限将有助于查找密码 - 但您需要 -exec 该命令才能确定如何获取阴影中的内容。
- 查看后发现文本内容中有两个特别的大写字母
perms和find,根据此前 flag 的形式,使用find / -name "flag*"搜索所有开头为 flag 的文件。
- 成功找到
flag4.txt,使用cat /home/flag4/flag4.txt进行查看。
您可以使用相同的方法在 root 中查找或访问标志吗?
大概。 但也许这并不容易。 或者也许是?
- 根据 flag4.txt 中的内容,推测下一步需要进行提权,从而获得 root 权限,并访问 /root 目录,获得 flag5。
- 根据 flag3 中另外一个大写字母
perms,猜测可能需要使用 SUID 提权,使用find / -user root -perm -4000 -print 2>/dev/null查找所有具有 SUID 权限且属主为 root 的文件。
SUID 权限:在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效。
- 发现了 find 命令,并且根据 flag3 中提到的 -exec,可以确定需要使用 find 提权。
- 使用
touch tkm创建提权需要的文件,然后使用find tkm -exec '/bin/sh' \;进行提权。
- 成功获得 root 权限,根据提示使用
cd /root访问 /root 目录,找到了thefinalflag.txt,使用cat thefinalflag.txt进行查看。
做得好!!!! 希望你喜欢这个并学到了一些新技能。 您可以通过 Twitter 与我联系,让我知道您对这段小旅程的看法 - @DCAU7
- 渗透结束!!!
知识点汇总
- 使用
nmap找寻并扫描靶机。 - 使用
MSF的对应模块,进行漏洞利用。 - 利用
Python实现交互式 Shell。 - 在数据库层面,修改 Drupal 站点的用户密码。
- SUID 提权
- find 提权
参考资料
这是我第一次尝试写博客,如果您觉得哪里有问题,请在评论区进行留言。