Loading

VulnHub::DC-1

实验环境

DC-1_1

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

渗透过程

0x01 信息搜集

由于不知道靶机IP地址,进行D段扫描,获得靶机IP地址。

DC-1_2

进行端口扫描:

nmap命令

-sS: 半开扫描,记入系统日志风险小

-sP:扫描端口前,先使用ping扫描,保证主机存活

-A: 全面系统检测,启用脚本检测和扫描

DC-1_3

主机开放了22(SSH),80(HTTP),111(RPCBInd),45684端口。

直接访问web服务,是一个Drupal搭建的站。

DC-1_4

0x02 开打

flag1

使用AWVS进行扫描,得到该页面存在Drupal的一个漏洞CVE-2018-7600

DC-1_5

使用msf尝试利用此漏洞:

DC-1_6

获得shell

DC-1_7

在 /var/www/ 下有个flag1.txt,提示我们去看配置文件

flag2

利用Python模拟tty使目录更易于辨认:

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

drupal的配置文件是 /sites/default/settings.php ,主要是数据库连接配置

DC-1_8

我们发现了flag2以及数据库账号密码

DC-1_9

flag3

登上数据,查看数据库中的信息。

DC-1_12

发现账号,和经过加密的密码,flag2中给的提示暴力破解不是唯一的方法

思路一:恢复密码

搜索了一下,Drupal 7已不再采用Drupal 6和5时代的简单的MD5加密了。据某个帖子说是因为现在有一个在线的MD5数据库,可以查到很多MD5码的原文,因此Drupal 7的开发者认为不能再继续采用这种极不安全的方法了,因此Drupal 7采用了新型的Hash加密方法来确保密码安全。新型加密方法是“加了盐(Salt)“的MD5码,简单理解就是并不会直接将password进行MD5加密,而会和用户名或其它随机字符串组合在一起后再MD5加密。

查到的资料表示:在Drupal 7的安装目录中的scripts目录下,有一些Drupal 7开发者准备好的PHP脚本,可以执行一些高级操作。其中有一个脚本名为:password-hash.sh,它的功能是传入一个密码(字符串),即返回加密后的密码字符串。

或者打开Google或者百度搜索该cms框架忘记密码的解决办法,就可以看到别人做好的明文和密文,可以拿来直接用,也有文章直接说明它是如何加密的

如何重置Drupal 7的用户密码

DC-1_10

生成密码字符串

DC-1_11

对原密码进行替换。

登录web服务,得到flag3

思路二:查找可利用漏洞,添加新管理员账户

使用searchsploit查找可用漏洞:

DC-1_14

利用CVE-2014-3704exp

DC-1_15

添加新管理员用户admin1

DC-1_16

登录成功

DC-1_13

flag4

flag3的提示提到了权限,于是想到先查看用户列表。

DC-1_17

发现flag4用户

切换到falg4的家目录,发现flag4.txt

DC-1_18

flag5

flag4提示flag in root

DC-1_19

发现最终flag,但是无权限打开,flag3中提醒了“-exec”,猜测需要提权。

使用find可以获取root权限

DC-1_20

DC-1_21

附录1 SUID提权

0x01 SUID

什么是suid?通俗的理解为其他用户执行这个程序的时候可以用该程序所有者/组的权限。

0x02 SUID提权

那么什么是suid提权呢?我理解的就是有个文件,它有s标志,并且他输入root,那么我们运行这个程序就可以有了root的权限,并且这个程序还得能执行命令,不然没什么用处,那么我们就能从普通用户提升到了root权限了。

0x03 常见的可用于suid提权的命令

Nmap
Vim
find
Bash
More
Less
Nano
cp

0x04 查找符合条件的文件

以下命令可以发现系统上运行的所有SUID可执行文件。具体来说,命令将尝试查找具有root权限的SUID的文件。

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 {} \;

附录2 find命令

0x01 描述

find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

0x02 语法

find(选项)(参数)

-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;

0x03 实例

借助-exec选项与其他命令结合使用

找出当前目录下所有root的文件,并把所有权更改为用户tom

find .-type f -user root -exec chown tom {} \;

上例中, {} 用于与 -exec 选项结合使用来匹配所有文件,然后会被替换为相应的文件名。

找出自己家目录下所有的.txt文件并删除

find $HOME/. -name "*.txt" -ok rm {} \;

上例中, -ok-exec 行为一样,不过它会给出提示,是否执行相应的操作。

posted @ 2020-04-05 23:24  chalan630  阅读(597)  评论(0编辑  收藏  举报