邏輯漏洞(業務邏輯)dami CMS

邏輯漏洞(業務支付邏輯漏洞)dami CMS

0x01 業務邏輯簡介

業務邏輯指的是一個系統或應用程序中的實際業務規則和流程。它描述了如何處理特定的業務需求、數據和操作。業務邏輯通常是根據特定行業或組織的需求而設計的。

在軟件開發中,業務邏輯是指應用程序處理數據的方式、進行計算和決策的規則,以及用戶執行特定操作時系統的響應方式。這些規則和流程定義了系統的行為,并確保系統能夠按照預期的方式工作。

舉例來說,對于在線購物系統,業務邏輯包括但不限于以下內容:

  • 用戶添加商品到購物車后如何計算總價;
  • 用戶下單后的支付和物流處理流程;
  • 管理員如何管理商品庫存和價格;
  • 用戶的個人信息如何存儲和保護。

業務邏輯通常在軟件開發過程中被轉化為代碼,實現特定的功能和需求。在安全方面,了解業務邏輯對于發現潛在的安全漏洞和保護系統安全也非常重要。

0x02 dami靶場

dami cms 靶場是一個使用thinkphp2.1版框架搭設的網站,它是thinkphp的早期版本,目前也很少在使用。

ThinkPHP是一個基于PHP語言的開源Web應用框架,采用MVC(Model-View-Controller)設計模式,有助于更好地組織應用程序代碼。它提供了豐富的工具和函數庫,簡化了開發流程,包括強大的路由功能、模板引擎和ORM支持。

image-20231122143400469

首先通過注冊頁面,多注冊幾個賬號,用于測試越權。

image-20231122145651559

漏洞 一

? 驗證碼驗證漏洞,未設置過期時間,導致驗證碼一直有效,會被暴力破解利用。

  • 經測試,驗證碼機制為頁面刷新才會重新生成新的驗證碼
  • image-20231122151818492

漏洞 二

支付漏洞,訂單數量未嚴格限制,導致可通過抓包修改負數,導致支付漏洞

image-20231122152244389

支付選項中,分別為 支付寶支付、貨到付款、站內支付,選擇站內支付,點擊購買后,進行抓包。

image-20231122152814511

發現前端使用POST的方式,發送的訂單信息給后端進行處理。發送的內容經過了URL編碼,通過解碼了解到發送為以下內容

  • id[]=69: 一個 ID 列表,包含一個 ID 為 69 的條目。
  • pic[]=\/Public\/Uploads\/thumb\/thumb_1393206337.jpg: 圖片列表,指向一個圖片路徑 /Public/Uploads/thumb/thumb_1393206337.jpg
  • name[]=大米CMS手機開發專版: 名稱列表,包含一個名稱為“大米CMS手機開發專版”的條目。
  • gtype[]=灰色: 類型列表,包含一個類型為“灰色”的條目。
  • qty[]=1: 數量列表,包含一個數量為 1 的條目。
  • price[]=5400: 價格列表,包含一個價格為 5400 的條目。
  • realname=123: 真實姓名為 “123”。
  • tel=123: 電話號碼為 “123”。
  • province=寧夏city=銀川市area=市轄區: 地址信息,包括省份為“寧夏”,城市為“銀川市”,地區為“市轄區”。
  • address=: 地址為空。
  • trade_type=2: 交易類型為 2。
  • iscart=0: 是否在購物車中為 0。
  • __hash__=7fe310a6298f63572cae4f0f818eafd9: 可能是用于驗證或身份驗證的哈希值。

在支付漏洞中,黑客最想干的事情就是白嫖,所以在這一串信息中,我們著重關注與金錢相關的的內容,那么我們可以嘗試去修改qty[]price[]兩條信息,來嘗試修改數量或金額來達到白嫖的目的。

由于我們注冊的賬號并沒有錢,所以我修改qty[]為-1,來嘗試購買。

image-20231122154457393

通過回顯發現,已經成功下單,通過站內查詢,我購買了一個產品,網站又給了我5400元,這是又白嫖,又拿錢。

