標題:記一次某大學sql注入到getshell

taibeihacker

Moderator

0x01 前言​

目標是一大學,在一次挖洞過程中遇到個sql注入,嘗試進一步利用擴大危害,漏洞已報送平台進行了修復

0x02 sql注入getshell失败​

在id處連續加兩個單引號都報錯,經過探測發現是數字型的注入且過濾了空格,這裡可以用/**/代替
1049983-20220119230754221-1947063106.png
1049983-20220119230754869-1298361745.png

於是直接上sqlmap
python sqlmap.py -u url --batch --tamper=space2comment.py –dbs
1049983-20220119230755494-268741254.png

發現是dba權限:
python sqlmap.py -u url --batch --tamper=space2comment.py --is-dba
1049983-20220119230756168-93360783.png

試了很多方法找web路徑
最後注意到操作系統是FreeBSD
無意中看到這個
1049983-20220119230756543-1187286406.png

char(47)就是’/’,立馬想到可以通過這個遍歷目錄、找路徑
1049983-20220119230757049-1315630357.png

通過從根目錄開始逐層遍歷,最終找到網站根目錄:
1049983-20220119230757584-367784242.png

寫入shell失敗,轉換成16進制規避單引號還是不行
但是這個注入可以讀取服務器上的任意敏感文件(包括非web目錄),危害巨大

0x03 从其它点继续尝试​

讀取sql注入處代碼,發現並沒有代碼層面的過濾,explode() 函數把字符串打散為數組,這里以空格為分隔,取數組的第一個,變相地過濾了空格,把空格換成內聯註釋就能注入
1049983-20220119230758182-963206539.png

根據洩露的數據庫賬號、密碼嘗試連接3306端口失敗,估計綁定了本地ip
繼續遍歷目錄,發現了mysql的登陸界面
1049983-20220119230758617-1821294693.png

登錄之後卻是空白界面,讀取處理登錄邏輯的代碼發現登陸成功直接設置session但不跳轉,登陸後直接訪問首頁就行
查一下secure_file_priv,發現是空值,並沒有限制
1049983-20220119230759161-800865420.png

嘗試利用日誌寫入webshell,發現沒有權限設置日誌路徑
1049983-20220119230759627-831672158.png
1049983-20220119230759987-857371733.png

找到了網站後台
1049983-20220119230800441-1719840707.png

數據庫裡面查到的賬號和密碼hash值
在線網站解密hash值得到明文
登錄失敗,讀取一下源碼
1049983-20220119230800995-642366195.png
1049983-20220119230801481-2146979083.png

發現是加了鹽的,於是加鹽再解密得到正確密碼
成功登陸後在人員資料管理新增處發現一個上傳照片的地方
1049983-20220119230801913-361154312.png

但是只能上傳圖片文件
1049983-20220119230802435-1701708571.png

上傳成功之後,突然想到了sql寫shell失敗是不是因為目錄權限問題,網站限制了除上傳目錄外其它目錄都不可寫?
於是嘗試寫入shell
1049983-20220119230802982-2133055457.png

成功,果然是目錄寫權限問題
1049983-20220119230803466-2086656888.png

發現蟻劍連不上,估計waf攔截了流量。看了一下蟻劍的流量加密,蟻劍流量有一個重要特徵就是User-Agent為antSword/版本,另外使用了編碼器的話還要將解碼函數發過去,所以解碼函數這裡也是一個特徵,需要自定義編碼器和解碼器。
修改antSword-master/modules/request.js和antSword-master/modules/update.js兩個文件的User-Agent後成功連接,waf僅僅攔截了UA這一明顯特徵
1049983-20220119230803898-1313505746.png

反彈shell失敗,nc是基於tcp/udp協議的,所以可能的原因有:反彈的命令不存在、禁止出站IP、禁止tcp協議出站端口
確認sh存在:
1049983-20220119230804239-313147220.png

出站端口為訪問外網,查詢網絡連接發現54454端口可以出站
1049983-20220119230804626-26010200.png

於是監聽54454端口後成功反彈shell
1049983-20220119230804985-937189033.png

提權失敗。服務器內核版本過高,無法利用內核漏洞提權,嘗試計劃任務、環境變量、和suid提權發現沒有可以利用的地方,sudo提權也不行,第三方服務中udf提權發現插件目錄不可寫,幾個文件權限也配置正常,也沒有發現其它敏感信息洩露

0x04 总结​

1.目標系統中加單引號報錯,但是過濾空格,可以用/**/代替繞過2.使用sqlmap中的space2comment.py腳本進行注入python sqlmap.py -u http://ip/newform.php?id=123 --batch --tamper=space2comment.py –dbs //讀取數據庫名python sqlmap.py -u http://ip/newform.php?id=123 --batch --tamper=space2comment.py --is-dba //查看是否為dba,該系統是dba權限3.通過NAMP掃描,目標系統是freedb(sunos也可以),可以同構load_file()函數直接遍歷目錄3.通過load_file()函數逐漸讀取目標系統目錄http://ip/newform.php?id=123/**/union/**/select/**/1 ,LOAD_FILE('/'),3,4,5,6,7,83.讀取到網站根目錄http://ip/newform.php?id=123/**/uni...登錄pmbp數據庫管理員頁面,但是顯示空白不能跳轉到後台管理頁面,直接訪問數據庫管理頁面。 6.查詢SQL語句查詢權限,顯示空置,並沒有對寫入進行限制show VARIABLES LIKE 'secure_file_priv'7.但是通過mysql的log寫入shell,是不成功的,可能對寫入的目錄權限有限制。 8.通過目錄掃描,找到目錄系統的後台管理,這裡的後台用戶名和密碼,可通過sqlmap直接讀取出用戶名和密碼hash,密碼hahs直接通過md5進行成功解密,不能成功登陸到系統,可能密碼不對。 9.通過load_file()函數讀取後台管理頁面,發現密碼是加鹽的,這裡加鹽再解密得到正確密碼,並成功登陸到目標後台10.在後台的資料管理的照片處,可直接上傳圖片,並顯示圖片的絕對路徑地址。 11.參數通過mysql將蟻劍一句話寫入到圖片的絕對路徑地址下。可成功寫入12.通過螞劍連接一句話,但是顯示連接不成功,可能被WAF攔截了,這裡需要修改螞劍的User-Agent,以及使用編碼器baa64的編碼繞過WAF攔截,並成功鏈接。
修改antSword-master/modules/request.js和antSword-master/modules/update.js兩個文件的User-Agent後成功,並使用碼編碼bas6413.通過nc進行反彈,發現反彈失敗,發現目標系統禁止出站IP、禁止tcp協議出站端口,並發現出站端口為訪問外網,查詢網絡連接發現54454端口可以出站。 nc -lvvp 544454原文鏈接:https://xz.aliyun.com/t/10527
 
返回
上方