Upload
hiiir-lab
View
604
Download
0
Embed Size (px)
Citation preview
Taien內部資安講座 VI 伺服器端攻擊與防禦III
2013.05.22 @ Hiiir Inc.
Taien Wang<[email protected]>
英屬維京群島商時間軸科技股份有限公司新創事業部
伺服器端攻擊與防禦III - 大綱
1. 目錄遊走(Directory Traversal)
2. eval注入(Eval Injection)
常用搭配函數
1. 編碼
2. 壓縮
3. 雙引號的特性(Double Quotes)
4. 參考資料
1.目錄遊走
Directory Traversal
1. 目錄遊走(Directory Traversal) – 簡介(1/3)
• 基本上同伺服器端攻擊與防禦II > 3. 檔案或資源匯入安全 > 攻擊技巧
• 攻擊手法
– ..
• 一些變形
編碼 等同
%2e%2e%2f ../
%2e%2e/ ../
..%2f ../
%2e%2e%5c ..\
%2e%2e\ ..\
..%5c ..\
%252e%252e%255c ..\
..%255c ..\
1. 目錄遊走(Directory Traversal) – 真實案例(2/3)
1. 目錄遊走(Directory Traversal) – 解決方案(3/3)
• 需要注意的地方
– include, include_once, require, require_once…
– fopen(), file(), copy(), unlink(), system(), exec(), passthru()…
• 解決方案
– 白名單
– 黑名單
• 過濾跳脫
• basename()
• escapeshellarg()
– php.ini
• open_basedir
– Windows 多目錄設定”分號”
– Linux 多目錄設定”冒號”
(僅供參考,不同環境有不同選擇)
2. Eval注入
Eval Injection/搭配函數
2. eval 注入 – 簡介(1/4)
• eval 內可用來執行一些動態 PHP 程式碼
• PHP 官方說明
– eval()使用上非常危險, 他允許執行任意PHP程式碼
– 因此它的使用是不鼓勵的, 除非沒有其他選擇
– 輸入的資料請驗證過
• 實際上
– 惡意程式很常使用它
– 也有少部分機會有注入機會(未實驗成功, 煩請有經驗的指導)
2. eval 注入 – 常見搭配手法(2/4)
• show_source()
• 編碼
– Base64: base64_encode(), base64_decode()
– Base32
• 壓縮
– ZIP: ZipArchive
– GZ: gzcompress(), gzuncompress()
2. eval 注入 – 實際案例(3/4)
• 編碼後
• 解碼後
2. eval 注入 – 解決方案(4/4)
• 解決方案
– 白名單
• 限制於雙引號內的字元為常見字元
– 黑名單
• 嚴格過濾預期外的程式碼
– PHP 禁用函式
(僅供參考,不同環境有不同選擇)
3.雙引號的特性
Double Quotes
3.雙引號的特性 – 簡介(1/4)
• 雙引號怎麼使用函數
• 具有攻擊性的範例
3.雙引號的特性 – 真實案例(2/4)
3.雙引號的特性 – 真實案例(3/4)
• ThinkPHP Framework 任意程式碼執行漏洞
3.雙引號的特性 – 解決方案(4/4)
• 常見情境
– 產生檔案(如: Cache, 樣板, 或是設定檔等)
• 解決方案
– 白名單
• 限制於雙引號內的字元為常見字元
– 黑名單
• 過濾${@等非法字元
– PHP 禁用函式
(僅供參考,不同環境有不同選擇)
參考資料
• 柯志杰譯, 網頁程式駭客攻防實戰以PHP為例, 2007
• OWASP, Direct Dynamic Code Evaluation ('Eval Injection')
• WooYun(白帽子技術社群), ThinkPHP framework 任意代码执行漏洞预
警, 2012
• PHP, eval – Manual, 2013