Web 安全学习笔记
前言
随着 Web 技术的日益成熟,非 Web 服务在互联网上的暴露面逐渐减少,当前互联网安全的核心主要集中在 Web 安全领域。为了在大数据时代保障自身系统的安全,避免"裸奔"状态,深入理解 Web 安全机制显得尤为重要。
在学习 Web 安全的过程中,许多知识点往往相对零散。如果没有清晰的脉络作为参考,学习者容易陷入碎片化知识的泥潭,增加学习负担。本笔记旨在整理关键知识、技术思路与实践方法,形成一份结构化的学习文档。本文档涵盖网络协议、漏洞攻防、内网渗透及防御技术等核心内容,为入门者提供系统的参考框架。
1. Web 技术与安全观演化
1.1 Web 技术演化
Web 技术从早期的静态 HTML 页面发展到如今复杂的单页应用(SPA)和微服务架构。这一过程中,前端交互逻辑增强,后端数据处理复杂度提升,攻击面也随之扩大。理解 Web 演化的历史有助于理解现代漏洞产生的根源。
1.2 Web 攻防技术演化
早期黑客主要利用简单的缓冲区溢出或脚本注入。随着 WAF(Web 应用防火墙)的普及,攻击手段转向更隐蔽的混淆、绕过技巧以及业务逻辑漏洞。防御方则从单纯的网络层防护转向应用层深度检测与行为分析。
1.3 安全观
建立正确的安全观是安全从业者的基石。安全不是绝对的状态,而是风险管理的持续过程。应遵循最小权限原则、纵深防御原则,并认识到没有完美的系统,只有不断迭代的防御体系。
2. 计算机网络与协议基础
2.1 网络基础
理解 OSI 七层模型与 TCP/IP 四层模型是网络安全的基础。物理层、数据链路层负责传输介质与帧;网络层处理 IP 寻址与路由;传输层确保端到端连接;应用层直接面向用户服务。
2.2 UDP 协议
用户数据报协议(UDP)是无连接的,速度快但不可靠。在 DNS 查询、视频流媒体中广泛使用。安全方面,UDP 常用于 DDoS 攻击中的放大反射攻击,需关注端口开放情况。
2.3 TCP 协议
传输控制协议(TCP)提供可靠连接,通过三次握手建立,四次挥手断开。SYN Flood 攻击利用握手过程中的资源消耗进行拒绝服务。理解 TCP 标志位(SYN, ACK, FIN, RST)对流量分析至关重要。
2.4 DHCP 协议
动态主机配置协议用于自动分配 IP 地址。DHCP Spoofing 攻击可伪造服务器分配恶意网关,导致中间人攻击。内网环境中需开启 DHCP Snooping 等防护机制。
2.5 路由算法
路由协议如 OSPF、BGP 决定了数据包路径。路由劫持可导致流量被重定向至恶意节点。了解 BGP 劫持原理对于理解大型网络攻击具有重要意义。
2.6 域名系统
DNS 将域名解析为 IP。DNS 缓存投毒、DNS 隧道等技术常被用于 C2 通信或数据窃取。安全运维需监控异常 DNS 请求。
2.7 HTTP 标准
超文本传输协议是 Web 通信的基础。请求方法(GET, POST, PUT, DELETE)、状态码(200, 403, 500)及 Header 信息包含大量敏感数据。理解 HTTP 报文结构是进行抓包分析的前提。
2.8 HTTPS
HTTP over SSL/TLS 提供了加密传输。证书验证、密钥交换过程是安全的关键点。中间人攻击可能通过自签名证书欺骗用户。需确保证书链完整且受信任。
2.9 SSL/TLS
安全套接字层/传输层安全协议。版本演进从 SSLv3 到 TLS 1.2/1.3。已知漏洞如 POODLE、BEAST 促使版本升级。禁用弱加密套件是基本加固要求。
2.10 IPsec
IP 安全协议在网络层提供加密认证。常用于 VPN 构建。配置不当可能导致密钥泄露或隧道被攻破。
3. 信息收集
3.1 域名信息
WHOIS 查询可获取注册人信息。子域名枚举是发现隐藏资产的第一步。常用工具包括 Sublist3r、Amass 等。
3.2 端口信息
端口扫描揭示开放服务。Nmap 是行业标准工具。区分全连接扫描与 SYN 扫描以规避日志记录。
3.3 站点信息
识别 CMS 类型、框架版本、服务器软件。指纹识别技术可辅助确定目标环境特征。
3.4 搜索引擎利用
Google Hacking 利用高级搜索语法挖掘敏感文件。Dork 语句可定位备份文件、调试接口等。
3.5 社会工程学
利用人性弱点获取信息。钓鱼邮件、电话诈骗是常见手段。安全意识培训是防御关键。
3.6 参考链接
建议查阅 CVE 数据库、NVD 官方源获取权威漏洞信息。
4. 常见漏洞攻防
4.1 SQL 注入
SQL 注入是最经典的 Web 漏洞之一。当用户输入未经过滤直接拼接到 SQL 语句时发生。
- 注入分类:联合查询、报错注入、盲注(布尔/时间)、堆叠注入。
- 注入检测:观察响应差异、使用自动化扫描器。
- 权限提升:尝试读取
sys 表、写入 WebShell。
- 数据库检测:判断 MySQL、Oracle、PostgreSQL 等类型。
- 绕过技巧:大小写绕过、注释符替换、编码混淆。
- SQL 注入小技巧:利用
information_schema 库探测字段名。
4.2 XSS(跨站脚本)
XSS 允许攻击者在受害者浏览器执行恶意脚本。
- 分类:存储型(持久化)、反射型(即时)、DOM 型(客户端)。
- 危害:盗取 Cookie、会话劫持、网页篡改、挂马。
- 同源策略:浏览器安全机制,限制不同源之间的资源访问。绕过同源策略需结合其他漏洞。
5. 语言与框架安全
5.1 PHP
PHP 是 Web 开发常用语言,存在特定安全风险。
- 后门:WebShell 常以 Base64 编码形式存在。
- 反序列化:
unserialize() 函数若处理不可信数据,可导致远程代码执行。
- Disable Functions:配置限制危险函数如
exec, system。
- Open Basedir:限制文件访问目录,防止文件包含。
- phpinfo 相关漏洞:泄露路径信息,辅助路径遍历。
- PHP 流:
file://, php://filter 可用于读取本地文件或编码转换。
- htaccess injection:Apache 配置文件注入,可修改服务器行为。
- WebShell:恶意脚本上传后的控制入口。
- Phar:PHP 归档格式,反序列化漏洞高发区。
5.2 Python
Python 在安全工具开发中广泛应用。
- 格式化字符串:
%s 或 .format() 未正确转义可能导致注入。
- 反序列化:
pickle 模块不安全,易被利用。
- 沙箱:运行受限环境,但逃逸技术层出不穷。
- 框架:Django, Flask 等框架自带防护机制,但配置错误仍存风险。
- 危险函数/模块列表:
os.system, subprocess, eval 需谨慎使用。
5.3 Java
Java 企业级应用主流,反序列化漏洞频发。
- 反序列化:
ObjectInputStream 读取恶意对象。
- 框架:Struts2, Spring Boot 等历史漏洞较多。
- JNDI 注入:Log4j 事件后 JNDI 成为热点攻击向量。
5.4 JavaScript
前端核心语言,涉及 DOM XSS 及 Node.js 服务端风险。
- Node.js:文件操作、命令执行风险。
- 前端逻辑:客户端校验不可信,必须后端二次验证。
5.5 Golang
Go 语言编译型特性使其在工具编写中流行。
- 并发安全:Goroutine 竞争条件可能导致逻辑漏洞。
- 依赖管理:第三方库漏洞传播快。
5.6 Ruby
Ruby on Rails 框架曾出现多起高危漏洞。
- Mass Assignment:批量赋值漏洞。
- RCE:模板引擎渲染问题。
5.7 ASP
经典遗留系统,VBScript 脚本易受注入影响。
- ASPX:ViewState 反序列化风险。
- IIS:配置不当导致目录遍历。
6. 内网渗透
6.1 信息收集 - Windows
- NetBIOS:获取主机名、共享信息。
- SMB:文件共享协议,永恒之蓝利用 SMB 漏洞。
- 注册表:存储系统配置与启动项。
6.2 持久化 - Windows
- 计划任务:定时执行恶意脚本。
- 服务注册:伪装成系统服务。
- 启动项:注册表 Run 键值。
6.3 域渗透
- AD 域:Active Directory 集中管理身份。
- Kerberos:认证协议,黄金/白银票据攻击。
- 组策略:强制下发配置,可被滥用部署后门。
6.4 信息收集 - Linux
- 进程与服务:
ps, systemctl。
- 网络配置:
ip addr, /etc/hosts。
- 用户信息:
/etc/passwd, /etc/shadow。
6.5 持久化 - Linux
- Crontab:定时任务。
- SSH Key:公钥植入实现免密登录。
- LD_PRELOAD:动态库劫持。
7. 防御技术
7.1 团队建设
安全团队需包含红队(攻击模拟)、蓝队(防守监测)、紫队(协同)。明确职责分工与应急响应流程。
7.2 安全开发
DevSecOps 将安全融入开发生命周期。代码审计、SAST/DAST 扫描应在 CI/CD 流水线中自动化执行。
7.3 威胁情报
订阅外部情报源,了解最新攻击趋势、IOC(入侵指标)。内部日志关联分析可提前预警。
7.4 ATT&CK 框架
MITRE ATT&CK 描述攻击者战术与技术。映射攻击行为有助于评估防御覆盖度。
7.5 风险控制
风险评估量化潜在损失。制定应急预案,定期演练。购买网络安全保险转移部分风险。
7.6 加固检查
操作系统基线检查、中间件加固、密码策略强制执行。定期漏洞扫描与修复。
7.7 防御框架
构建纵深防御体系。边界防火墙、WAF、主机防病毒、终端检测响应(EDR)多层联动。
7.8 蜜罐技术
部署虚假资产诱捕攻击者。分析攻击手法,收集样本,延迟攻击者行动。
7.9 入侵检测
IDS 监控网络流量异常。规则匹配与行为分析结合。误报率优化是关键。
7.10 应急响应
发现事件后快速隔离、取证、根除、恢复。保留证据链以备法律追责。复盘总结改进防御。
7.11 溯源分析
追踪攻击者来源。分析 IP、域名、代码风格、习惯用语。配合执法部门行动。
结语
网络安全是一场持续的博弈。技术更新迅速,攻击手段不断翻新。保持学习热情,夯实基础理论,积累实战经验,才能在安全道路上行稳致远。希望本笔记能为你的学习之路提供清晰指引。