## 反序列化漏洞
序列化就是把一个对象变成可以传输的字符串,目的就是为了方便传输。
反序列化和序列化是两个正好相反的过程。
### 反序列化漏洞的原理:
序列化和反序列化本身并不存在问题。但当反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码。
php比较少,Java中出现的很多,因为php中还需要满足后台不正当的使用了PHP中的魔法函数的条件
* PHP反序列化函数:
serialize(),unserialize()
* Java反序列化函数:
ObjectOutputStream的writeObject()和ObjectInputStream的readObject()。
php常见的几个魔法函数:
```php
#魔法函数前边都会有__
__construct()当一个对象创建时被调用
__destruct()当一个对象销毁时被调用
__toString()当一个对象被当作一个字符串使用
__sleep() 在对象在被序列化之前运行
__wakeup将在序列化之后立即被调用
```
### PHP反序列化漏洞实战
在线反序列化工具:https://www.w3cschool.cn/tools/index?name=unserialize
```
# 已序列化数据
O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
# 反序列化后的结果
Array{
[__PHP_Incomplete_Class_Name]=>S
[test]=><script>alert('xss')</script>
}
```
怎么构造payload呢
通过更改序列化之后的变量值,之后将payload写入一个接受序列化数据的API中就可以了
小结
回看整个过程就是 对象通过序列化变为字符串,我们对字符串做手脚,再交给有漏洞的地方进行反序列化
## 反序列化漏洞防御:
### 类的白名单校验机制:
对所有传入的反序列化对象,在反序列化过程开始前,对类型名称做一个检查,不符合白名单的类不进行反序列化操作。很显然,这个白名单肯定是不存在Runtime的。
### 禁止JVM执行外部命令Runtime.exec
这个措施可以通过扩展 SecurityManager 可以实现。
### PHP防御
1. 安全配置好php相关参数:禁止某些php函数,
服务器便是用这个来禁止php的执行命令函数。
```
# 禁止用这些函数来执行系统命令。
disable_functions =system,passthru,shell_exec,exec,popen
```
2. 升级中间件
3. 严格控制传入变量,严谨使用魔法函数
### weblogic防御
1. 过滤T3协议,限定可连接的IP
2. 设置Nginx反向代理,实现t3协议和http协议隔离
3. JEP290(JDK8u121,7u131,6u141),这个机制主要是在每层反序列化过程中都加了一层黑名单处理
### 原生反序列化防御
1. 不要反序列化不可信的数据
2. 给反序列数据加密签名,并确保解密在反序列之前
3. 给反序列化接口添加认证授权
4. 反序列化服务只允许监听在本地或者开启相应防火墙
5. 升级第三方库
6. 升级JDK,JEP290
- src导航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查询
- 备案信息查询
- 信用信息查询
- IP反查站点的站
- 浏览器插件
- 收集子域名信息
- 在线平台
- 工具枚举
- ssl与证书透明度
- DNS历史解析
- DNS域传送漏洞
- C段探测
- JS文件域名&ip探测
- 搜索引擎&情报社区
- google黑客
- 威胁情报
- 钟馗之眼
- 收集相关应用信息
- 微信公众号&微博
- APP收集&反编译
- 收集常用端口信息
- 常见端口&解析&总结
- 扫描工具
- 网络空间引擎搜索
- 浏览器插件
- nmap扫描
- 收集敏感信息
- 源码泄露
- 邮箱信息收集
- 备份文件泄露
- 目录&后台扫描
- 公网网盘
- 历史资产
- 指纹&WAF&CDN识别
- 指纹识别
- CDN识别
- 绕过CDN查找真实IP
- WAF识别
- 漏洞资源和社工
- 漏洞公共资源库
- 社会工程
- 资产梳理
- 各种对渗透有帮助的平台
- 扫描器
- 扫描器对比
- AppScan(IBM)_web和系统
- AWVS_web扫描
- X-Scan_系统扫描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_绿盟_web
- 安恒明鉴
- Nessus_系统
- nexpose_系统
- 启明天镜_web_系统
- SQL注入
- 常用函数
- sql注入步骤
- union注入和information_schema库
- 函数和报错注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解决方案
- Access数据库注入
- MSSQL数据库注入
- MYSQL数据库注入
- 神器SQLmap
- xss跨站脚本攻击
- xss原理和分类
- xss案例和修复
- xss绕过技巧
- xss案例
- 文件上传下载包含
- 常有用文件路径
- 文件上传漏洞
- 文件下载漏洞
- 文件包含漏洞
- upload-labs上传漏洞练习
- XXE、SSRF、CSRF
- SSRF原理基础
- SSRF案例实战
- CSRF原理基础
- CSRF案例及防范
- XXE之XML_DTD基础
- XXE之payload与修复
- XXE结合SSRF
- 远程命令执行与反序列化
- 远程命令和代码执行漏洞
- 反序列化漏洞
- 验证码与暴力破解
- 爆破与验证码原理
- CS架构暴力破解
- BS架构暴力破解
- WEB编辑器漏洞
- 编辑器漏洞基础
- Ewebeditor编辑器
- FCKeditor编辑器
- 其他编辑器
- web中间件漏洞
- 中间件解析漏洞
- Tomcat常见的漏洞总结
- Jboss漏洞利用总结
- Weblogic漏洞利用总结
- WEB具体步骤
- 旁注和越权
- CDN绕过
- 越权与逻辑漏洞
- WEB应用常见其他漏洞
- WEB登陆页面渗透思路
- 获取WEBshell思路
- 社工、钓鱼、apt
- 社工和信息收集
- 域名欺骗
- 钓鱼邮件
- 一些钓鱼用的挂马工具
- 代码审计
- 代码审计工具
- WAF绕过
- WAF基础及云WAF
- 各种WAF绕过方法
- 绕过WAF上传文件
- 系统提权
- windows系统提权
- linux系统提权
- 数据库提权操作系统
- 内网横向渗透
- 内网穿透方式
- 一些内网第三方应用提权
- ARP与DOS
- ARP欺骗
- DOS与DDOS
- 一些DOS工具