精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 格式化字符串漏洞(Django為例)

安全 漏洞
在C語言里有一類特別有趣的漏洞,格式化字符串漏洞。輕則破壞內存,重則讀寫任意地址內容,下面我們就以Django為例,講解Python 格式化字符串漏洞。

在C語言里有一類特別有趣的漏洞,格式化字符串漏洞。輕則破壞內存,重則讀寫任意地址內容。

Python

Python中的格式化字符串

Python中也有格式化字符串的方法,在Python2老版本中使用如下方法格式化字符串:

  1. "My name is %s" % ('phithon', ) 
  2. "My name is %(name)%" % {'name':'phithon'} 

后面為字符串對象增加了format方法,改進后的格式化字符串用法為:

  1. "My name is {}".format('phithon') 
  2. "My name is {name}".format(name='phithon'

很多人一直認為前后兩者的差別,僅僅是換了一個寫法而已,但實際上format方法已經包羅萬象了。文檔在此: https://docs.python.org/3.6/library/string.html#formatstrings

舉一些例子吧:

  1. "{username}".format(username='phithon') # 普通用法 
  2. "{username!r}".format(username='phithon') # 等同于 repr(username) 
  3. "{number:0.2f}".format(number=0.5678) # 等同于 "%0.2f" % 0.5678,保留兩位小數 
  4. "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42) # 轉換進制 
  5. "{user.username}".format(user=request.username) # 獲取對象屬性 
  6. "{arr[2]}".format(arr=[0,1,2,3,4]) # 獲取數組鍵值 

上述用法在Python2.7和Python3均可行,所以可以說是一個通用用法。

格式化字符串導致的敏感信息泄露漏洞

那么,如果格式化字符串被控制,會發送什么事情?

我的思路是這樣,首先我們暫時無法通過格式化字符串來執行代碼,但我們可以利用格式化字符串中的“獲取對象屬性”、“獲取數組數值”等方法來尋找、取得一些敏感信息。

以Django為例,如下的view:

  1. def view(request, *args, **kwargs): 
  2.     template = 'Hello {user}, This is your email: ' + request.GET.get('email') 
  3.     return HttpResponse(template.format(user=request.user)) 

原意為顯示登陸用戶傳入的email地址:

格式化字符串導致的敏感信息泄露漏洞

但因為我們控制了格式化字符串的一部分,將會導致一些意料之外的問題。最簡單的,比如:

格式化字符串導致的敏感信息泄露漏洞

輸出了當前已登陸用戶哈希過的密碼。看一下為什么會出現這樣的問題:user是當前上下文中僅有的一個變量,也就是format函數傳入的user=request.user,Django中request.user是當前用戶對象,這個對象包含一個屬性password,也就是該用戶的密碼。

所以,{user.password}實際上就是輸出了request.user.password。

如果改動一下view:

  1. def view(request, *args, **kwargs): 
  2.     user = get_object_or_404(User, pk=request.GET.get('uid')) 
  3.     template = 'This is {user}\'s email: ' + request.GET.get('email') 
  4.     return HttpResponse(template.format(useruser=user)) 

將導致一個任意用戶密碼泄露的漏洞:

導致一個任意用戶密碼泄露的漏洞

利用格式化字符串漏洞泄露Django配置信息

上述任意密碼泄露的案例可能過于理想了,我們還是用最先的那個案例:

  1. def view(request, *args, **kwargs): 
  2.     template = 'Hello {user}, This is your email: ' + request.GET.get('email') 
  3.     return HttpResponse(template.format(user=request.user)) 

我能夠獲取到的變量只有request.user,這種情況下怎么利用呢?

Django是一個龐大的框架,其數據庫關系錯綜復雜,我們其實是可以通過屬性之間的關系去一點點挖掘敏感信息。但Django僅僅是一個框架,在沒有目標源碼的情況下很難去挖掘信息,所以我的思路就是:去挖掘Django自帶的應用中的一些路徑,最終讀取到Django的配置項。

經過翻找,我發現Django自帶的應用“admin”(也就是Django自帶的后臺)的models.py中導入了當前網站的配置文件:

Django自帶的應用“admin”

所以,思路就很明確了:我們只需要通過某種方式,找到Django默認應用admin的model,再通過這個model獲取settings對象,進而獲取數據庫賬號密碼、Web加密密鑰等信息。

我隨便列出兩個,還有幾個更有意思的我暫時不說:

http://localhost:8000/?email={user.groups.model._meta.app_config.module.admin.settings.SECRET_KEY}

http://localhost:8000/?email={user.user_permissions.model._meta.app_config.module.admin.settings.SECRET_KEY}

Django自帶的應用“admin”

Jinja 2.8.1 模板沙盒繞過

字符串格式化漏洞造成了一個實際的案例——Jinja模板的沙盒繞過( https://www.palletsprojects.com/blog/jinja-281-released/)

Jinja2是一個在Python web框架中使用廣泛的模板引擎,可以直接被被Flask/Django等框架引用。Jinja2在防御SSTI(模板注入漏洞)時引入了沙盒機制,也就是說即使模板引擎被用戶所控制,其也無法繞過沙盒執行代碼或者獲取敏感信息。

但由于format帶來的字符串格式化漏洞,導致在Jinja2.8.1以前的沙盒可以被繞過,進而讀取到配置文件等敏感信息。

大家可以使用pip安裝Jinja2.8:

  1. pip install  
  2. https://github.com/pallets/jinja/archive/2.8.zip 

并嘗試使用Jinja2的沙盒來執行format字符串格式化漏洞代碼:

  1. >>> from jinja2.sandbox import SandboxedEnvironment 
  2. >>> env = SandboxedEnvironment() 
  3. >>> class User(object): 
  4. ...  def __init__(self, name): 
  5. ...   self.name = name 
  6. ... 
  7. >>> t = env.from_string( 
  8. ...  '{{ "{0.__class__.__init__.__globals__}".format(user) }}') 
  9. >>> t.render(user=User('joe')) 

成功讀取到當前環境所有變量__globals__,如果當前環境導入了settings或其他敏感配置項,將導致信息泄露漏洞:

當前環境導入了settings或其他敏感配置項

相比之下,Jinja2.8.1修復了該漏洞,則會拋出一個SecurityError異常:

Jinja2.8.1修復了該漏洞

f修飾符與任意代碼執行

在PEP 498中引入了新的字符串類型修飾符:f或F,用f修飾的字符串將可以執行代碼。文檔在此 https://www.python.org/dev/peps/pep-0498/

用docker體驗一下:

  1. docker pull python:3.6.0-slim 
  2. docker run -it --rm --name py3.6 python:3.6.0-slim bash 
  3. pip install ipython 
  4. ipython 
  5. # 或者不用ipython 
  6. python -c "f'''{__import__('os').system('id')}'''" 

可見,這種代碼執行方法和PHP中的很類似,這是Python中很少有的幾個能夠直接將字符串轉變成的代碼的方式之一,這將導致很多“舶來”漏洞。

舉個栗子吧,有些開發者喜歡用eval的方法來解析json:

用eval的方法來解析json

在有了f字符串后,即使我們不閉合雙引號,也能插入任意代碼了:

不過實際利用中并不會這么簡單,關鍵問題還在于:Python并沒有提供一個方法,將普通字符串轉換成f字符串。

但從上圖中的eval,到Python模板中的SSTI,有了這個新方法,可能都將有一些突破吧,這個留給大家分析了。

另外,PEP 498在Python3.6中才被實現,在現在看來還不算普及,但我相信之后會有一些由于該特性造成的實際漏洞案例。

責任編輯:趙寧寧 來源: 安全客
相關推薦

2021-06-09 07:55:18

Python格式化字符串

2024-12-09 08:10:00

Python字符串格式化

2020-06-28 08:26:41

Python開發工具

2022-05-09 14:04:27

Python字符串格式化輸出

2017-01-17 15:47:18

2009-09-02 15:56:49

C#格式化字符串

2024-03-06 08:41:14

Python字符串格式化工具

2016-10-17 09:07:11

漏洞字符串EIP劫持

2022-03-28 10:56:11

Python字符串格式化

2010-02-01 16:46:07

C++格式化字符串

2009-09-03 18:05:04

ASP.NET字符串格

2009-09-03 18:45:06

GridView格式化

2024-05-27 00:10:00

2009-11-26 18:36:52

PHP函數sprint

2024-02-22 09:46:04

C++字符串格式化開發

2024-02-26 08:00:00

Pythonformat()字符串

2024-03-28 10:17:03

JDK 17字符串十六進制

2024-05-09 08:28:10

Python字符串百分號格式化

2010-03-22 18:53:53

Python格式化字符

2024-01-02 08:43:48

qs工具庫格式化
點贊
收藏

51CTO技術棧公眾號

激情国产一区二区| 3d动漫一区二区三区在线观看| 国产精品一二二区| 久久99视频精品| 亚洲理论中文字幕| 日韩三级免费| 成人精品亚洲人成在线| 欧美激情18p| 在线免费观看污视频| 丁香六月综合| 国产精品久久久久影院色老大| 国产一区私人高清影院| 欧美国产日韩在线观看成人| 精品深夜福利视频| 在线观看亚洲专区| 小泽玛利亚av在线| 午夜视频1000| 蜜臀av性久久久久蜜臀aⅴ流畅| www.色综合| 日本天堂在线播放| 色黄视频在线观看| 亚洲欧美在线观看| 精品国产乱码久久久久久88av| 波多野结衣爱爱| 中文字幕亚洲综合久久五月天色无吗'' | 香蕉久久一区| 亚洲va欧美va国产va天堂影院| 欧美午夜免费| 精品人妻午夜一区二区三区四区| 国产视频一区三区| 久久精品久久久久久| 理论片大全免费理伦片| 国产成人精选| 亚洲一区二区美女| 日韩精品一区二区三区四区五区| 国产成人精品av在线观| 久久久久国产精品午夜一区| 美日韩精品免费视频| 强伦人妻一区二区三区| 91精品入口| 欧美日韩精品免费| av动漫免费看| 国产又色又爽又黄刺激在线视频| 国产日产欧美一区二区三区 | 极品国产91在线网站| 午夜国产欧美理论在线播放| 国产丝袜高跟一区| 亚洲911精品成人18网站| 粉嫩91精品久久久久久久99蜜桃| 精品欧美激情精品一区| 欧美日韩激情四射| 黄色免费在线观看| 中文字幕乱码一区二区免费| 精品国产综合区久久久久久| 国产成人精品一区二三区四区五区 | 国产精品久久二区| 日本网站在线播放| 红桃视频国产精品| 美女扒开尿口让男人操亚洲视频网站| 一级特黄曰皮片视频| 欧美网色网址| 精品国一区二区三区| 在线观看免费看片| 亚洲最大的免费视频网站| 91福利区一区二区三区| 日本不卡在线观看视频| 精品极品在线| 欧美日韩美女在线观看| 全黄性性激高免费视频| 牛牛电影国产一区二区| 亚洲在线免费播放| 肉大捧一出免费观看网站在线播放| 麻豆影视国产在线观看| 国产精品电影一区二区| 亚洲一区免费看| 免费在线观看av网站| 中文字幕在线观看不卡| 在线免费观看成人网| 又爽又大又黄a级毛片在线视频| 国产欧美一区二区三区网站| 亚洲国产精品毛片| 男人的天堂在线视频免费观看 | 中文字幕a级片| 视频一区在线播放| 国产精品网址在线| 国产手机av在线| 国产伦精一区二区三区| 不卡一区二区三区视频| 欧美 日韩 综合| www.日韩精品| 欧美一区二区福利| 成年人视频免费在线观看| 中文字幕高清不卡| www.-级毛片线天内射视视| 香蕉久久aⅴ一区二区三区| 亚洲综合网站在线观看| 免费高清在线观看免费| 国产国产一区| 日韩一区二区三区电影在线观看 | 毛茸茸free性熟hd| 中日韩免视频上线全都免费| 伊人伊人伊人久久| 欧美日韩成人免费观看| 亚洲国产免费看| 日韩av黄色在线观看| 91丨九色丨丰满| 成人综合婷婷国产精品久久| 久久久久久99| 欧美18hd| 亚洲成人激情av| 国产一区亚洲二区三区| 国产激情精品一区二区三区| 亚洲国产福利在线| 激情五月深爱五月| 亚洲视频日本| 国产精品精品视频一区二区三区| 国产免费高清视频| 91玉足脚交白嫩脚丫在线播放| 亚洲欧美99| tube8在线hd| 欧美四级电影网| 亚洲精品久久一区二区三区777| 亚洲瘦老头同性70tv| www.xxxx精品| 综合激情网五月| 国产九九视频一区二区三区| 免费一区二区三区在在线视频| a篇片在线观看网站| 欧美性猛交xxx| 男人添女人荫蒂国产| 久久精品国产大片免费观看| 91爱视频在线| 91禁在线观看| 久久久久久久久久久99999| 成人国产在线看| 粉嫩av一区二区三区四区五区| 日韩精品极品视频免费观看| 极品颜值美女露脸啪啪| 蜜芽一区二区三区| 欧美日韩一区二区视频在线| 国产探花在线观看| 在线不卡欧美精品一区二区三区| 亚洲av无码国产精品久久| 欧美有码视频| 国产热re99久久6国产精品| 蜜桃视频在线观看视频| 亚洲高清中文字幕| 丰满饥渴老女人hd| 91成人精品| 91精品久久久久久久久久另类| 欧美精品a∨在线观看不卡| 亚洲精品中文字幕| 国产精品污污网站在线观看| 国产在线青青草| 电影中文字幕一区二区| 中文字幕在线看视频国产欧美在线看完整 | 日韩欧美色综合网站| 国产欧美小视频| 欧美aaaaaa午夜精品| 日韩三级电影免费观看| 中文字幕这里只有精品| 日韩成人性视频| 草视频在线观看| 久久精品一区| 久久艳妇乳肉豪妇荡乳av| 久久电影网站| 日韩片之四级片| 免费人成年激情视频在线观看| 激情综合色综合久久综合| 一区二区三区观看| 高清欧美日韩| 91天堂素人约啪| 欧美激情一二区| 在线观看黄色国产| 中文久久乱码一区二区| 日本日本19xxxⅹhd乱影响| 色综合久久中文| 57pao成人永久免费视频| 色网站在线免费观看| 日韩欧美一区二区在线| 欧洲美一区二区三区亚洲 | 免费亚洲电影在线| 亚欧洲精品在线视频免费观看| 快播电影网址老女人久久| 亚洲天堂av综合网| 毛片在线免费播放| 国产精品日韩精品欧美在线| 免费一区二区三区在线观看 | 黄色网络在线观看| 亚洲开心激情| 久久人人爽人人| 欧美黄色小说| 欧美午夜不卡在线观看免费| 久久国产高清视频| 成人高清免费观看| 91视频免费版污| 亚洲国产一成人久久精品| 99久久一区三区四区免费| 涩涩av在线| 中文字幕亚洲欧美日韩在线不卡| av网站在线观看免费| 姬川优奈aav一区二区| 国产在线综合视频| 国产成人av一区二区三区在线观看| 欧美 日韩 亚洲 一区| 成人同人动漫免费观看| 91青青草免费观看| 都市激情亚洲一区| 九九九热精品免费视频观看网站| 日韩精品视频无播放器在线看 | 欧美一区二区三区不卡| 天堂网av手机版| 国产精品国产自产拍在线| 女同性恋一区二区三区| 久久国产麻豆精品| 国产黄色片免费在线观看| 欧洲激情综合| 国产色综合一区二区三区| 日韩精品麻豆| 久久久噜噜噜久久久| 永久av在线| 亚洲国产一区自拍| 97在线播放免费观看| 欧美性xxxx极品hd满灌| 精品99久久久久成人网站免费| 国产欧美一区二区精品久导航 | 成人免费直播live| 伊人久久综合一区二区| 欧美麻豆久久久久久中文| 国产三级在线| 国产日产精品_国产精品毛片| 欧美又大又粗又长| 国产在线激情视频| 亚洲午夜精品视频| 欧美尤物巨大精品爽| 国产喷水吹潮视频www| 一本大道久久a久久精品综合| 青草草在线视频| 中文字幕不卡在线| 亚洲AV无码国产成人久久| 成人午夜私人影院| 奇米777在线| 久久激情五月激情| 中文字幕一区二区三区四区在线视频| 99人久久精品视频最新地址| 国产成人一区二区三区别| 亚洲色图国产| 在线观看免费91| 成人高清电影网站| 日本在线免费观看一区| 亚洲动漫精品| 久久av一区二区| 欧美尿孔扩张虐视频| 国产伦精品一区二区三区视频孕妇| 精品久久国产一区| 91沈先生在线观看| 2019中文亚洲字幕| 91午夜在线播放| 成人黄色理论片| 成人久久久久久久| 亚洲精品成a人ⅴ香蕉片| 国产精品视频男人的天堂| 日韩精品麻豆| 国产日韩欧美一二三区| 欧美91在线|欧美| 国产精品无码专区在线观看| 免费视频观看成人| 91久久久久久久| 精品一区二区三区视频在线播放| 91欧美精品午夜性色福利在线| 精品国产亚洲一区二区三区大结局| 91精品天堂| 伊人精品综合| 国产成人精品一区二区三区福利| 国产亚洲精品美女久久| 另类小说综合网| 精品国产一区二区三区| 亚洲 国产 欧美一区| 亚洲mv大片欧洲mv大片| 日韩欧美一级在线| 在线亚洲观看| 无码人妻丰满熟妇区五十路百度| 日本va欧美va瓶| caoporm在线视频| 国产精品18久久久久| 亚洲 欧美 日韩在线| 99国产精品99久久久久久| 在线免费看黄视频| 国产精品丝袜在线| 看片网站在线观看| 好吊成人免视频| 在线免费观看中文字幕| 欧美一区二区三区喷汁尤物| 理论片中文字幕| 亚洲美女久久久| 日本在线播放| 久久免费高清视频| 桃子视频成人app| 91视频九色网站| 精品久久ai电影| 日本中文不卡| 综合一区av| 99999精品视频| 激情成人综合网| 黄色录像a级片| 中文字幕av一区 二区| 国产一卡二卡在线播放| 91福利视频在线| 亚洲国产精彩视频| 亚洲三级黄色在线观看| 羞羞污视频在线观看| 日韩男女性生活视频| 国产精品美女久久久久| 免费中文日韩| 综合一区二区三区| 成年人网站大全| 国产91精品免费| 秋霞网一区二区三区| 亚洲国产视频a| 亚洲天堂男人网| 日韩av综合中文字幕| 在线电影福利片| 国产mv免费观看入口亚洲| 在线综合色站| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 一区在线视频观看| 伊人免费视频二| 亚洲国产精品高清| 国产精品男女视频| 亚洲国产日韩精品在线| 91在线中文| 国产美女久久精品| 精品国产乱码久久久久久果冻传媒| 无码专区aaaaaa免费视频| 国产一区二区三区蝌蚪| 东京热无码av男人的天堂| 欧美视频在线免费| 国产91免费看| 美女久久久久久久| 亚洲免费看片| 视频一区二区综合| 久久国产成人| 在线精品一区二区三区| 亚洲伊人色欲综合网| av网站在线免费看| 久久九九热免费视频| 九色成人搞黄网站| 日韩精品一区二区三区四区五区 | 国产综合一区二区| 国产精品情侣呻吟对白视频| 欧美性猛交xxxx乱大交| 天天干视频在线观看| 欧美人在线观看| 国产一区二区三区视频在线| 亚洲午夜精品久久久中文影院av| 日韩精品一级二级| 最近日本中文字幕| 欧美日韩国产精品| 开心激情综合网| 午夜精品一区二区三区视频免费看 | 蜜桃成人精品| 日本不卡在线播放| 日韩二区在线观看| 国产探花视频在线播放| 欧美色偷偷大香| 91在线高清| 成人天堂噜噜噜| 一区二区三区四区在线观看国产日韩 | 日韩黄色影院| 国产综合久久久久久| 五月综合激情| 丰满少妇中文字幕| 亚洲国产精品一区二区www在线 | 亚洲精品久久久久久下一站 | 成人性生活视频免费看| 99精品欧美一区二区三区综合在线| 国产成人无码一区二区三区在线| 亚洲精品mp4| 丝袜美腿诱惑一区二区三区| 欧美一区二区三区四区在线观看地址| 日韩国产欧美一区二区三区| 欧美色图17p| 日韩一区二区三区高清免费看看 | 国产精品电影一区二区三区| 精品国产999久久久免费| 欧美高清自拍一区| 欧美色图五月天| 免费看黄色一级大片| 专区另类欧美日韩| 黄色aaa大片| 日韩免费中文字幕| 亚洲乱码免费伦视频| 中文字幕制服丝袜| 色中色一区二区| 免费a级毛片在线播放| 成人欧美一区二区三区在线观看 | 亚洲精美视频| 欧美96一区二区免费视频| 欧美成人精品一区二区免费看片| 亚洲精品国产精品久久清纯直播 |