PHP代碼審計之----任意文件操作

2021-12-29 peanut雜貨鋪

php代碼審計中和文件相關的操作主要包含如下幾種:

文件包含: include/require/include_once/require_once/spl_autoload文件讀取: file_get_contents/fread/readfile/file/highlight_file/show_source`文件寫入:file_put_contents/fwrite/mkdir/fputs文件上傳:move_uploaded_file/copy/rename文件上傳漏洞

通常文件上傳的流程如下:

那麼在這個流程中常見的邏輯錯誤如下:

使用原始文件名,導致存在Apache或Nginx解析漏洞等

關於PHP 中$_FILES 函數

如下代碼:

<form enctype="multipart/form-data" action="upload.php" method="post"> 
<input type="hidden" name="MAX_FILE_SIZE" value="1000"> 
<input name="myFile" type="file"> 
<input type="submit" value="上傳文件"> 
</form> 

$_FILES數組內容如下:$_FILES['myFile']['name']客戶端文件的原名稱。$_FILES['myFile']['type']文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如"image/gif"。$_FILES['myFile']['size']已上傳文件的大小,單位為字節。$_FILES['myFile']['tmp_name']文件被上傳後在服務端儲存的臨時文件名,一般是系統默認。可以在php.ini的upload_tmp_dir指定

歷史漏洞案例:

https://php.mengsec.com/bugs/wooyun-2015-0125592.htmlhttps://php.mengsec.com/bugs/wooyun-2015-0125592.htmlhttps://php.mengsec.com/bugs/wooyun-2014-048841.htmlhttps://php.mengsec.com/bugs/wooyun-2014-048760.html文件包含漏洞

文件包含漏洞比較特殊,基本上可以是PHP 獨有的一種漏洞

PHP 文件包含漏洞造成的危害:

文件包含漏洞常見的位置:

對於文件包含漏洞的突破點:

可以嘗試尋找被包含文件:上傳文件,臨時文件,Session文件,日誌文件後綴無法控制的情況:\0 截斷(php5.3.4之後不可用), 協議利用

歷史漏洞案例:

https://php.mengsec.com/bugs/wooyun-2014-056641.htmlhttps://php.mengsec.com/bugs/wooyun-2014-057567.html文件刪除漏洞

Discuz!X ≤3.4 任意文件刪除漏洞: https://paper.seebug.org/411/

文件刪除漏洞危害也是非常大的:

相關焦點

  • 搜索 PHP代碼審計之旅
    但如果這些代碼是分布在一套源碼中(如CMS),需要我們去發現,去找到並會利用,就需要有一定的查找以及利用思路,這次測試的是BlueCMS1.6,重要不在於去復現這個CMS的漏洞,而在先了解一下整個審計思路還有過程是怎麼樣的,去鍛鍊自己的審計能力。由於我比較菜,所以有錯誤的地方也請師傅們指正。何為白盒、黑盒、灰盒測試審計代碼會經常遇到這三個名詞,這又代表是什麼意思那?
  • PHP代碼審計
    代碼審計顧名思義就是檢查原始碼中的缺點和錯誤信息,分析並找到這些問題引發的安全漏洞,並提供代碼修訂措施和建議
  • PHP代碼審計要點
    知其然,且知其所以然)本文若有寫錯的地方,還請各位大佬斧正 :1、代碼審計定義代碼審計 是指對原始碼進行檢查,尋找代碼中的bug,這裡主要尋到可導致安全問題的bug。這是一項需要多方面技能的技術,包括對編程的掌握(能看懂代碼的邏輯)、漏洞形成原理的理解、系統和中間件等的熟悉。
  • 【代碼審計】PHP代碼審計之CTF系列(2)
    PS:接上篇PHP代碼審計之CTF系列(1)challenge 9訪問頁面,查看源碼<?>觀察代碼,發現主要獲取的用戶輸入的IP參數,然後進行ping命令操作。而且其中過濾很多管道符,不過依然可以使用%0als進行繞過。payload:?ip=127.0.0.1%0als可以查看到flag.php位置,在使用cat命令讀取flag.php文件內容。
  • 代碼審計之php.ini配置詳解
    在php.ini中可以使用環境變量User.ini自php5.3.0起,PHP支持基於每個目錄的.htaccess風格的INI文件。此類文件僅被CGI/Fastcgi sapi處理。> 實際的代碼審計中如果找到可執行命令的變量,可以先檢測環境的配置Note:與此相關的配置還有safemodeexecdir,disableclasses=,disable_functions=fopen,unlink open_basedir =  作用: 這個設置將用戶訪問文件的活動範圍限制在指定的區域
  • 二.PHP代碼審計涉及到的超全局變量
    · 出品|安全幫(www.secbang.com)概述:安全幫專注安全教育大牛繞過 針對零基礎小白【本章目的】掌握代碼審計中常用的代碼調試函數$GLOBALS--引用全局作用域中可用的全部變量$GLOBALS全局變量用於在PHP腳本中的任意位置訪問全局變量(從函數或方法中均可)。PHP在名為$GLOBALS[index]的數組中存儲了所有全局變量。變量的名字就是數組的鍵。Demo1. Test.php中定義變量$secbang,值為secbanger。
  • PHP代碼審計Day1 - in_array函數缺陷
    前言大家好,我們是紅日安全-代碼審計小組。最近我們小組正在做一個PHP代碼審計的項目,供大家學習交流,我們給這個項目起了一個名字叫 PHP-Audit-Labs 。現在大家所看到的系列文章,屬於項目 第一階段 的內容,本階段的內容題目均來自 PHP SECURITY CALENDAR 2017 。
  • 【代碼審計】PHP代碼審計之CTF系列(3)
    payload:http://127.0.0.1/ctf/1.php?file=http://127.0.0.1//ctf/1.php?如果您還想在 include_path(在 php.ini 中)中搜索文件的話,請設置該參數為 '1'。context 可選。規定文件句柄的環境。context 是一套可以修改流的行為的選項。若使用 NULL,則忽略。start 可選。規定在文件中開始讀取的位置。該參數是 PHP 5.1 中新增的。max_length 可選。
  • PHP代碼審計之漫畫CMS
    最近一直在學習代碼審計的相關課程,也在找一些通用的CMS在練習,剛好在安全群裡認識了一位志同道合的道友,於是就一起研究學習,前期還是不怎麼太會,所以也一直兩個人相互傳授經驗和交流,不過還好經過不斷的奮戰和努力終於出來了第一個洞,以下是相關步驟詳情,請各位大佬批評指正:這個CMS是PHP採用路由方式開發,前期總是找不到類和函數的調用地方,找了兩天才有所發掘,找到sys/apps
  • 【陳年舊文】PHP SECURITY CALENDAR2017 代碼審計(一)
    class_exists ( string $class_name [, bool $autoload = true ] ) : bool 檢查類是否已經定義 當第二個參數autoload為true(默認也為true)時,若class_exists檢測到類未定義則會默認調用__autoload在該處,因為class_exists默認調用
  • PHP任意文件上傳漏洞(CVE-2015-2348)
    微信號:freebuf安全研究人員今天發布了一個中危漏洞——PHP任意文件上傳漏洞
  • Python代碼審計實戰案例總結之CRLF和任意文件讀取
    介紹Python代碼審計方法多種多樣,但是總而言之是根據前人思路的遷移融合擴展而形成。
  • PHP代碼審計四
    ,覆蓋掉原來白名單的列表,導致任意文件上傳;用戶註冊頁面控制沒覆蓋的未初始化變量導致SQL思路$$extract()函數parse_str()函數執行import_request_variables()函數如下代碼:<
  • ZZZPHP1.61 代碼審計-從SQL注入到Getshell
    近期有很多小夥伴在後臺留言想看關於代碼審計的文章,其實有關審計的文章網上資源是比較多的,但是從代碼審計開始到結束的這類文章卻少之甚少。
  • php代碼審計學習之函數缺陷
    $this->file['name'] ); } }}$challenge = new Challenge($_FILES['solution']);代碼為一個文件上傳的代碼,如果文件名存在於1-24中,則上傳文件in_array
  • 代碼審計之PHPWIND
    圖1跟蹤代碼執行當本地上傳時會進入uploadAction函數,先進行了用戶驗證然後新建一個文件上傳的PwApplicationUpload類開始執行上傳具體代碼如下,因此攻擊者可以偽造包含manifest.xml文件的zip包,zip包除了偽造的manifest.xml還包含php後面文件,安裝成功後木馬即存在自解壓的模板目錄下,直接getshell。
  • XDCMS V1 代碼審計之旅
    ,找到重要文件,如過濾函數、變量集中定義文件等3:訪問特定功能點,進行特定代碼審計,也就是說一個功能點看一段代碼(這裡如果出現了過濾函數,基本上可以在2中找到)審計之旅先打開首頁看看,看到有登陸框和註冊框,那就先從註冊框開始審計
  • 代碼審計入門實戰
    這款軟體能夠發現SQL注入、代碼/命令執行、文件包含、文件上傳、拒絕服務、XSS、信息洩露、任意URL跳轉等漏洞。查看源碼/picture.php文件可以發現,當$_GET[『action』]為rate時,會調用文件/include/function_rate.inc.php文件中的rate_picture方法,漏洞就存在於這個方法中:而在rate_picture方法中,使用了in_array函數對$rate變量進行檢測,判斷$rate
  • 一道CTF來審計學習PHP對象注入
    考點PHP對象注入、代碼審計、序列化分析信息收集題目上來給了一個文件上傳的服務,沒有直接去測試,對網站進行敏感信息收集,發現存在robots.txt洩露User-agent: *Disallow: /index.txt訪問index.txt獲取網站源碼<?
  • [網絡安全] 三十九.WHUCTF (2)代碼審計和文件包含漏洞繞過(ezphp、ezinclude)
    感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!主界面顯示如下圖所示:');}會代碼審計嘛233332.解題思路本題建議大家本地搭建環境進行測試,這個題目分為三段繞過測試。