Aggregator
Opening Statement to the Intelligence & Security Committee 11 March 2015
闻道语录2
DVWA Brute Force (Low Level) - HTTP GET Form [Hydra, Patator, Burp]
DVWA - Main Login Page - Brute Force HTTP POST Form With CSRF Tokens
Damn Vulnerable Web Application (DVWA)
网络编程的一些个人总结
Speech to the Technology and Privacy Forum
Speaking Notes for Speech to the Technology and Privacy Forum by Una Jagose, Acting Director, GCSB.
QEMU参数解析
XcodeGhost Pulled from App Store After a Good Scare: What to Know
This week in cybersecurity was yet another for the books, as we watched a tech giant swiftly avert a security...
The post XcodeGhost Pulled from App Store After a Good Scare: What to Know appeared first on McAfee Blog.
输出24点游戏所有解
[已結束] DEVCORE 徵求行政出納人才
(2015.9.16 已結束徵才)
戴夫寇爾即將要邁入第四個年頭,在過去的歲月中,我們推廣資安的重要性、強調安全開發。我們堅持提供最高品質的滲透測試服務,協助企業找出隱藏的資安威脅。我們也不斷精進技術,期許自己能成為全台灣第一的滲透測試團隊。
感謝這些年來業界朋友對我們的肯定與支持,戴夫寇爾得以茁壯,如今,我們還需要一位行政出納人才,我們渴望您的加入,做為戴夫寇爾穩定的力量。相關細節如下:
工作內容- 協助處理庶務性行政工作(接聽來電、收發、接待)
- 負責合約管理、出缺考勤管理、帳務明細整理
- 規劃、執行採購庶務
- 應收應付款項與零用金管理
- 銀行往來與一般款項收付作業
- 協助主管執行相關業務
10:00 - 18:00
工作地點台北市中山區復興北路 168 號 10 樓
(捷運南京復興站,走路約三分鐘)
- 需有兩年以上相關工作經驗
- 熟悉試算表,具獨立撰寫試算表公式能力
- 習慣使用雲端服務,如:Google Drive, Dropbox 或其他
- 您使用過專案管理系統,如:Trello, Basecamp, Redmine 或其他
您將會使用專案管理系統管理平日任務 - 您是 MAC 使用者
您未來的電腦會是 MAC,我們希望您越快順暢使用電腦越好 - 您曾經做過行政相關職務,但對行政一職有一套自己的想法
我們是新創公司,我們歡迎您挑戰既定的行政刻版印象 - 您是生活駭客
您不需要會寫程式,但您習慣觀察生活中的規律,並想辦法利用這些規律有效率的解決問題
我們注重公司每個人的身心健康,所以:
- 您會在一個開闊的辦公環境工作
- 您會擁有一張 Aeron 人體工學椅
- 每週補滿飲料(另有咖啡機)、零食,讓您保持心情愉快
- 公司提供飛鏢機讓您發洩對主管的怨氣
- 第一年即有特休(照比例),每年度五天全薪病假
- 三節、生日禮金
- 每季員工聚餐
- 每年員工旅遊
- 每年員工健檢
- 勞保、健保、勞退
- 定期專人按摩服務
新台幣 32,000 - 40,000 (保證 14 個月)
應徵方式請來信將您的履歷以 PDF 格式寄到 [email protected],標題格式如下:
[應徵] 行政出納專員 (您的姓名)
我們會在兩週內主動與您聯繫。審查方式會有書審、線上測驗以及面試三個階段。最快將於九月初開始進行第二階段測試,煩請耐心等候。
履歷請控制在兩頁以內,需包含以下內容:
- 基本資料
- 學歷
- 工作經歷
- 社群活動經驗
- 特殊事蹟
- MBTI 職業性格測試結果(請自行尋找線上測驗測試)
請參考範例示意(DOC、PAGES、PDF)並轉成 PDF。
若您有自信,也可以自由發揮最能呈現您能力的履歷。
由於最近業務較為忙碌,若有應徵相關問題,請一律使用 Email 聯繫,造成您的不便請見諒。
我們選擇優先在部落格公布徵才資訊,是希望您也對安全議題感興趣,即使不懂技術也想為台灣資安盡一點力。如果您除了處理基本事務外還有更多想法,也歡迎與我們聯繫,我們會保留給您發揮的空間與調升薪水。
無論如何,我們都感謝您的來信,期待您的加入!
Potao Express samples
VMware COM1虚拟机逃逸漏洞分析
Forgot Where You Were Yesterday? Google Has You Covered.
Last Tuesday, Google introduced Your Timeline for its Google Map website and Android devices. Your Timeline acts as a documentarian...
The post Forgot Where You Were Yesterday? Google Has You Covered. appeared first on McAfee Blog.
Rails 動態樣板路徑的風險
從安全開發的角度來看,Ruby on Rails 是一套很友善的框架。它從框架層避免了很多過去網站常出現的安全問題,例如使用 ORM 避免大部分的 SQL injection 問題、有內建的 authenticity_token 讓開發者不必特別煩惱 CSRF、從機制面規定開發者使用 Strong Parameter 避免 Mass Assignment、預設轉化危險字元避免 XSS 等…。
就我們過去滲透測試的經驗來說,Rails 網站雖然還是能找到問題,但相對問題較少,而且很少單純因為 Rails 寫法問題拿到系統操作權。而今天要分享的,是在一次滲透測試中比較特別的例子,因為開發者使用了動態樣板路徑(Dynamic Render Paths)的寫法1,最後造成了嚴重的結果。
動態樣板路徑,OWASP 的介紹是這樣的:
In Rails, controller actions and views can dynamically determine which view or partial to render by calling the “render” method. If user input is used in or for the template name, an attacker could cause the application to render an arbitrary view, such as an administrative page.
Care should be taken when using user input to determine which view to render. If possible, avoid any user input in the name or path to the view.
OWASP 是說,如果你的樣板路徑是動態產生的,而且使用者可以控制那個樣板路徑,那麼使用者就可以讀取到任意樣板,包含管理介面的樣板。這樣的描述感覺還好,但就我們的發現,這其實是更嚴重的直接存取物件問題(Insecure Direct Object References),甚至有機會造成遠端命令執行(Remote Code Execution),怎麼說呢?我們直接看下去。
基本細節一個動態樣板路徑的寫法如下:
# app/controllers/welcome_controller.rb class WelcomeController < ApplicationController def index page = params[:page] || 'index' render page end end而 index 的樣板內容是這樣:
<!-- app/views/welcome/index.html.erb --> This is INDEX page.另外建一個 demo 樣板做示意:
<!-- app/views/welcome/demo.html.erb --> 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 的上傳紀錄。如下:
# log/production.log INFO -- : [AWS S3 200 0.041347 0 retries] put_object(:acl=>:public_read,:bucket_name=>"xxxx",:content_length=>12405,:content_type=>"image/png",:data=>#<File:/Users/shaolin/project/playground/rails/render/public/uploads/tmp/test_upload.png (12405 bytes)>,:key=>"upload_001")於是我們可以利用上傳檔案的 Content-Type 內容,將 Embedded Ruby 語句 <%=`#{params[:devcore]}`%> 添加到 production.log 檔案裡面。於是 log 的內容變成了下面這樣:
# log/production.log INFO -- : [AWS S3 200 0.041347 0 retries] put_object(:acl=>:public_read,:bucket_name=>"xxxx",:content_length=>12405,:content_type=>"image/png",:data=>#<File:/Users/shaolin/project/playground/rails/render/public/uploads/tmp/test_upload.png (12405 bytes)>,:key=>"upload_001") INFO -- : [AWS S3 200 0.040211 0 retries] put_object(:acl=>:public_read,:bucket_name=>"xxxx",:content_length=>12405,:content_type=>"<%=`#{params[:devcore]}`%>",:data=>#<File:/Users/shaolin/project/playground/rails/render/public/uploads/tmp/test_upload.png (12405 bytes)>,:key=>"upload_002")接著,我們就可以利用前面的弱點讀取 production.log 檔案,再帶一個 devcore 參數作為指令,如圖,成功取得系統操作權 :p
風險原因一般來說 Rails 開發並不太會這樣寫,但稍微搜尋一下 Github 還是能發現這種寫法存在一些專案中。我想主要原因多半是開發者想要偷懶,然後也可能想說動態樣板路徑頂多就被看到面板的 html,無傷大雅。誰知道就因為這樣導致整個程式碼內容被讀取。
若有一個 action 要動態顯示不同模版的需求,為了避免上述的問題,就辛苦點先用 case…when 去判斷吧。這跟不要用字串組 SQL 語句避免 SQL injection 一樣,這種外面傳進來的參數都要謹慎處理的觀念要內化在開發中。
除了開發者基本上不應該這樣開發外,Rails 本身也有一點點問題,當 render 路徑沒有副檔名,無法判斷什麼格式時,就會直接採用預設的 template handler。
# lib/action_view/template/resolver.rb def extract_handler_and_format_and_variant(path, default_formats) pieces = File.basename(path).split(".") pieces.shift extension = pieces.pop unless extension message = "The file #{path} did not specify a template handler. The default is currently ERB, " \ "but will change to RAW in the future." ActiveSupport::Deprecation.warn message end handler = Template.handler_for_extension(extension) format, variant = pieces.last.split(EXTENSIONS[:variants], 2) if pieces.last format &&= Template::Types[format] [handler, format, variant] end而這裡預設的 handler 是 ERB(見 register_default_template_handler),所以有本篇後面提到的進階攻擊,可以被利用來 RCE。
# lib/action_view/template/handlers.rb def self.extended(base) base.register_default_template_handler :erb, ERB.new base.register_template_handler :builder, Builder.new base.register_template_handler :raw, Raw.new base.register_template_handler :ruby, :source.to_proc end慶幸的是,目前 Rails 已經把預設的 template handler 從 ERB 改成 RAW,不會輕易把要 render 的檔案當成 ERB 執行了。詳細的內容請參考這個 commit。
結論Ruby on Rails 能讓開發者較輕鬆的開發出安全的應用程式,然而,若開發者不注意,還是有可能寫出嚴重的漏洞。本文的動態樣板路徑就是這樣一個例子,它不只是 OWASP 所描述的可以存取任意模版而已,它可以遍歷檔案,甚至因為 rails 預設的 template handler 是 ERB,造成遠端命令執行讓攻擊者取得伺服器操作權。
這個例子又再次驗證,框架可以幫助大家快速開發,增加安全度。但唯有良好的安全意識,才是應用程式安全的基石。
註解Remote Jeep Hacking Successful: Time to Patch Your Car?
This blog post was written by Bruce Snell. Next month I’ll be moving back to the US after a few...
The post Remote Jeep Hacking Successful: Time to Patch Your Car? appeared first on McAfee Blog.