image-20231122154626339

現在賬號有錢了,繼續嘗試,查看price[]在金額參數中是否還存在漏洞。

image-20231122155417288

price[]參數值改為1,回顯頁面顯示余額不足,應該是做了相對應的限制,繼續嘗試。

image-20231122160052583

多次嘗試后,任然不行,price[]參數應該是后端已經根據id[]鎖定了。所信把qty[]改為-100,price[]改為16000,回顯訂單提交成功,但是訂單數量應該變了,金額應該不會有變化。

image-20231122160541339

與我猜想是一樣,價格金額仍然是6000元,數量卻變成是-100,而我的余額變成60萬5千400元,由此也可以看出業務邏輯漏洞的可怕之處,空手套白狼的一把好手!!!

代碼分析

ThinkPHP采用了自己的一套約定俗成的文件架構,這種方式有別于一些其他框架。

在ThinkPHP中,index.php文件是整個應用的入口文件,它通常放置在Web服務器的根目錄中。通過這個入口文件,整個應用被啟動并初始化。

通常,ThinkPHP的核心代碼會放置在/lib/目錄下。在這個目錄中,包含了各種類文件,這些文件定義了框架的核心功能和組件。這些類文件包括路由處理、模板引擎、數據庫操作、安全特性等。

在整個應用的生命周期中,index.php文件會加載這些核心類文件,并根據請求的路由信息調用相應的控制器和方法。這種架構隱藏了很多細節,使得開發者可以更專注于業務邏輯,同時框架會自動處理很多底層工作。

此次漏洞挖掘我們是經過,www.dami.me/index.php?s=/Member/dobuy.html,那么我們就應該從Web文件下去找類文件/Member下去找dobuy()方法。

image-20231122161956258

