前言
目標(biāo)是一大學(xué),在一次挖洞過程中遇到個sql注入,嘗試進一步利用擴大危害,漏洞已報送平臺進行了修復(fù)
私信我獲取網(wǎng)絡(luò)安全學(xué)習(xí)資料
1.2000多本網(wǎng)絡(luò)安全系列電子書
2.網(wǎng)絡(luò)安全標(biāo)準(zhǔn)題庫資料
3.項目源碼
4.網(wǎng)絡(luò)安全基礎(chǔ)入門、linux、web安全、攻防方面的視頻
5.網(wǎng)絡(luò)安全學(xué)習(xí)路線圖
sql注入getshell失敗
在id處連續(xù)加兩個單引號都報錯,經(jīng)過探測發(fā)現(xiàn)是數(shù)字型的注入且過濾了空格,這里可以用/**/代替
于是直接上sqlmap
Python sqlmap.py -u url --batch --tamper=space2comment.py –dbs
發(fā)現(xiàn)是dba權(quán)限:
python sqlmap.py -u url --batch --tamper=space2comment.py --is-dba
試了很多方法找web路徑
最后注意到操作系統(tǒng)是FreeBSD
無意中看到這個
char(47)就是’/’,立馬想到可以通過這個遍歷目錄、找路徑
通過從根目錄開始逐層遍歷,最終找到網(wǎng)站根目錄:
寫入shell失敗,轉(zhuǎn)換成16進制規(guī)避單引號還是不行
但是這個注入可以讀取服務(wù)器上的任意敏感文件(包括非web目錄),危害巨大
從其它點繼續(xù)嘗試
讀取sql注入處代碼,發(fā)現(xiàn)并沒有代碼層面的過濾,explode() 函數(shù)把字符串打散為數(shù)組,這里以空格為分隔,取數(shù)組的第一個,變相地過濾了空格,把空格換成內(nèi)聯(lián)注釋就能注入
根據(jù)泄露的數(shù)據(jù)庫賬號、密碼嘗試連接3306端口失敗,估計綁定了本地ip
繼續(xù)遍歷目錄,發(fā)現(xiàn)了MySQL的登陸界面
登錄之后卻是空白界面,讀取處理登錄邏輯的代碼發(fā)現(xiàn)登陸成功直接設(shè)置session但不跳轉(zhuǎn),登陸后直接訪問首頁就行
查一下secure_file_priv,發(fā)現(xiàn)是空值,并沒有限制
嘗試?yán)萌罩緦懭雡ebshell,發(fā)現(xiàn)沒有權(quán)限設(shè)置日志路徑
找到了網(wǎng)站后臺
數(shù)據(jù)庫里面查到的賬號和密碼hash值
在線網(wǎng)站解密hash值得到明文
登錄失敗,讀取一下源碼
發(fā)現(xiàn)是加了鹽的,于是加鹽再解密得到正確密碼
成功登陸后在人員資料管理新增處發(fā)現(xiàn)一個上傳照片的地方
但是只能上傳圖片文件
上傳成功之后,突然想到了sql寫shell失敗是不是因為目錄權(quán)限問題,網(wǎng)站限制了除上傳目錄外其它目錄都不可寫?
于是嘗試寫入shell
成功,果然是目錄寫權(quán)限問題
發(fā)現(xiàn)蟻劍連不上,估計waf攔截了流量。看了一下蟻劍的流量加密,蟻劍流量有一個重要特征就是User-Agent為antSword/版本,另外使用了編碼器的話還要將解碼函數(shù)發(fā)過去,所以解碼函數(shù)這里也是一個特征,需要自定義編碼器和解碼器。
修改
antSword-master/modules/request.js和antSword-master/modules/update.js兩個文件的User-Agent后成功連接,waf僅僅攔截了UA這一明顯特征
反彈shell失敗,nc是基于tcp/udp協(xié)議的,所以可能的原因有:反彈的命令不存在、禁止出站IP、禁止tcp協(xié)議出站端口
確認(rèn)sh存在:
出站端口為訪問外網(wǎng),查詢網(wǎng)絡(luò)連接發(fā)現(xiàn)54454端口可以出站
于是監(jiān)聽54454端口后成功反彈shell
提權(quán)失敗。服務(wù)器內(nèi)核版本過高,無法利用內(nèi)核漏洞提權(quán),嘗試計劃任務(wù)、環(huán)境變量、和suid提權(quán)發(fā)現(xiàn)沒有可以利用的地方,sudo提權(quán)也不行,第三方服務(wù)中udf提權(quán)發(fā)現(xiàn)插件目錄不可寫,幾個文件權(quán)限也配置正常,也沒有發(fā)現(xiàn)其它敏感信息泄露