iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 5
0
Security

資安x系統x絕對領域系列 第 6

[Day04]原始碼檢測x弱點修補X驗證攻擊-Path Manipulation

「Path Manipulation」這個弱點找不到對應的中文,假設就叫路徑暴露或跳脫路徑好了,建議關閉 Apache DirectoryIndex 設定或做存取權限控管,以防攻擊者利用路徑產生攻擊。 //然後重點就講完了 =v=+

[弱點定義]
允許使用者輸入來控制檔案系統操作中使用的路徑,可讓攻擊者存取或修改原本受保護的系統資源,亦可繞過登入驗證。

另外值得一提的是,針對XML能進行竄改攻擊,若程式未檢查來源的竄改的內容並執行,則通能引發SQL Injection 或 XSS 風險。

當發生以下兩種情況的時候,會產生 path manipulation 錯誤:

  1. 攻擊者能夠指定檔案系統操作中所使用的路徑。
  2. 攻擊者可藉由指定資源來取得一般情況下不被允許的權限。

通常 WAF 能擋下大部份這個異常,但若登入驗證寫在後端或是登入後仍有資料來源的不安全的疑慮,當然這個風險還是存在的。
[路徑暴露]
暴露的路徑或檔案,可能是由程式中直接洩露路徑。
風險較大的包含設定檔或資料檔、常用備份檔、壓縮檔…

*.inc *.cfg *.log *.mdb *.xls
*.bak *.old *.tmp *~
*.tar *.zip *.tgz

並籍著目錄跳脫「../」,上傳或竄改設定檔。

[路徑跳脫驗證]
/etc/passwd
帳號名稱/密碼/UID/GID/使用者資訊說明/家目錄/Shell
/etc/shadow
帳號名稱/密碼/最近更動密碼的日期/密碼不可被更動的天數/
密碼重新變更天數/密碼變更期警告天數/密碼失效日/帳號失效日期/保留

[防禦方式]
這個弱點主要是因為管理者未對目錄行為作限制
基本上只要限制好設定檔「.htaccess」或相關屬性的對應即可。

(1)網站動態程式
未於程式碼中限制來源IP
未於程式碼中確認存取者身份
未於程式碼中限制瀏覽流程
(2)網站伺服器
未確認存取者身份
未限制瀏覽流程
未修補網站伺服器弱點

[驗證工具]
可利用檢測工具 DotDotPwn 來自我檢查主機是否有目錄遊走之弱點.
DotDotPwn 是利用 Perl 所撰寫的目錄遊走掃瞄工具。
可至官方 Blog 下載最新版本:(http://dotdotpwn.blogspot.tw/)
因為是使用 Perl 所撰寫,所以必須在本機安裝 Perl 所需要的編譯器。
Perl 官方網站下載(http://www.perl.org/get.html)。
使用 ActivePerl 或者 Strawberry 皆可。
不同通訊協定皆可使用 DotDotPwn 進行掃描,
所以在使用前,請先至CPAN(http://www.cpan.org/)下載並將下列這些通訊協定模組置於
*:\Perl64\lib 中,以便 DotDotPwn 調度使用。
[手動驗證]
簡單的驗證方式就是在網址列的問號後面輸入「../../」是否能存取到上一層的路徑,那可能就會有這樣的弱點。
但不一定打的進去,如果有存在部份機敏資料或是執行程式,就會有一定的風險。

[弱點範例]
例如,程式可能會給攻擊者覆寫特定檔案的權限,或是在攻擊者控制的配置下執行程序。
範例 1:以下的程式碼使用 HTTP 要求的輸入建立一個檔案名稱。程式設計師沒有考慮到攻擊者能夠提供檔案名稱類似「../../tomcat/conf/server.xml」的可能性,這會導致應用程式刪除本身其中一個組態設定檔案。

String rName = request.getParameter("reportName");
File rFile = new File("/usr/local/apfr/reports/" + rName);
...
rFile.delete();

範例 2:以下的程式碼使用來自於組態設定檔案的輸入,來決定打開哪個檔案並返回給使用者。如果程式需具權限才能執行,且惡意使用者可以變更組態設定檔案,則他們可以使用程式來讀取系統中結尾副檔名為 .txt 的所有檔案。

fis = new FileInputStream(cfg.getProperty("sub")+".txt");
amt = fis.read(arr);
out.println(arr);

有人認為在行動環境中,典型的弱點 (例如 Path Manipulation) 不會產生影響,因為使用者為何會攻擊自己呢?但是請謹記,行動平台的本質是從多種來源下載,並在相同裝置上一起執行的應用程式。在金融應用程式旁執行惡意程式碼的可能性很高,這必然會擴大行動應用程式的受攻擊面,將程式之間的通訊包括在內。

[程式修補範例]
Fortify 修補範例:https://vulncat.hpefod.com/zh-tw/weakness?q=Path%20Manipulation


上一篇
[Day03]原始碼檢測x弱點修補X驗證攻擊-SQL Injection
下一篇
[Day05]原始碼檢測x弱點修補X驗證攻擊-Cross site scripting
系列文
資安x系統x絕對領域47

1 則留言

0
Kathy Lai
iT邦新手 5 級 ‧ 2016-12-12 11:27:41

請教一下,像是「../../tomcat/conf/server.xml」這種的避免方式,是設定使用者的權限解決嗎?(例如限定家目錄 & owner)

有程式優化的sample嗎?謝謝分享!

虎虎 iT邦新手 3 級‧ 2016-12-12 11:41:39 檢舉

嗨嗨~Kathylai 其實我們只要把相關的檔案屬性做權限控管就能避免掉這個問題惹科科 XD

程式語言PHP
開發工具 Sublime(暫無使用framework)

虎虎的回覆我看不大懂,我做一下功課再來提問,非常感謝哦!

虎虎 iT邦新手 3 級‧ 2016-12-12 12:05:23 檢舉

其實就tomcat的話,直接刪掉Sample資料夾就好了 =v=+

我要留言

立即登入留言