1. 程式人生 > >程式碼審計——檔案操作漏洞概述

程式碼審計——檔案操作漏洞概述

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或者三等於來對比副檔名。
  • 儲存上傳的檔案時重新命名檔案。