别致的上传思路导致getshell的案例
0x01 前言
在某次授權的項目中,客戶只要getshell漏洞,經過一番折騰,最后成功拿下shell,完成項目交付,本文將過程和遇到的問題和一些小tips分享給大家。
0x02 SQL注入
經過資產收集,在資產中,找到某個子域名,打開就是個登錄框
輸入手機號和密碼,驗證碼進行登錄,結果數據包中并沒有驗證碼,2333
隨手加上' 居然報錯了,存在mysql的注入,還報錯了物理路徑,還有密碼列名為usepwd(后面有用到)
要是root權限是不是就美滋滋了,結果多想了,不是root權限.
嘗試了用or '1'='1也沒成功登錄,只能老老實實去注入查賬號密碼,然后登錄進去看看有沒有其他點可以拿shell。
手工看后沒有過濾,可以使用select from,那跑數據還是交給sqlmap吧。
按照步驟,跑庫,跑表。
可是這個數據庫是通用的,表名就有400多個,帶User關鍵字的都有20多個。
嘗試了表名locus_user
跑出來的賬號密碼,賬號不是手機號,密碼也登陸不上。
就跑第二個,第三個,都不對。
想了想,登錄后還不知道有沒有其他點能用,注入
一直這么跑,有些表也很大,也很敏感,就不敢跑了,關機睡覺,第二天換其他子域名去看
但是第二天下午還是想看看能不能搞下來,就繼續看這個站
回過頭來想到userpwd的字段,mysql也有存儲了表和列結構
想到直接查那些表名有userpwd的字段
直接----sql-shell去執行,這次只得到三個表名
最終在coupon_user獲得賬號密碼
133xxxx3333/xxxx
0x02文件上傳
使用賬號密碼直接登錄
在后臺一堆找,都是查詢,有個活動編輯的功能,里面有上傳圖片
直覺告訴我這里可以shell,興高采烈的上傳抓包:
結果上傳接口為uploader/uploadTencentCloud,文件保存到TencentCloud,沒保存在本地,這也沒辦法shell啊
不甘心找其他上傳的地方,如下:
還是上傳在騰訊云,整個站都使用的uploadTencentCloud的接口上傳。
陷入僵局,冷靜思考了一下理一理思路,
上傳騰訊云,上傳名字也叫uploadTencentCloud,會不會是開發新開發的接口,怕服務器保存圖片太多了,專門開發的接口。
會不會存在upload的方法。
直接嘗試一下
真被我猜中了,存在upload的上傳接口
為了驗證自己的想法,嘗試了其他站,有些站也有這個小問題,開發不刪除原接口,根據業務要求直接寫了新接口,修改了前端。
嘗試將uploader/uploadTencentCloud改成uploader/upload
成功上傳到本地,喜出望外,盲猜一手文件存在了upload目錄
成功getshell
技術總結
1.當mysql注入數據庫里表名很多,找不到列名時,可根據報錯的列名或者參數值去查詢表名;
2.遇到二次開發的上傳接口,如uploadTX、uploadOSS、uploadS3時,可嘗試uploa接口是否存在。
?
總結
以上是生活随笔為你收集整理的别致的上传思路导致getshell的案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 命令执行无回显的一些姿势
- 下一篇: 一个“登录框“引发的安全问题