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

国产成人精品视频免费| 鲁一鲁一鲁一鲁一av| 你懂的视频在线观看| 日本亚洲最大的色成网站www| 日韩视频在线免费| 亚洲少妇一区二区三区| 久久uomeier| 一区在线观看免费| 精品久久蜜桃| 中文字幕在线播出| 亚洲网站视频| 最近2019年中文视频免费在线观看| 在线免费观看av网| 毛片无码国产| 一区二区三区日韩在线观看| 久久精品女人的天堂av| 一区不卡在线观看| 亚洲综合激情| 欧美精品手机在线| 精品人妻中文无码av在线 | 亚洲r级在线观看| 好吊妞视频一区二区三区| 国产精品久久久久久久免费观看| 日韩精品一区二区视频| 亚洲制服在线观看| 国产一区二区色噜噜| 精品久久久国产精品999| 在线视频精品一区| 免费在线观看污视频| 东方欧美亚洲色图在线| 成人国产精品免费视频| 狠狠人妻久久久久久综合| 国产一区亚洲| 久久av中文字幕| 久久久精品成人| 亚洲系列另类av| 精品国产免费人成在线观看| 在线看免费毛片| 99久久伊人| 色偷偷一区二区三区| 免费 成 人 黄 色| cao在线视频| 亚洲一区二区av电影| 青青草视频在线视频| 国产写真视频在线观看| 国产精品免费av| 色播亚洲婷婷| 国产女主播在线写真| 26uuu色噜噜精品一区二区| 国产欧美丝袜| 日本精品一二区| 国产不卡视频一区| 不卡视频一区二区三区| 精品国产乱码久久久久久蜜臀网站| 另类的小说在线视频另类成人小视频在线 | 亚洲自拍中文字幕| 国产精品视频第一页| 黄色精品一二区| 成人妇女免费播放久久久| 一二三四区视频| 精品无人码麻豆乱码1区2区 | 97精品免费视频| 日本中文字幕免费观看| 亚洲天堂偷拍| 97久久精品国产| 中文字幕一区二区三区精品| 亚洲激情社区| 全球成人中文在线| 四虎影院在线免费播放| 日韩电影一二三区| 成人国产在线视频| 亚洲精品国产精品乱码不卡| 国产suv精品一区二区三区| 粉嫩精品一区二区三区在线观看 | 成人激情免费网站| 国内精品久久久久久久果冻传媒| 日韩一卡二卡在线| 2024国产精品| 亚洲精品美女久久7777777| 日本电影全部在线观看网站视频| 亚洲美女精品一区| 又大又硬又爽免费视频| 久久久久久久| 欧美精品xxxxbbbb| 稀缺小u女呦精品呦| 婷婷国产精品| x99av成人免费| 国产精选第一页| 美女精品网站| 91精品啪在线观看麻豆免费| 性中国xxx极品hd| 91视频com| 手机成人av在线| a毛片不卡免费看片| 日韩欧美在线第一页| 色www免费视频| aaa国产精品视频| 亚洲午夜激情免费视频| 久久精品一区二区三| 国产日韩综合| 91精品免费视频| 午夜国产在线观看| 日韩理论片在线| 青青艹视频在线| 亚洲三级电影| 国产婷婷色综合av蜜臀av| a一级免费视频| 亚洲午夜视频| 国产精品久久久久久久久久三级 | 国产美女一区二区| 欧美高清视频一区| av网站网址在线观看| 日韩人体视频一二区| 99中文字幕在线| 日韩欧美在线精品| 欧美精品在线极品| 中国精品一区二区| 91在线视频18| 波多野结衣与黑人| 四虎精品永久免费| 亚洲热线99精品视频| 久久久久成人精品无码| 精品一区二区精品| 少妇特黄a一区二区三区| а√在线天堂官网| 欧美大片一区二区| 欧美人禽zoz0强交| 美女脱光内衣内裤视频久久网站| 久久av免费观看| 国产白丝在线观看| 欧美本精品男人aⅴ天堂| 国产视频精品免费| 麻豆成人久久精品二区三区小说| 欧洲精品一区色| 欧产日产国产精品视频| 亚洲大胆美女视频| 久久久久久久久久久97| 国产高清精品久久久久| 美女在线免费视频| 激情综合婷婷| 欧美精品日韩三级| 亚洲av永久纯肉无码精品动漫| 中文字幕精品一区二区三区精品 | 国产精品一区二区果冻传媒| 亚洲欧美日韩在线综合| 不卡亚洲精品| 丝袜美腿精品国产二区 | 欧美本精品男人aⅴ天堂| 日韩在线观看视频一区二区| 国产在线一区二区| 黄色网在线视频| 一区二区三区四区高清视频| 欧美第一黄网免费网站| 亚洲黄色精品视频| 亚洲第一福利视频在线| 这里只有精品在线观看视频| 亚洲黄页一区| 蜜桃免费一区二区三区| av电影一区| 亚洲人午夜精品| 在线播放亚洲精品| 亚洲欧美色图小说| 久草免费资源站| 99国产精品视频免费观看一公开 | 国产激情在线免费观看| 先锋a资源在线看亚洲| 丝袜美腿玉足3d专区一区| 九色成人搞黄网站| 久久成人亚洲精品| 成人午夜视频一区二区播放| 大伊人狠狠躁夜夜躁av一区| 日本xxxxxxxxx18| 麻豆国产精品视频| 韩国无码av片在线观看网站| 精品三级av| 国产精品吊钟奶在线| www免费在线观看| 日韩h在线观看| 中文字幕在线观看视频一区| 一区二区三区四区高清精品免费观看| 亚洲av永久无码精品| 三级欧美在线一区| 夜夜爽99久久国产综合精品女不卡 | gogo久久| 国产一区二区三区在线看| 一区二区不卡视频在线观看| 亚洲最大成人网4388xx| 成人精品在线观看视频| 久久99国产精品久久99果冻传媒| 久久久久久久久久伊人| 国产欧美日韩精品一区二区三区| 91麻豆国产语对白在线观看| 国产精品vvv| 日韩一中文字幕| 天天干,天天操,天天射| 欧美日韩大陆一区二区| 国产成人亚洲精品自产在线| 国产精品久久久久永久免费观看| 亚洲免费观看在线| 另类成人小视频在线| 国产精品一区二区免费在线观看| 久久国产亚洲精品| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 性欧美长视频免费观看不卡| 午夜激情在线观看| 亚洲大胆人体视频| 国产精品无码在线播放| 欧美性黄网官网| 强行糟蹋人妻hd中文| 国产亚洲自拍一区| av网页在线观看| 极品尤物av久久免费看| 欧美丰满熟妇xxxxx| 伊人久久大香线蕉综合热线| 亚洲国产一区二区三区在线播| 99精品国产一区二区三区2021| 国产精品一区二区久久久久| 蜜臀久久精品| 欧美黑人又粗大| 日本在线视频网| 亚洲香蕉成人av网站在线观看 | 久久久久久久综合色一本| 黄页网站在线看| 国产一区二区在线看| 亚洲黄色a v| 久久久水蜜桃av免费网站| 日本欧美视频在线观看| 女人天堂亚洲aⅴ在线观看| 一区二区三区四区不卡| 精品美女在线视频| 欧美成ee人免费视频| 人人精品视频| 国产一区二区中文字幕免费看| 欧美伊人亚洲伊人色综合动图| 国产国语videosex另类| 亚洲精品中文字幕| 91精品国产精品| 国产伦理精品| 777精品视频| 欧美办公室脚交xxxx| 午夜美女久久久久爽久久| 岛国片av在线| 欧美精品www| 欧美黄色视屏| 欧美激情视频在线| 黄网站在线观| 海角国产乱辈乱精品视频| 超碰在线资源| 97超碰蝌蚪网人人做人人爽| h片在线观看视频免费免费| 韩国欧美亚洲国产| 黄色在线观看www| 欧美一级成年大片在线观看 | 日韩欧美国产高清91| 可以免费在线观看的av| 黑人巨大精品欧美一区二区免费| 亚洲男人的天堂在线视频| 一本一道综合狠狠老| 日本一本在线观看| 欧美人成免费网站| 精品国自产在线观看| 精品久久一区二区| 天天摸天天干天天操| 亚洲免费av片| 伊人免费在线| 欧美老女人在线视频| 999福利在线视频| 欧美一区亚洲一区| 玖玖精品在线| 不卡一区二区三区视频| 久久综合另类图片小说| 欧洲精品在线一区| 外国成人激情视频| 国产玉足脚交久久欧美| 香蕉久久久久久久av网站| 91人人澡人人爽人人精品| 日本视频在线一区| 被黑人猛躁10次高潮视频| av不卡免费电影| 亚洲综合久久久久| 日韩在线综合网| 日韩精品免费视频人成| 不卡中文字幕在线观看| 国产精品小仙女| 91中文字幕永久在线| 国产精品国产自产拍高清av| 精品一区二区三区人妻| 色婷婷精品久久二区二区蜜臂av| 一区二区三区日| 亚洲黄色有码视频| 在线观看av黄网站永久| 欧美激情国产精品| 国产精品久久久久av电视剧| 成人天堂噜噜噜| 羞羞答答一区二区| 国产日韩欧美大片| 老鸭窝毛片一区二区三区| 欧洲在线免费视频| 久久免费偷拍视频| 潮喷失禁大喷水aⅴ无码| 亚洲成人激情综合网| 一区二区自拍偷拍| 日韩电影网在线| 成人毛片av在线| 国产98色在线| 97精品久久| 日日噜噜噜夜夜爽爽| 亚洲一区二区网站| 波多野吉衣在线视频| 国产精品美女久久久久久久久久久| 国产中文字字幕乱码无限| 欧美日韩一级大片网址| 神马久久久久| 欧美极品少妇xxxxx| 色婷婷成人网| 污视频在线免费观看一区二区三区| 在线免费观看欧美| 18深夜在线观看免费视频| 中文字幕一区二区三区在线播放| 免费无码国产精品| 亚洲黄页网在线观看| 色老头在线观看| 亚洲一区二区三区视频| 欧美电影免费| 亚洲人成无码www久久久| 99riav一区二区三区| www.天天色| 日韩欧美中文字幕公布| 精品176二区| 成人免费高清完整版在线观看| 欧美丝袜一区| 国模杨依粉嫩蝴蝶150p| 9人人澡人人爽人人精品| 久久久久久久久久一区二区三区| 91精品国产综合久久香蕉麻豆| 91大神xh98hx在线播放| 国产精品久久久久久久9999| 国产欧美日韩在线一区二区| 虎白女粉嫩尤物福利视频| 91免费观看国产| 日本高清www免费视频| 日韩av资源在线播放| 天堂在线中文网官网| 久久综合给合久久狠狠色| 亚洲大片在线| 日韩 中文字幕| 一本一道久久a久久精品综合蜜臀| 手机在线精品视频| 97色在线观看免费视频| 欧美综合精品| 欧美成人精品欧美一级乱| 久久蜜臀精品av| 亚洲精品一区二三区| 国产一区二区三区毛片| 国产精品无码久久久久| 中日韩在线视频| 国产在线播放一区三区四| 亚洲综合网在线| 精品国产精品网麻豆系列 | 中文字幕在线不卡视频| 在线观看国产精品入口男同| 日韩在线播放视频| 91久久青草| 久久在线中文字幕| 91在线你懂得| 伊人网免费视频| 欧美大胆在线视频| 色愁久久久久久| 国产免费999| 亚洲欧美日韩国产一区二区三区 | 91玉足脚交嫩脚丫在线播放| 亚洲石原莉奈一区二区在线观看| 欧美黄页在线免费观看| 欧美做受777cos| 91视频精品在这里| 中文字幕免费观看视频| 久久国产天堂福利天堂| 国内视频在线精品| 日韩av播放器| 一区二区成人在线| 日韩电影免费| 91精品久久久久久久久久久久久| 国内自拍一区| 男人的天堂av网| 欧美va亚洲va香蕉在线| 欧美特黄aaaaaaaa大片| 久久久久亚洲av无码专区喷水| 粉嫩aⅴ一区二区三区四区 | 999精品网| 区一区二区三区中文字幕| 精品一区二区日韩| 久久不卡免费视频| 久久精品电影网| 天堂日韩电影| 人妻精油按摩bd高清中文字幕| 欧美色道久久88综合亚洲精品| 青青影院在线观看| 蜜桃999成人看片在线观看| 国产一区二区日韩精品| 国产精品suv一区|