1.Web安全核心漏洞
-
**SQL注入漏洞:**并非完全消亡,2023 年黑帽大会披露「协议层绕过预编译防御」技术,可通过三层 / 四层协议特性实现注入(参考 DEF CON 32 相关议题)。
-
**前端加密与逆向:**护网行动中 Web 漏洞逐年减少,核心原因是前端加密(requestid、timestamp、自定义加密函数)普及,需使用 BurpSuite Autodecoder、Galaxy 等工具逆向解密函数。
-
文件包含漏洞:
-
**Phar 文件包含:**phar://协议不依赖文件扩展名,通过识别文件头 Magic Bytes(如 Zip 格式的 PK\x03\x04)解析内容,可将 Zip 文件改名为 jpg/png 绕过上传限制,核心调用链为「URL 解析→文件打开→格式检测→Zip 解析→源码提取→编译执行」。
-
**php://filter 妙用:**可通过「编码解码 + 字符串操作」绕过<?php exit; ?>限制 ------Base64 解码时跳过非法字符(<、?、; 等),或用strip_tags去除 XML 标签格式的限制代码,支持多过滤器组合(如 strip_tags+base64-decode)还原 webshell。
-
**session.upload_progress 利用:**默认开启session.upload_progress.enabled,上传文件时通过 POSTPHP_SESSION_UPLOAD_PROGRESS字段注入代码,结合 Cookie 设置 PHPSESSID 生成临时 Session 文件,需通过条件竞争在文件被清除前完成包含。
2.HTTPS/TLS核心原理
-
**HTTP 风险:**明文传输导致窃听、篡改、冒充三大安全问题,HTTPS 通过在 HTTP 与 TCP 之间加入 TLS 协议解决。
-
TLS 握手过程(RSA 密钥协商):
-
**客户端发送 Client Hello:**包含 TLS 版本、密码套件列表、Client Random 随机数。
-
**服务端响应 Server Hello + 证书:**确认 TLS 版本与密码套件,返回 Server Random 随机数及数字证书(含公钥、持有者信息、CA 签名等)。
-
**客户端验证证书:**通过证书链(根证书→中间证书→服务器证书)验证合法性,使用 CA 公钥解密证书签名,对比 Hash 值确认未篡改。
-
**客户端发送预主密钥:**生成 pre-master 随机数,用服务端公钥加密后通过 Change Cipher Spec 消息发送。
-
**双方生成会话密钥:**基于 Client Random、Server Random、pre-master 三者推导 Master Secret(对称密钥)。
-
**双向验证加密通信:**客户端与服务端分别发送 Encrypted Handshake Message,验证加密通道可用性,后续 HTTP 数据通过会话密钥加密传输。
- **RSA 算法缺陷:**不支持前向保密,服务端私钥泄露会导致历史密文被破解,主流替代方案为 ECDHE 算法(兼顾安全性与效率)。
3.PHP伪协议
|-------------------|-----------------------------------------|---------------------|------------------------------------------------------------|
| 协议 | 启用条件 | 核心用途 | 典型用法 |
| file:// | 无(双off可使用) | 读取本地文件 | file://D:/phpStudy/WWW/phpcode.txt |
| php://filter | 无(双off可使用) | 读取源码(Base64 编码避免执行) | php://filter/read=convert.base64-encode/resource=./cmd.php |
| php://input | allow_url_include=on | 执行 POST 提交的 PHP 代码 | POST 数据:<?php phpinfo()?>,URL:?file=php://input |
| zip:// | 无(双off可使用) | 访问压缩包内文件(绕过上传限制) | zip://D:/file.jpg%23phpcode.txt(# 编码为 %23) |
| compress.bzip2:// | 无(双off可使用) | 解压并包含.bz2 压缩文件 | compress.bzip2://D:/file.bz2 |
| compress.zlib:// | 无(双off可使用) | 解压并包含.gz 压缩文件 | compress.zlib://D:/file.gz |
| data:// | allow_url_fopen=on+allow_url_include=on | 直接执行嵌入的 PHP 代码 | data://text/plain,<?php phpinfo()?> 或 Base64 编码格式 |
3.session.upload_progress条件竞争利用
|---------------------------------|------------------------------|---------------------------------------|
| 配置项 | 默认值 | 作用 |
| session.upload_progress.enabled | On | 启用上传进度跟踪功能 |
| session.upload_progress.name | PHP_SESSION_ UPLOAD_PROGRESS | 触发进度跟踪的 POST 字段名(固定标识) |
| session.upload_progress.cleanup | On | 上传完成后自动清除 Session 中的进度数据(核心触发条件竞争的原因) |
| session.upload_progress.prefix | upload_progress_ | Session 中存储进度数据的键名前缀 |
-
**触发 Session 创建:**发送包含 PHP_SESSION_UPLOAD_PROGRESS 字段的文件上传请求,同时在 Cookie 中指定 PHPSESSID=自定义ID(如 zyl),PHP 会自动创建 Session 文件(命名格式通常为 sess_自定义ID,如 sess_zyl);
-
**注入恶意代码:**PHP_SESSION_UPLOAD_PROGRESS 字段的值可自定义为 PHP 恶意代码(如 <?php phpinfo(); ?> 或一句话木马),该代码会被写入临时 Session 文件;
-
**条件竞争触发:**由于 session.upload_progress.cleanup=On,上传完成后 Session 文件会被立即清除,需在 "文件创建成功" 与 "文件被清除" 之间的时间差内,通过文件包含漏洞访问该 Session 文件,执行恶意代码。
4.SQL注入的协议层绕过
- 绕开应用层的预编译防护,利用TCP/IP协议的三层(网络层)、四层(传输层)特性,向数据库服务器注入恶意查询。
- 预编译仅对应用层传递的SQL语句进行参数化处理,但协议层可通过特定技术纂改或追加查询内容,使数据库将恶意代码识别为合法执行语句
防御建议:
- 协议层校验:在数据库服务器或中间件层面,对传输的协议数据进行完整性校验,拦截异常篡改的数据包。
- 多层防御:除预编译外,搭配输入验证、输出编码、WAF 协议层防护等措施,避免单一防御机制被突破。
- 及时更新:关注数据库与中间件的安全补丁,修复协议层可能存在的漏洞。