DBShop前台RCE
前言
?處理重裝系統(tǒng)的Controller在判斷是否有鎖文件后用的是重定向而不是exit,這樣后面的邏輯代碼還是會(huì)執(zhí)行,導(dǎo)致了數(shù)據(jù)庫(kù)重裝漏洞和RCE。
正文
?InstallController.php中除了indexAction大多數(shù)的Action都是使用checkInstallStep()來(lái)判斷系統(tǒng)是否已經(jīng)安裝,但是該方法中判斷完后并沒(méi)有exit,而是return+重定向,這樣返回之前的Action后還是會(huì)執(zhí)行接下來(lái)的代碼。
?
再看下checkMysqlConnectAction,該方法一是用于檢測(cè)數(shù)據(jù)庫(kù)是否連接成功,同時(shí)還用請(qǐng)求中的參數(shù)更新數(shù)據(jù)庫(kù)配置文件
當(dāng)數(shù)據(jù)庫(kù)能成功連接時(shí),會(huì)將配置參數(shù)寫(xiě)入/data/Database.ini.php
?
其中這五個(gè)地方是受我們控制的,但是由于程序?qū)?/span>username和password做了校驗(yàn),不讓有單引號(hào),由于在寫(xiě)入配置之前會(huì)先進(jìn)行連接測(cè)試,所以port和localhost也不能隨意修改,于是只能利用dbname了。
先在數(shù)據(jù)庫(kù)中創(chuàng)建如下數(shù)據(jù)庫(kù)
構(gòu)造請(qǐng)求
返回true后再看/data/Database.ini.php
?
訪問(wèn)首頁(yè)
?
當(dāng)然也可以直接綁定遠(yuǎn)程的惡意mysql服務(wù)器,然后結(jié)合MySQL LOAD DATA LOCAL INFILE來(lái)讀取任意客戶端文件
轉(zhuǎn)載于:https://www.cnblogs.com/jinqi520/p/11274729.html
總結(jié)
以上是生活随笔為你收集整理的DBShop前台RCE的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 易优cms后台RCE以及任意文件上传漏洞
- 下一篇: 没开通网银可以绑定微信吗