if($trade_type ==3){
$title='';
$total_fee =0;
$total_num =0;
for($i=0;$i<count($_POST['id']);$i++){
$price = (float)M('article')->where('aid='.intval($_POST['id'][$i]))->getField('price');
if(!is_numeric($_POST['id'][$i]) || !is_numeric($_POST['price'][$i]) || !is_numeric($_POST['qty'][$i])){continue;}
$total_fee += (intval($_POST['qty'][$i]) * $price)*1;	
}
$have_money = M('member')->where('id='.$_SESSION['dami_uid'])->getField('money');
if($have_money < $total_fee){
$this->assign('jumpUrl',U('Member/chongzhi'));
$this->error('您的余額不足,請充值!');exit();
}
for($i=0;$i<count($_POST['id']);$i++){
if(!is_numeric($_POST['id'][$i]) || !is_numeric($_POST['price'][$i]) || !is_numeric($_POST['qty'][$i])){continue;}$data['gid'] = $_POST['id'][$i];$data['uid'] = $_SESSION['dami_uid'];	$data['price'] = (float)M('article')->where('aid='.$data['gid'])->getField('price');//必須$data['province'] = $_POST['province'];$data['city'] = $_POST['city'];$data['area'] = $_POST['area'];$data['sh_name'] = $_POST['realname'];$data['sh_tel'] = $_POST['tel'];$data['address'] = $_POST['address'];$data['group_trade_no'] = $group_trade_no;$data['out_trade_no'] = "DB".time()."-".$_SESSION['dami_uid'];	$data['servial'] = $_POST['gtype'][$i];$data['status'] = 1;//已付款等待發貨$data['trade_type'] = 3;$data['addtime'] = time();$data['num'] = (int)$_POST['qty'][$i];$total_num += $data['num'];$trade->add($data);if(strlen($title)<400){$title .= $_POST['name'][$i]."&nbsp;&nbsp;數量:".$data['num'].' 單價:'.$data['price'].'<br>';}
}

在第6行的代碼中,可以看到價格并不是由前端頁面傳入到$data變量中,而是從名為 article 的數據庫表中,根據指定條件(aid 等于 $data['gid']),獲取對應記錄的 price 字段值,并將其轉換為浮點數類型,最后存儲在 $data['price'] 中。所以我們在BP中修改price沒有任何效果。

然而在第8行代碼中,qty 只做了轉換為整型的操作,驗證的不夠驗證,所以導致了該漏洞的生成.

在初步的代碼審計后,感覺該靶場應該還存在很多漏洞,在日后的博客更新中在慢慢挖掘。

0x03 總結

業務支付漏洞的產生通常源于在編寫支付邏輯時的不嚴謹。這些漏洞可能是因為開發者未能充分考慮各種支付場景、未進行全面的輸入驗證、或者對支付過程中的邊界條件和異常情況缺乏考慮。一旦這些漏洞被利用,可能會造成巨大的損失。

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

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

相關文章

零編程基礎Python的全面學習指南

文章目錄 前言什么是編程&#xff1f;Python代碼對應的機器碼準備開始Windows變量類型整型字符串型布爾類型字符串連接和整數相加if 語句捕獲用戶輸入導入MacWindows游戲時間&#xff01;小結關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Pyt…

磐舟CI使用說明及案例

整體介紹 磐舟作為一個devops產品&#xff0c;它具備基礎的CI流水線功能。同時磐舟的流水線是完全基于云原生架構設計的&#xff0c;在使用時會有一些注意事項。這里首先我們要了解磐舟整體的流水線打包邏輯。 文檔結構說明 一般來說&#xff0c;磐舟推薦單個業務的標準git庫…

反編譯-ApkTool

ApkTool下載地址&#xff1a; Apktool | ApktoolA tool for reverse engineering Android apk fileshttps://apktool.org/ 1、使用 apktool 解包 執行 java -jar apktool_2.4.1.jar d demo.apk -o demo 命令 java -jar apktool_2.4.1.jar d demo.apk -o demo 其中 d 后面是…

Nevron Vision for .NET 2023.1 Crack

Nevron Vision for .NET 適用于桌面和 Web 應用程序的高級數據可視化 Nevron Vision for .NET提供最全面的組件&#xff0c;用于構建面向 Web 和桌面的企業級數據可視化應用程序。 該套件中的組件具有連貫的 2D 和 3D 數據可視化效果&#xff0c;對觀眾產生巨大的視覺沖擊力。我…

基于window10的遠程桌面報錯:要求的函數不受支持 的問題解決方法

基于window10的遠程桌面報錯&#xff1a;要求的函數不受支持 的問題解決方法 設置方法&#xff1a; 一、WINR 在框內輸入gpedit.msc 二、依次打開 計算機配置----管理模板-----系統—憑據分配—加密數據庫修正–改為以啟用—易受攻擊 第一步&#xff1a; 第二步&#xff1a;…

并查集總結

并查集簡介 并查集是一種可以動態維護若干個不重疊的結合&#xff0c;并支持合并與查詢的數據結構 并查集是一種樹狀的數據結構&#xff0c;可以用于維護傳遞關系以及聯通性。 并查集有兩種操作&#xff1a; find&#xff1a;查詢一個元素屬于哪個集合merge:合并兩個集合 模…

爆款文章有訣竅,內容創作者如何能持續產出優質內容

內容營銷人有沒有這么一種共鳴&#xff1a;10 萬 那么多&#xff0c;為什么不能多我一個&#xff1f; 通常&#xff0c;我們把瀏覽量 / 閱讀量高、轉評贊數量高的內容看作爆款&#xff0c;而數據如果達到 10 萬 則是超級爆款。因為&#xff0c;閱讀量高意味著內容得到了大量的曝…

【Linux】使用Makefile自動化編譯項目:簡化開發流程、提高效率

文章目錄 示例一&#xff1a;編譯一個進度條程序示例二&#xff1a;編譯一個簡單的程序gcc的幾個選項結論 當你開始一個新的軟件項目時&#xff0c;編寫一個好的Makefile是非常重要的。Makefile是一個文本文件&#xff0c;用于指定如何構建和編譯項目。它定義了目標文件、依賴關…

8年老鳥整理,自動化測試-準備測試數據詳細...

目錄&#xff1a;導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結&#xff08;尾部小驚喜&#xff09; 前言 大部分類型的測試…

基于C#實現Bitmap算法

在所有具有性能優化的數據結構中&#xff0c;我想大家使用最多的就是 hash 表&#xff0c;是的&#xff0c;在具有定位查找上具有 O(1)的常量時間&#xff0c;多么的簡潔優美&#xff0c;但是在特定的場合下&#xff1a; ①&#xff1a;對 10 億個不重復的整數進行排序。 ②&am…

python獲取透明圖

import cv2 import os import numpy as nproot "./test" for file in os.listdir(root):# 讀取圖片image cv2.imread(os.path.join(root, file), cv2.IMREAD_UNCHANGED)new np.zeros((image.shape[0], image.shape[1], image.shape[2]), np.uint8)# 檢查圖片是否為…

AI原生應用為百度帶來新增量

我是盧松松&#xff0c;點點上面的頭像&#xff0c;歡迎關注我哦&#xff01; AI將徹底改變每一個行業!得益于AI和基礎模型的驅動&#xff0c;百度在AI原生應用領域厚積薄發。 11月21日&#xff0c;百度Q3財報發布&#xff0c;數據顯示&#xff1a;三季度營收達344.47億元&…

Redis篇---第九篇

系列文章目錄 文章目錄 系列文章目錄前言一、如果有大量的 key 需要設置同一時間過期,一般需要注意什么?二、什么情況下可能會導致 Redis 阻塞?三、緩存和數據庫誰先更新呢?前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊…

Axios簡單使用與配置安裝-Vue

安裝Axios npm i axios main.js 導入 import Axios from axios Vue.prototype.$axios Axios簡單發送請求 get getTest() {this.$axios({method: GET,url: https://apis.jxcxin.cn/api/title?urlhttps://apis.jxcxin.cn/}).then(res > {//請求成功回調console.log(res)}…

uiautomator2快速入門app自動化測試教程

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、環境準備1.安裝軟件2.安裝庫 二、adb 連接手機1. 準備工作2. 第一種連接方式&#xff1a;USB連接3. 第二種連接方式&#xff1a;WLAN連接4. 第三種連接方式…

②⑩ 【MySQL Log】詳解MySQL日志:錯誤日志、二進制日志、查詢日志、慢查詢日志

個人簡介&#xff1a;Java領域新星創作者&#xff1b;阿里云技術博主、星級博主、專家博主&#xff1b;正在Java學習的路上摸爬滾打&#xff0c;記錄學習的過程~ 個人主頁&#xff1a;.29.的博客 學習社區&#xff1a;進去逛一逛~ MySQL日志 ②⑩ MySQL日志&#xff1a;錯誤日志…

SpringBoot3.x最簡集成SpringDoc-OpenApi

為什么使用SpringDoc 在SpringBoot低版本時一般使用Swagger掃描接口生成Json格式的在線文檔&#xff0c;然后通過swagger-ui將Json格式的文檔以頁面形式展示文檔。可惜遺憾的是swagger更新到3.0.0版本(springfox)后不更新了。 SpringBoot3.x以后需要的JDK版本最低為Java17&…

MQ和redis的內部原理一些總結

首先&#xff0c;先知道內部原理&#xff1b;其次&#xff0c;就是查官方文檔實戰了。 但是如果不熟悉內部原理&#xff0c;那么僅僅只是安裝官方文檔&#xff0c;并不能排除跟蹤問題和故障、預防風險等策略&#xff1b; 以下總結圖解&#xff1a;&#xff08;mysql 8.0新增的…

YOLO目標檢測——衛星遙感艦船檢測數據集下載分享【含對應voc、coco和yolo三種格式標簽】

實際項目應用&#xff1a;衛星遙感艦船檢測數據集說明&#xff1a;衛星遙感艦船檢測數據集&#xff0c;真實場景的高質量圖片數據&#xff0c;數據場景豐富&#xff0c;含船一個類別標簽說明&#xff1a;使用lableimg標注軟件標注&#xff0c;標注框質量高&#xff0c;含voc(xm…