MARK3 Hacking

AWS・python・security・vulnerability・IoT

Burp2.0の新しいクローラーが楽しみ Burp's new crawler

Burpが10年越しにメジャーバージョンアップを予定しています。

いつもお世話になっているので、いろいろ機能が増えると助かります。

 

今回は、その中でも一番注目している「クローラー」の記事を翻訳しました。

portswigger.net

それでは本文です。意訳している部分もありますので、間違いがあればお助けください。

Burp's current Spider tool has a number of significant limitations that prevent it from working effectively with modern web sites. Its core model is based on outdated assumptions about how web sites work, which don't apply today.

現在のSpiderツールは、古いWebサイトの仕組みをモデルとして作られていますが、昨今の世に出ているWebサイトには当てはまりません。現代のWebサイトを効果的にクロールするには重大な制限があります。

SpiderはWebサイトの規模感を図る程度でしか使えないだろうと思っていましたが、今回のバージョンアップで主戦力になるかもしれないと期待しています! 

 

The Spider tool maintains a queue of pending requests. It works through the queue issuing each request, looks in the responses for new links and forms, and adds the relevant requests to the queue. This approach worked pretty well for sites that have unique and stable URLs for each function, use simple cookie-based session handling, return deterministic content in each response, and contain no server-side state. But most applications today aren't like that. So we're replacing the Spider tool with something better.

現在のSpiderツールは保留中のリクエストを保持しています。これは、リクエストを送信した際に、新しいリンクやフォームのレスポンスを調べ、関連するリクエストを保持しているということです。 

このアプローチは、下記のようなWebサイトではうまく機能しました。

・機能ごとにユニークで安定したURLを使用しているサイト 

・単純なCookieベースのセッション処理を使用しているサイト 

・各レスポンスで確定的なコンテンツを返すサイト 

・サーバー側の状態を含まないサイト 

しかし、現代のWebサイトはそうではありません。そこでSpiderツールをより良いものに置き換えています。

確かに最近のサイトは、機能が違ってもURLが同じだったり、レスポンスの内容もリクエストによって大きく変わってしまうことが多いです。

単純なCookieベースじゃないセッション処理っていうのは、どういうものなんでしょうか。

  

Burp's new crawler uses a radically different model. It navigates around a target application in the same way as a user with a browser, by clicking links and submitting input. It constructs a map of the application's content and functionality in the form of a directed graph, representing the different locations in the application and the links between those locations:

新しいクローラは根本的に異なるモデルを使用します。

リンクをクリックしたり、フォームに入力したりすることによって、ブラウザを使用するユーザーと同じ方法で、対象のWebサイトを巡回するということです。

Webサイトの画面間やリンクによる画面遷移を有向グラフで表し、Webサイトのコンテンツと機能のマップを作成します

直接的に保持しているリクエストを送信するのではなく、きちんとリンククリックなどしてe2e的な感じでクロールしていくってことですね。

そして、目玉の「マップ作成」これが超楽しみです!

 

f:id:madamadaikeru222san:20180824160429p:plain

akes no assumptions about the URL structure used by the application. Locations are identified (and re-identified later) based on their contents, not the URL that was used to reach them. This enables the crawler to reliably handle modern applications that place ephemeral data such as CSRF tokens or cache-busters into URL paths. Even if the entire URL within each link changes on every occasion, the crawler still constructs an accurate map:

新しいクローラでは、URL構造は関係ありません。Locationは、そこに到達するまでに遷移してきたURLではなく、Locationの内容に基づいて識別されます。これによりクローラは、CSRFトークンやcache-busterなどの一時的なデータをURLパスに配置するWebサイトでも確実に処理できます。毎回各リンク内のURL全体が変更されても、クローラは正確なマップを作成します。

ややこしいけど、巡回するURLに可変的なデータが含まれている場合でも、きちんと巡回できますってことでしょうか。

今までだと可変データごとURLを保持していたので、使用期限が切れたデータが付加されたURLにアクセスして失敗していたことが解消されるとなれば、クローラーにおける見落としは減る気がします。

 

The approach also allows the new crawler to handle applications that use the same URL to reach different locations, based on the state of the application or the user's interaction with it:

Webサイトの状態やユーザとの相互作用に基づいて、同じURLを使用して異なる画面にアクセスするWebサイトを処理できます。

シングルページアプリケーションでもクローラ使えるのは大きい進歩ですね。

 

The old Spider tracked its remaining work using a queue of pending requests. The new crawler has to track its remaining work in a different way. 

現在のSpiderツールは保留中のリクエストを使用して残りの巡回箇所を追跡しています。新しいクローラは、残りの作業を別の方法で追跡しなければいけません。

 現在方法だと、最近のWebサイトではうまく動かないんでしたね。

 

As the crawler navigates around and builds up coverage of the target application, it tracks the edges in the graph that have not been completed. These represent the links (or other navigational transitions) that have been observed within the application but not yet visited. But the crawler never "jumps" to a pending link and visits it out of context. Instead, it either navigates via links from its current location, or reverts to the start location and navigates from there. This replicates as closely as possible the actions of a normal user with a browser:

クローラは対象のWebサイトを巡回しながら進捗管理し、完了していない箇所を追跡します。これらは、Webサイト内で観察されたがまだ遷移していないリンク等を表す。しかし、クローラは決してこれらのリンクに直接「ジャンプ」しません。代わりに、現在のLocationからのリンクを経由して遷移するか、開始場所に戻ってそこから遷移します。これが、ユーザのブラウザ操作に可能な限り近づけた遷移方法です。

