网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
2. SSRF(Server-Side Request Forgery)
小某鹏汽车-安全工程师
xxe漏洞是什么?ssrf是什么? 聊一聊代码审计得流程 怎么判断一个数据库是mysql还是oracle? sql注入得种类,利用方式? sql注入原理与防御思路 护网的时候主要做了什么,聊一聊对安全产品的理解 内网渗透了解吗?聊一聊内网渗透的思路
一、XXE漏洞与SSRF漏洞
1. XXE(XML External Entity)漏洞
- 定义:攻击者通过篡改XML文件中的实体定义,利用外部实体引用读取服务器文件、发起网络请求或执行远程代码。
- 触发场景:XML解析器未禁用外部实体解析(如PHP的
LIBXML_NOENT
未启用)。- 利用方式:xml
<!-- 读取本地文件 --> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <data>&xxe;</data> <!-- 发起SSRF请求 --> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://内网IP:端口"> ]>
- 危害:敏感文件泄露、内网探测、远程代码执行(需结合其他漏洞)。
2. SSRF(Server-Side Request Forgery)
- 定义:服务端未校验用户输入,攻击者构造恶意请求使服务器发起非预期的内部或外部请求。
- 常见触发点:URL参数(如图片下载、网页代理功能)。
- 利用场景:
- 攻击内网服务(如Redis未授权访问)
- 云服务器元数据泄露(如AWS的
169.254.169.254
)- 绕过IP白名单(通过302跳转或DNS重绑定)
- 防御:禁用协议(如
file://
、gopher://
)、校验请求目标IP范围。
二、代码审计流程
1. 环境搭建
- 使用IDE(如PhpStorm)全局搜索敏感函数(如
exec()
、mysql_query()
)。- 配置调试环境(如Xdebug)动态跟踪数据流。
2. 敏感入口分析
- 输入点追踪:关注
$_GET
、$_POST
、文件上传等未过滤的输入。- 框架特性:检查路由解析(如Spring MVC的
@RequestMapping
)、模板引擎(如Freemarker)是否启用沙箱。3. 漏洞模式匹配
- SQL注入:查找拼接SQL语句的代码段(如
"SELECT * FROM users WHERE id=" + userInput
)。- 反序列化:识别
ObjectInputStream.readObject()
调用点。- 逻辑漏洞:如订单支付金额未校验、权限校验缺失(如未验证
isAdmin
标志)。4. 自动化辅助
- 工具使用:
- 静态分析:Fortify(商业)、Semgrep(开源规则库)
- 动态插桩:覆盖测试工具(如JaCoCo)定位未覆盖代码路径。
三、数据库类型判断
1. 语法差异法
- 注释符:
- MySQL:
#
、--
(需有空格)- Oracle:
--
- 字符串拼接:
- MySQL:
CONCAT('a','b')
- Oracle:
'a' || 'b'
2. 系统函数探测
- 版本函数:
- MySQL:
SELECT version()
- Oracle:
SELECT banner FROM v$version
- 时间函数:
- MySQL:
SLEEP(5)
- Oracle:
DBMS_LOCK.SLEEP(5)
3. 错误信息法
- 故意触发错误:
- MySQL错误示例:
You have an error in your SQL syntax
- Oracle错误示例:
ORA-00933: SQL command not properly ended
四、SQL注入分类与利用
1. 注入类型
类型 特征 利用工具示例 联合查询注入 页面回显数据 sqlmap -u "url" --union 布尔盲注 页面响应状态差异(True/False) 手工构造 AND 1=1
时间盲注 基于时间延迟判断 IF(1=1,SLEEP(5),0)
报错注入 数据库错误信息回显 extractvalue(1,concat(0x7e,version()))
堆叠查询 支持多语句执行(如PHP+MySQLi) ; INSERT INTO logs VALUES ('hacked')
2. 利用链扩展
- 文件读写:MySQL的
LOAD_FILE()
、INTO OUTFILE
(需secure_file_priv
为空)。- OS命令执行:Oracle的
DBMS_SCHEDULER
创建作业执行系统命令。
五、SQL注入原理与防御
1. 原理
- 根本原因:用户输入被拼接为SQL语句的一部分,如:java
String query = "SELECT * FROM users WHERE id='" + userInput + "'";
- 攻击载荷:闭合引号并插入恶意代码,如
' UNION SELECT 1,password FROM users--
。2. 防御方案
- 参数化查询(核心方案):python
cursor.execute("SELECT * FROM users WHERE id = %s", (user_input,))
- 纵深防御:
- WAF规则:过滤
UNION
、SLEEP
等关键字。- 权限控制:数据库账户遵循最小权限原则(禁用
FILE
权限)。- 错误处理:生产环境关闭详细错误回显。
六、护网行动与安全产品理解
1. 护网实战职责
- 前期准备:资产梳理(使用Nexpose扫描暴露面)、漏洞修复(优先处理CVSS 9.0+漏洞)。
- 防守工作:
- 流量监控:分析全流量日志(如ELK堆栈)定位异常请求。
- 蜜罐部署:使用HFish伪装脆弱服务诱捕攻击者。
- 应急响应:隔离被攻陷主机、取证分析(使用Volatility提取内存数据)。
2. 安全产品能力矩阵
产品类型 优势场景 局限性 WAF 快速拦截已知攻击模式 无法防御0day/逻辑漏洞 EDR 端点行为监控(如勒索软件) 资源占用高 NDR 网络流量异常检测(如C2通信) 依赖规则库更新 态势感知 多源日志关联分析 误报率高需人工验证
七、内网渗透思路
1. 信息收集阶段
- 主机发现:ARP扫描(
arp-scan
)、NetBIOS查询。- 服务探测:Nmap脚本(
smb-os-discovery.nse
)识别操作系统。- 凭据提取:
- Windows:Mimikatz抓取LSASS内存密码。
- Linux:查找
/etc/shadow
备份文件。2. 横向移动技术
- 协议利用:
- SMB:利用永恒之蓝(MS17-010)攻击未打补丁主机。
- RDP:密码喷洒攻击(使用Hydra批量测试弱口令)。
- 票据传递:Kerberos黄金票据伪造(需域控KRBTGT账户哈希)。
3. 权限维持手段
- 后门植入:
- Windows:计划任务添加持久化启动项。
- Linux:修改
.bashrc
或安装SSH后门。- 隐蔽隧道:
- DNS隧道工具:DNScat2
- ICMP隧道:icmpsh
4. 跨域攻击
- 域信任漏洞:利用AD域间信任关系(如SID History滥用)。
- 组策略利用:通过GPO推送恶意脚本到所有域机器。