网络安全与渗透测试学习笔记
从 Web 安全漏洞到渗透测试实战,系统理解攻防原理与安全实践。
1 · 安全基础
1.1 CIA 三要素
- 机密性(Confidentiality):数据不被未授权访问
- 完整性(Integrity):数据不被未授权篡改
- 可用性(Availability):服务不被中断
1.2 安全设计原则
- 最小权限:只给必要的权限
- 纵深防御:多层安全措施,不依赖单一防线
- 失败安全:默认拒绝,出错时进入安全状态
- 不要信任用户输入:所有输入都要校验
- 安全默认配置:开箱即安全
1.3 渗透测试流程
信息收集 → 漏洞发现 → 漏洞利用 → 后渗透 → 权限维持 → 编写报告
测试类型:
- 黑盒测试:不知道内部信息
- 白盒测试:有源码和架构
- 灰盒测试:部分信息已知

2 · Web 安全
2.1 XSS(跨站脚本攻击)
攻击者注入恶意脚本,使其在用户浏览器中执行。
反射型 XSS:恶意脚本在 URL 中,服务端反射到页面。
存储型 XSS:恶意脚本存入数据库,其他用户访问时触发,危害最大。
DOM 型 XSS:前端 JS 操作 DOM 时引入恶意代码,不经过服务端。
防御:
- 输出编码:
< → <," → "
- CSP:限制脚本来源
- HttpOnly Cookie:禁止 JS 读取 Cookie
- 现代前端框架自动转义
2.2 CSRF(跨站请求伪造)
攻击者诱导已登录用户执行非预期操作。
防御:
- CSRF Token
- SameSite Cookie(Strict / Lax)
- Referer / Origin 校验
- 关键操作二次确认
2.3 SQL 注入
恶意输入拼接进 SQL 语句,执行非预期操作。
-- 正常查询
SELECT * FROM users WHERE username = 'admin' AND password = 'xxx'
-- 注入后
SELECT * FROM users WHERE username = 'admin' --' AND password = 'xxx'
防御:
- 参数化查询(预编译语句):根本方案
- ORM 框架自动参数化
- 输入校验 + WAF
# 安全写法
cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (user, pwd))
2.4 SSRF(服务端请求伪造)
攻击者让服务端发起任意请求,可访问内网或云元数据。
防御:
- 白名单限制可请求的域名/IP
- 禁止访问内网 IP 段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、169.254.169.254)
- 禁用不需要的协议(file://、gopher://)
2.5 反序列化漏洞
不受信任的数据被反序列化时执行恶意代码。
受影响:Java(Fastjson、Jackson)、Python(pickle)、PHP(unserialize)。
防御:
- 不反序列化不受信任的数据
- 使用 JSON 等安全格式
- 白名单限制可反序列化的类
2.6 文件上传漏洞
上传可执行文件到服务器并访问执行。
防御:
- 白名单校验扩展名
- 校验文件 Magic Number
- 上传文件存储到非 Web 目录
- 重命名文件
2.7 命令注入
用户输入被拼接到系统命令中执行。
// 危险
Runtime.exec("ping " + userInput);
// 安全
ProcessBuilder pb = new ProcessBuilder("ping", userInput);
3 · OWASP Top 10
| 排名 |
漏洞 |
说明 |
| A01 |
访问控制失效 |
越权访问 |
| A02 |
加密失败 |
明文传输、弱算法 |
| A03 |
注入 |
SQL / NoSQL / 命令 / LDAP |
| A04 |
不安全设计 |
缺乏威胁建模 |
| A05 |
安全配置错误 |
默认密码、目录列出 |
| A06 |
脆弱过时组件 |
已知漏洞的依赖 |
| A07 |
认证失败 |
弱密码、会话固定 |
| A08 |
软件与数据完整性 |
CI/CD 污染 |
| A09 |
日志与监控不足 |
攻击无法被发现 |
| A10 |
SSRF |
服务端请求伪造 |
4 · 认证与授权
4.1 Session vs Token
Session:
- 服务端存储状态
- Cookie 携带 Session ID
- 可以主动失效
Token(JWT):
- 无状态
- 客户端存储
- 服务端无法主动失效(需黑名单)
JWT 结构:Header.Payload.Signature
4.2 OAuth 2.0
授权码模式流程:
- 客户端请求授权
- 用户登录授权服务器
- 授权服务器返回授权码
- 客户端用授权码换 Access Token
- 客户端用 Access Token 访问资源
PKCE:移动端防止授权码被截获。
4.3 密码安全
- 禁止明文存储密码
- 使用 bcrypt / Argon2 / scrypt 加盐哈希
- 实施密码复杂度要求
- 启用 MFA
5 · 信息收集
5.1 被动信息收集
- WHOIS:域名注册信息
- 子域名枚举:Sublist3r、amass、OneForAll
- DNS 记录:A、CNAME、MX、TXT
- Google Hacking:
site:example.com filetype:pdf
- Shodan / Fofa:公网设备和服务搜索
- GitHub 泄露:搜索
password、AKIA 等关键词
5.2 主动信息收集
Nmap 端口扫描:
nmap -sS -sV -O target.com # SYN 扫描 + 版本 + OS
nmap -p- target.com # 全端口扫描
nmap -sV --script=vuln target.com # 漏洞扫描脚本
目录扫描:
dirsearch -u http://target.com -e php,asp,jsp
gobuster dir -u http://target.com -w wordlist.txt
指纹识别:
whatweb http://target.com
6 · 漏洞利用工具
6.1 Burp Suite
核心模块:
- Proxy:拦截和修改请求
- Repeater:重放请求
- Intruder:自动化模糊测试
- Scanner:自动漏洞扫描(付费)
- Decoder:编码/解码
6.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
6.3 Metasploit
msfconsole
search type:exploit name:apache
use exploit/multi/http/xxx
set RHOSTS target.com
set RPORT 80
exploit
6.4 其他工具
| 工具 |
用途 |
| Nikto |
Web 服务器漏洞扫描 |
| Hydra |
暴力破解 |
| Hashcat / John |
密码哈希破解 |
| BeEF |
浏览器漏洞利用 |
| Empire |
PowerShell 后渗透 |
7 · 后渗透与权限维持
7.1 Linux 提权
常见方法:
- SUID 二进制文件滥用
- sudo 配置错误(
sudo -l)
- Cron 任务利用
- 可写敏感路径
- 内核漏洞(Dirty COW、Dirty Pipe)
# 查找 SUID 文件
find / -perm -4000 -type f 2>/dev/null
# 查看 sudo 权限
sudo -l
7.2 Windows 提权
- 内核漏洞(MS16-032、PrintNightmare)
- 服务配置错误
- DLL 劫持
- 令牌窃取
- UAC 绕过
7.3 权限维持
Linux:
- Cron 任务
- SSH 公钥
- systemd 服务
- PAM 后门
Windows:
Web 后门:
- Web Shell(PHP JSP ASP)
- 内存马
8 · 防御与加固
8.1 Web 应用加固
- WAF:ModSecurity、云 WAF
- 输入校验:白名单优于黑名单
- 输出编码
- 安全响应头:
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Strict-Transport-Security
Content-Security-Policy
- CORS 白名单,不用
*
8.2 服务器加固
- 及时更新补丁
- 关闭不必要端口
- SSH 安全配置:禁用密码登录、禁用 root、改端口
- 防火墙最小开放
- 文件最小权限
- 日志审计
8.3 安全监控
- 日志:Nginx / 应用 / 系统日志集中收集
- IDS/IPS:Suricata、Snort
- HIDS:OSSEC、Wazuh
- SIEM:ELK、Splunk
- 蜜罐:HFish、Cowrie
8.4 SDL(安全开发生命周期)
- 威胁建模
- 安全编码规范
- 代码审计
- 安全测试
- 应急响应预案