程式碼審計——檔案操作漏洞概述
阿新 • • 發佈:2018-12-16
0x00 前言
如飢似渴的學習ing。
0x01 檔案包含漏洞概述
本地檔案包含是指只能包含本機檔案的檔案包含漏洞,大多出現在模組載入、模板載入和cache呼叫這些地方。
1.遠端檔案包含
可以包含遠端檔案的包含漏洞,遠端檔案包含需要設定allow_url_include=On.
2.檔案包含截斷
大多數的檔案包含漏洞都是需要階段你的,正常程式裡面包含的檔案diamante一般是include<…>
2.1 截斷
使用%00截斷
2.2 利用多個英文.和/來截斷
不收GPC的限制。PHP 5.3 修復
0x02 檔案讀取漏洞
1.挖掘經驗
1.1 黑盒
先黑盒看看功能點對應的檔案,再去讀檔案。
1.2 白盒
- file_get_contents()
- highlight_file()
- fopen()
- readfile()
- fread()
- fgetss()
- fgets()
- parse_ini_file()
- show_source()
- file() 使用php://filter來讀取檔案
0x03 檔案上海竄漏洞
1.挖掘經驗
1.1 白盒
- move_uploaded_file()
1.1.1 未過濾或本地過濾
1.1.2 黑名單副檔名過濾
1.1.3 檔案頭 content-type驗證繞過
0x04 檔案刪除漏洞
1.挖掘經驗
1.1黑盒
檢視可不可以刪除某個檔案。
1.2 白盒
- unlink()
0x05 檔案操作漏洞防範
1. 通用檔案操作防禦
1.1 漏洞利用點
- 由越權操作引起的可以操作未授權操作的檔案
- 要操作更多檔案需要跳轉目錄
- 大多都是直接在請求中傳入檔名。
1.2 防禦
- 對許可權的管理,未授權使用者在未授權的情況下不能進行檢視和刪除等操作。
- 將檔名路徑id等以md5的形式進行儲存在資料庫中。
- 避免目錄跳轉
2.檔案上傳漏洞防範
- 白名單方式加過濾副檔名,使用in_array或者三等於來對比副檔名。
- 儲存上傳的檔案時重新命名檔案。