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

Rails動態模板路徑的風險

安全 應用安全
今天要分享的,是一次滲透測試中比較特別的例子。因為開發者使用了動態模板路徑(Dynamic Render Paths)的寫法(注解1),最后造成了嚴重的結果。

[[172440]]

前言

從安全開發的角度來看,Ruby on Rails是一套很友善的框架。它從框架層避免了很多過去網站長出現的安全問題。例如使用ORM避免大部分的SQL injection問題,有內建的authenticity_token讓開發者不必特別煩惱CSRF,從機制面規定了開發者使用Strong Parameter來避免Mass Assignment,預設轉化危險字符避免XSS等。

就我們從過去的滲透測試的經驗來看,Rails網站雖然還是能找到問題,但相對問題較少,而且很少單純因為Rails寫法問題拿到系統權限。而今天要分享的,是一次滲透測試中比較特別的例子。因為開發者使用了動態模板路徑(Dynamic Render Paths)的寫法(注解1),最后造成了嚴重的結果。

動態模板路徑,OWASP的介紹是這樣的:

OWASP是這樣說,如果你的模板路徑是動態產生的,而且使用者可以控制那個模板路徑。那么使用者就可以讀取任意模板,包括管理界面模板。這樣的描述感覺還好,但就我們的發現,這其實是嚴重的直接存取物件問題(Insecure Direct Object References),甚至有機會造成遠程代碼執行(Remote Code Execution)。怎么說呢?我們直接看下去。

基本細節

一個動態模版路徑的寫法如下:

  1. # app/controllers/welcome_controller.rb 
  2. class WelcomeController < ApplicationController 
  3.   def index 
  4.     page = params[:page] || 'index' 
  5.     render page 
  6.   end 
  7. end 

而index的模版內容是這樣:

  1. <span class="c">#app/views/welcome/index.html.erb 
  2. This is INDEX page.</span> 

另外建一個demo模版做示意:

  1. # app/views/welcome/demo.html.erb 
  2. This is DEMO page. 

實際測試,如果我們連到WelcomeController的index action,不帶任何參數會讀取index模版。

如果帶參數page=demo,會讀取到demo模版。

所以,如果我們知道管理界面的模版路徑,送出路徑參數就可以讀取到管理界面。這就是OWASP所描述的風險,攻擊者得以讀取任意模版。

然而,當我們嘗試送出系統絕對路徑例如/etc/passwd(注解2),網頁竟然顯示/etc/passwd的內容!這就是之前所述的直接存取物件問題,可以遍歷目錄瀏覽檔案。

進階攻擊

通常在Rails環境下能夠讀取任意檔案,攻擊者會優先尋找secret_token,目的是變造惡意session cookie利用Marshal serialize的問題做RCE。然而在本案例系統使用了Rails 4.1后的版本,Rails 4.1預設使用了JSON-based的serializer防止了之前的RCE問題,所以并沒有辦法輕松利用。

