## 反序列化漏洞
序列化就是把一個對象變成可以傳輸的字符串,目的就是為了方便傳輸。
反序列化和序列化是兩個正好相反的過程。
### 反序列化漏洞的原理:
序列化和反序列化本身并不存在問題。但當反序列化的數據可被用戶控制,那么攻擊者即可通過構造惡意輸入,讓反序列化產生非預期的對象,在此過程中執行構造的任意代碼。
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工具