機械的なリクエスト送信ではなく、人為的なブラウザ操作を模すことで、セッション切れなど今までのSpiderでネックとなっていた個所をフォローしているようですね。

例えば右上にいるクローラ(ロボット印)が右下のロボット印に遷移したい場合でも、一度開始場所に戻ってきちんと遷移をたどってくれるということです。

 f:id:madamadaikeru222san:20180824164955p:plain

【まとめ】

Burp2.0で新しくなるクローラは 、

・リクエストをただ送信するだけではなく、対象の画面までのリンクをきちんとたどって巡回する

・URLに一時的なデータが含まれている場合でも、問題なく巡回が可能

・巡回結果をマッピング作成してくれる

・シングルページアプリケーションにも対応している

 

結構リクエスト数が増えるので、ただでさえ時間がかかるSpiderがもっと時間がかかる作業なるような気もしますが、Spider放置するだけで診断対象の箇所を洗い出せるなら試す価値はあるかもしれません!

神戸脆弱性診断の会 #1

こんにちは Markです。

神戸脆弱性診断の会の#1が無事終了しました。

はじめての勉強会だったので準備のため夜更かしが続き、お肌の調子がすごく悪いです。

ただ、勉強会自体は初回にも関わらず満員以上の応募で大成功でした!!

f:id:madamadaikeru222san:20180114161547j:plain

 

# 神戸脆弱性診断の会では何をするか

 

関西には脆弱性診断に関する勉強会がなかったので、この勉強会を中心に情報共有の場が広がっていき、関西の苦しむ診断員または診断を依頼する人、診断を社内実施したい人のコミュニティになっていければいいと思います!

もちろん、学生さんの参加も大歓迎です。今回も3割くらい学生さんで驚きました!勉強意欲すごいな~。 

 

facebookgroup 

https://www.facebook.com/groups/1407869585989208/

slack

https://join.slack.com/t/kobevat/shared_invite/enQtMjk2MDM3NTkzMDQ1LWExMTU4YmRlM2RiOWVkNThiYzU2Y2Y2OTdkMDA2NzBhN2Y5OGUwMWVkNTBjZTYwM2M1YmEyZGFlZmQ0ZmI3OWQ

 

# もくじ 

f:id:madamadaikeru222san:20180114154337p:plain

メインは「ハンズオン」ですね。

セキュリティ診断、Webアプリケーション、診断ツールについての情報はインターネット上にたくさんあるのであまり重視しませんでした。

Webアプリケーション診断のことを学習する際に最低限必要な「ホワイトボックスう診断とブラックボックス診断のちがい」「ツール診断とマニュアル診断の違い」「HTTPリクエスト」「XSS」「SQLI」ぐらいをさらっと説明しました。

 

# ハンズオン

f:id:madamadaikeru222san:20180114155728j:plain

今回の内容は「プロキシ機能」「リクエスト改竄」「動的スキャン」とすごく初歩的な内容でしたが、脆弱性診断の入門としてはちょうどいいレベル感だったかと思います。

 

僕自身は診断について勉強するときに、脆弱性の勉強から始めました。しかし、実際の診断作業をするまで全然理解できていませんでした。百聞は一見に如かずはその通りだと思います。

 

# 今回の目玉

ZAPについて説明していたのですが、「ZAPで診断する~」みたいな記事やブログはたくさんあるのでそこらへんは省きます。

ZAPの設定にフォーカスをあてて「Global Exclude URL」についてです。

f:id:madamadaikeru222san:20180114160740p:plain

これはZAPのサイトタブや履歴タブに診断に余計なページの情報を表示させないようにする設定です。

例えば、脆弱性診断では「.js」や「.css」「.png」など静的なページに対しては診断を実施しません。ただ、Webサイトではこれらの拡張子に対するリクエストは必ずあります。そのリクエストがZAPのサイトタブや履歴タブに含まれて診断しにくい!管理しにくい!見にくい!と色々と面倒なんです。

Global Exclude URLに設定しておくことで、診断作業が効率的になること間違いなし!まだ使っていない方は是非!

 

 # 次回

 今回の検証環境が不完全だったこともあるので、もう一回くらいこの内容をやっていこうと思います。

追加で、アドオンやスクリプトについて、他のペンテストツールについても説明しようと思います。

 

 

 

Google home mini が届きました。

Google home mini が届きました。

謎の半額セールでラッキー!

f:id:madamadaikeru222san:20171217161508j:plain

 

「今日はどんな日」「ダヴィンチってだれ?」など

普通に呼びかけるだけで検索などしてくれます。

 

音楽サービス「Spotify」との連携で音楽も無料で聞けます。

 

サードパーティアプリとの連携も可能とのことですが、

「食ベログ」「SUUMO」などうまくできなかったです。(Wifiのせいかも)

 

そして、おもしかったのは「IFTTT」との連携ですね。

「Line で ありがとう と送信」といえば、特定のグループにメッセージの送信ができます。これはなかなかおもろいですね〜。

f:id:madamadaikeru222san:20171217161502j:plain

 

他にもいろいろなサービスとの連携ができるようなのでIFTTTは少し触ってみます。

 

ドロン。