為了取得系統操作權,我們嘗試尋找其他可利用的地方。在這邊我們發現了該站系統production.log中存在AWS的上傳紀錄。如下:

  1. # log/production.log 
  2. INFO -- : [AWS S3 200 0.041347 0 retries] put_object(:acl=&gt;:public_read,:bucket_name=&gt;"xxx 

于是我們可以利用上傳檔案的Content-Type內容,將Embedded Ruby語句<%

  1. #{params[:devcore]} 

%>添加到production.log檔案里面。于是log的內容變成了下面這樣:

 

  1. # log/production.log 
  2. INFO -- : [AWS S3 200 0.041347 0 retries] put_object(:acl=&gt;:public_read,:bucket_name=&gt;"xxxx",:content_length=&gt;12405,:content_type=&gt;"image/png",:data=&gt;#&lt;File:/Users/shaolin/project/playground/rails/render/public/uploads/tmp/test_upload.png (12405 bytes)&gt;,:key=&gt;"upload_001") 
  3.  
  4. INFO -- : [AWS S3 200 0.040211 0 retries] put_object(:acl=&gt;:public_read,:bucket_name=&gt;"xxx 

 

接著,我們就可以利用前面的弱點讀取production.log檔案,再帶一個devcore參數作為指令,如圖,成功取得系統權限:

風險原因

一般來說Rails開發并不太會這樣寫,但稍微搜尋一下Github還是能發現這種寫法存在一些項目中。我想主要原因多半是開發者想要偷懶,然后也可能想說動態模板路徑頂多就被看到面板的html,無傷大雅。誰知道就因為這樣導致整個代碼內容被讀取。

若有一個action要動態顯示不同模版的需求,為了避免上述的問題,就辛苦點先用case…when去判斷吧。這跟不要用字串組SQL語句避免SQL injection一樣,這種外面傳進來的參數都要謹慎處理的觀念要內化在開發中。

除了開發者基本上不應該這樣開發外,Rails本身也有一點點問題,當render路徑沒有擴展名,無法判斷什么格式時,就會直接采用預設的template handler。

  1. # lib/action_view/template/resolver.rb 
  2. def extract_handler_and_format_and_variant(path, default_formats) 
  3.   pieces = File.basename(path).split(".") 
  4.   pieces.shift 
  5.  
  6.   extension = pieces.pop 
  7.   unless extension 
  8.     message = "The file #{path} did not specify a template handler. The default is currently ERB, " \ 
  9.               "but will change to RAW in the future." 
  10.     ActiveSupport::Deprecation.warn message 
  11.   end 
  12.  
  13.   handler = Template.handler_for_extension(extension) 
  14.   format, variant = pieces.last.split(EXTENSIONS[:variants], 2) if pieces.last 
  15.   format  &amp;&amp;= Template::Types[format] 
  16.  
  17.   [handler, format, variant] 
  18. end 

而這里預設的handler是ERB(見register_default_template_handler),所以有本篇后面提到的進階攻擊,可以被利用來RCE。

  1. # lib/action_view/template/handlers.rb 
  2. def self.extended(base) 
  3.   base.register_default_template_handler :erb, ERB.new 
  4.   base.register_template_handler :builder, Builder.new 
  5.   base.register_template_handler :raw, Raw.new 
  6.   base.register_template_handler :ruby, :source.to_proc 
  7. end 

慶幸的是,目前Rails已經把預設的template handler從ERB改成RAW,不會輕易把要render的檔案當成ERB執行了。詳細的內容請參考這個commit。

結論

Ruby on Rails能讓開發者較輕松的開發出安全的應用程序,然而,若開發者不注意,還是有可能寫出嚴重的漏洞。本文的動態樣板路徑就是這樣一個例子,它不只是OWASP所描述的可以存取任意模版而已,它可以遍歷檔案,甚至因為rails預設的template handler是ERB,造成遠程代碼執行讓攻擊者取得服務器操作權。

這個例子又再次驗證,框架可以幫助大家快速開發,增加安全度。但唯有良好的安全意識,才是應用程序安全的基石。

責任編輯:趙寧寧 來源: Hackdig
相關推薦

2020-09-25 07:00:00

基礎架構代碼模板

2011-05-31 11:05:16

ListView 數據

2020-10-28 21:00:38

RailsMVC命令

2024-05-24 08:00:00

2009-08-27 10:21:22

Ruby on Rai

2010-06-19 14:44:08

2010-09-25 14:39:29

Bruce Tate

2011-09-15 09:19:30

2009-09-29 17:04:29

2020-12-07 19:00:29

Rails

2009-08-06 09:13:36

Ruby on Rai

2009-06-17 10:08:32

Ruby on Rai安裝Ruby

2012-05-16 09:29:25

JavaRailsJVM

2009-10-09 09:37:46

2010-08-09 09:53:14

RailsRake

2009-07-20 09:12:54

Ruby on Rai

2009-07-01 10:30:00

Ruby on Rai

2009-07-23 13:35:33

Ruby on Rai

2009-12-17 15:56:34

Rails參數bind

2009-12-17 14:29:50

Ruby on Rai
點贊
收藏

51CTO技術棧公眾號

成人在线免费| 国产午夜视频在线观看| 欧美有码视频| 日韩大陆欧美高清视频区| 精品免费国产一区二区| 国产一二三区在线观看| 99re这里只有精品视频首页| 国产精品国产自产拍高清av水多| 中文字幕在线观看成人| 最新国产一区| 日韩一区二区三区免费看 | 在线国产一区二区| 亚洲黄色成人网| 天堂av在线8| 成人免费无遮挡| 亚洲猫色日本管| 日韩和欧美的一区二区| 国产香蕉在线观看| 蜜桃一区二区三区在线| 97婷婷涩涩精品一区| 五月天免费网站| 天堂成人娱乐在线视频免费播放网站 | 国产精品一区二区精品视频观看| 亚洲成人综合在线| 中文字幕久久综合| 猫咪在线永久网站| eeuss国产一区二区三区| 成人午夜在线视频一区| 亚洲欧美一二三区| 一区二区三区国产盗摄 | 丰满少妇被猛烈进入一区二区| 亚州国产精品| 亚洲护士老师的毛茸茸最新章节| 999久久久精品视频| 日韩高清成人| 日韩欧美成人区| 欧美一级视频免费看| 在线中文免费视频| 亚洲丝袜另类动漫二区| 亚洲视频精品一区| 国产色在线 com| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲黄色小说网站| 中文字幕一区二区三区在线乱码 | 亚洲免费黄色网| av激情成人网| 色婷婷久久99综合精品jk白丝| 精品人妻人人做人人爽| 成人在线直播| 亚洲麻豆国产自偷在线| 久久免费一级片| 影音先锋男人在线资源| 亚洲女与黑人做爰| 天天综合五月天| 黄色成年人视频在线观看| 中文字幕乱码日本亚洲一区二区| 日韩av高清| 成年午夜在线| 亚洲欧洲一区二区在线播放| 亚洲一区二区高清视频| 求av网址在线观看| 亚洲视频综合在线| 樱空桃在线播放| 亚洲综合图区| 亚洲国产日韩精品| 精品国产免费av| 亚洲三级欧美| 欧美伊人久久大香线蕉综合69| 天天操天天摸天天爽| 成人黄色视屏网站| 91精品国产综合久久福利| 老女人性生活视频| 欧美韩一区二区| 亚洲深夜福利视频| 中文字幕美女视频| 自拍偷拍欧美| 91po在线观看91精品国产性色| 国产成人无码精品久在线观看 | 视频区 图片区 小说区| 日韩中文字幕无砖| 亚洲第一福利视频| 偷拍夫妻性生活| 99久久亚洲精品蜜臀| 欧美久久久精品| 欧美一二三区视频| 欧美a一区二区| 91精品天堂| 香蕉视频免费在线看| 欧美激情在线一区二区| 浴室偷拍美女洗澡456在线| 高清电影在线免费观看| 日本高清免费不卡视频| 久久久久久久久久毛片| 丁香五月缴情综合网| 在线a欧美视频| 久久久久久久中文字幕| 久久国产直播| 91pron在线| 欧美18xxxxx| 一区二区三区免费| 在线观看高清免费视频| 中文字幕av一区二区三区四区| 亚洲三级黄色在线观看| 全程偷拍露脸中年夫妇| 久久婷婷一区| 亚洲va男人天堂| 欧美一区二区少妇| 亚洲一二三四区| 性刺激的欧美三级视频| 国产精品白丝av嫩草影院| 日韩在线观看视频免费| 国产主播在线观看| 韩国女主播成人在线观看| 免费成人深夜夜行视频| 羞羞的网站在线观看| 欧美无砖砖区免费| 人妻丰满熟妇av无码久久洗澡 | 白白在线精品| 日韩中文字幕久久| 国产美女激情视频| 国产乱码字幕精品高清av | 91国产精品成人| 久久精品女同亚洲女同13| 97精品一区| 国产精品丝袜一区二区三区| 视频一区二区在线播放| 亚洲影院久久精品| 97超碰人人爽| 99久久久久久中文字幕一区| 国产精品 欧美在线| 少妇av在线播放| 一级精品视频在线观看宜春院| xxx国产在线观看| 国产欧美一区二区精品久久久| 韩国精品久久久999| www.色视频| 日韩毛片高清在线播放| 日本黄色三级大片| 鲁大师精品99久久久| 欧美激情国产精品| 成人av一区二区三区在线观看 | 一道本无吗dⅴd在线播放一区| 成人免费看片98欧美| 成熟亚洲日本毛茸茸凸凹| 日本一道在线观看| 欧美日韩黄网站| 欧美成人三级视频网站| 国产手机视频在线| 亚洲男女毛片无遮挡| 特级黄色片视频| 欧美黄色一区| 成人免费视频网站| av不卡高清| 亚洲激情第一页| 欧美一二三区视频| 久久免费的精品国产v∧| 无码精品a∨在线观看中文| 秋霞影院一区二区三区| 欧美夜福利tv在线| 嫩草研究院在线观看| 欧美性生交片4| 国产精品suv一区二区88| 麻豆成人久久精品二区三区小说| 亚洲成人精品电影在线观看| 欧美视频免费看| 久久成人精品一区二区三区| 精品国产乱码久久久久久蜜臀网站| 亚洲精品自拍动漫在线| 蜜桃色一区二区三区| 国产欧美不卡| 色综合视频二区偷拍在线| 日韩一级视频| 久久久亚洲精选| 免费一级毛片在线观看| 欧美色视频一区| 男人操女人的视频网站| 不卡av免费在线观看| 欧美激情国产精品日韩| 久久蜜桃av| 成人在线免费观看一区| 日本在线啊啊| 一区三区二区视频| 成 人 黄 色 片 在线播放| 欧美日韩国产精品一区| 免费看黄色av| 国产成人午夜高潮毛片| 91国视频在线| 欧美岛国激情| 国产精品区免费视频| 精品欧美一区二区三区在线观看| 乱亲女秽乱长久久久| 日韩黄色影片| 欧美一二三区精品| 好吊色在线视频| 最新中文字幕一区二区三区| 色综合久久五月| 久久国产麻豆精品| 日本一本中文字幕| 精品国产91久久久久久浪潮蜜月| 7777精品伊久久久大香线蕉语言 | 欧美亚洲综合网| 国产在线视频你懂的| 中文字幕av一区二区三区高 | 美女视频亚洲色图| 国产欧美一区二区三区久久人妖 | 亚洲一区二区四区蜜桃| 亚洲AV无码成人精品区明星换面 | 97caopron在线视频| 亚洲男人天堂2024| www.五月天激情| 欧美日韩一二区| 草久久免费视频| 亚洲一区中文日韩| 三级在线观看免费大全| 国产日产欧美精品一区二区三区| 日韩成人av影院| 久久国产日韩欧美精品| 成人久久久久久久久| 亚洲看片一区| 日本aa在线观看| 欧美www视频在线观看| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 国产精品第三页| a在线视频v视频| 久久99精品久久久久久噜噜| 调教视频免费在线观看| 亚洲毛片在线看| 欧美 日韩 国产 成人 在线 91 | 天天射天天操天天干| 日韩三级中文字幕| 91成人在线免费| 欧美性极品少妇| 天天干,天天干| 色婷婷久久一区二区三区麻豆| 国产精品美女毛片真酒店| 亚洲精品国产一区二区精华液| 久草福利资源在线| 一区视频在线播放| 91香蕉一区二区三区在线观看 | 久久久久久免费观看| 一区二区三区四区中文字幕| av最新在线观看| 中文字幕字幕中文在线中不卡视频| 蜜桃av免费在线观看| 中文字幕成人av| 欧美自拍偷拍网| 中文字幕第一区| 青青草华人在线视频| 国产精品每日更新在线播放网址| 超碰97av在线| 国产精品国产三级国产普通话蜜臀 | 国产毛片精品| 激情小说网站亚洲综合网 | 国产成人高清在线| 初高中福利视频网站| 丁香另类激情小说| 国产免费一区二区三区最新6| 成人高清视频在线| 91av在线免费| 久久久久久久久久久久久女国产乱| 久久国产精品无码一级毛片| 久久品道一品道久久精品| 欧美亚一区二区三区| 久久久久久久电影| 国产在线观看免费视频软件| ㊣最新国产の精品bt伙计久久| www青青草原| 天天做天天摸天天爽国产一区| www.国产色| 欧美日韩一区久久| 国产婷婷在线视频| 亚洲国产精彩中文乱码av| 激情小视频在线| 久久精品人人做人人爽| 美女日批视频在线观看| 91精品国产高清自在线 | 成人一区二区三区四区| 日韩在线黄色| 亚洲国产婷婷香蕉久久久久久99 | 亚洲国产精品99久久久久久久久| 三级黄色免费观看| 亚欧色一区w666天堂| 无码人妻一区二区三区线| 欧美高清性hdvideosex| 欧美视频在线观看一区二区三区| aⅴ在线免费观看| 久久久久久久久久久久久久久久久久| 欧美三级午夜理伦三级老人| 在线不卡亚洲| 国产精品久久久久9999小说| 精品制服美女久久| 久久人人妻人人人人妻性色av| 久久久久久一级片| 波多野结衣亚洲一区二区| 天天操天天综合网| 一区二区www| 亚洲精品电影网站| 久久综合之合合综合久久| 69久久夜色精品国产7777| 欧美成a人片免费观看久久五月天| 国产精品国模大尺度私拍| 精品国产一区探花在线观看| 国产1区2区3区中文字幕| 久久久久中文| 欧美午夜精品一区二区| 国产精品视频免费| 特一级黄色大片| 91精品国产美女浴室洗澡无遮挡| 青青青免费视频在线2| 欧美成在线视频| 国产成人精选| 欧美日本亚洲| 在线观看的日韩av| 在线观看中文av| 日本一区二区不卡视频| 在线能看的av| 亚洲成人av在线播放| 三区四区在线视频| 国产成人在线一区二区| 麻豆成人入口| 国产一级做a爰片久久毛片男| 精品在线亚洲视频| 五月天精品在线| 色婷婷av一区二区三区之一色屋| 欧美 日韩 人妻 高清 中文| 欧美精品在线观看| 日韩三级成人| 亚洲伊人婷婷| 免费看欧美美女黄的网站| 麻豆精品免费视频| 欧美日韩亚洲激情| 免费a视频在线观看| 欧美精品videosex性欧美| 国产精品久久久久久久久久久久久久久| 秋霞久久久久久一区二区| 麻豆久久精品| 日本黄色特级片| 欧美日韩一区二区免费视频| 欧美一区二区三区激情| 久久久久一本一区二区青青蜜月| 国产精品亚洲一区二区在线观看| 中文字幕中文字幕99| 麻豆91在线播放免费| 男人天堂资源网| 6080日韩午夜伦伦午夜伦| 黄在线免费看| 91在线视频免费| 婷婷综合亚洲| 免费看三级黄色片| 亚洲一区在线观看免费| 亚洲成人一级片| 国内精品视频一区| 欧美亚洲大陆| 精品一卡二卡三卡| 国产午夜久久久久| 中文字幕欧美在线观看| 色偷偷偷综合中文字幕;dd| 久久不卡日韩美女| 欧美少妇一级片| 国产91精品在线观看| 在线观看精品国产| 日韩精品免费在线视频观看| 天堂电影一区| 亚洲电影网站| 国产精品一区二区三区四区| 精品无码久久久久| 亚洲另类欧美自拍| 欧美高清你懂的| 日韩一区二区高清视频| 波波电影院一区二区三区| 毛片视频网站在线观看| 亚洲天堂网在线观看| 91成人app| 国产精品www在线观看| 久久久亚洲高清| 91精品国产乱码久久久| 欧美激情二区三区| 国产精品午夜一区二区三区| 三级性生活视频| 亚洲6080在线| 日韩在线资源| 加勒比在线一区二区三区观看| 日韩一区欧美二区| 国产精品免费人成网站酒店| 亚洲第一免费播放区| 成人在线免费| 国产妇女馒头高清泬20p多| 国产欧美日产一区| 丰满人妻一区二区三区无码av| 欧美专区中文字幕| 亚洲国产精品久久久久蝴蝶传媒| 成人在线视频免费播放| 欧美喷水一区二区| 男人天堂视频在线观看| 亚洲三区在线| 91丨九色丨蝌蚪富婆spa| 999精品国产| 国产精品福利网站| 99re国产精品| 男人的天堂久久久|