まったり技術ブログ

Technology is power.

【随時更新】Webセキュリティ診断ツールのまとめ

f:id:motikan2010:20181020180235j:plain

  • GUIアプリケーション型
    • Burp Suite
    • OWASP ZAP
      • zap-cli
    • Fiddler
      • Watcher
      • X5S
  • コンソールアプリケーション型
    • w3af
    • Arachni
    • Scan My Server
    • Sucuri
      • 診断結果
    • Web Inspector - Free Website Malware Scanner
      • 診断結果
    • WhatWeb
    • Skipfish
    • Nikto
    • Vega
    • Grabber
    • Wapiti
    • WebScarab
    • Ratproxy
    • SQLMap
    • Wfuzz
    • Grendel-Scan
    • WAScan
    • Paros
  • SaaS
    • VAddy
    • Walti
      • 特徴
      • 診断種別
      • 「Web Server」のスキャン結果
      • 料金
    • Acunetix WVS
    • Qualys - Web Application Scanning
    • UpGuard - Cloud Scanner
      • 診断結果
    • Tinfoil Security
      • 診断結果
        • 診断結果トップ
        • 脆弱性一覧
        • 脆弱性詳細
  • 参考

GUIアプリケーション型

Burp Suite

公式 Burp Suite Scanner | PortSwigger
https://portswigger.net/burp
  • 診断を実施する上で便利な拡張プラグインが公開されている。独自に作成・公開することも可能です。 PortSwigger Web Security · GitHub

  • GUIアプリケーション

  • シナリオ型の設定可能

OWASP ZAP

公式 OWASP Zed Attack Proxy Project - OWASP
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
GitHub https://github.com/zaproxy/zaproxy
  • GUIアプリケーション
  • スパイダー型(簡易スキャン)

    zap-cli

  • Cookieの設定はコンテキストを読み込ませる必要があり難しそう

Dockerfile-zap-cli https://gist.github.com/Grunny/6ea8d48d711c6ad28064

Fiddler

Windows上のデバッグでよく用いられるプロキシ。 今はMac OS向けもあります。
アドオン(Watcher、X5S)を追加することによって診断を行うことが可能になります。

OWASP Fiddler Addons for Security Testing Project - OWASP

Watcher

公式 Watcher: Web security testing tool and passive vulnerability scanner - CodePlex Archive
https://archive.codeplex.com/?p=websecuritytool
  • パッシブスキャン

X5S

公式 x5s - test encodings and character transformations to find XSS hotspots - CodePlex Archive
https://archive.codeplex.com/?p=xss
  • アクティブスキャン
続きを読む

LDAPインジェクションをしたかった話

f:id:motikan2010:20181005002942p:plain

今更ながらLDAPインジェクションがどのようなものなのかの検証をやってみました。

 LDAPインジェクションは脆弱性としてそこそこ有名であり、名前だけは目にすることがあるが、イマイチ実際に検証を行う気になれない脆弱性でもあると思う。特にLDAPの環境構築は手間になりそうだし。
 このままだとLDAPインジェクションを体験しないまま死んでしまってもおかしくないので、DockerでささっとLDAPインジェクションを行える環境を作ってみて、検証してみるとする。

  • 検証環境
    • ホスト
    • コンテナ
  • 構築
    • OpenLDAP
    • LDAPクライアントアプリケーション
      • 1. アプリケーションの用意
      • 2. コンテナの準備
      • 3. コンテナの実行
  • 動作確認
    • OpenLDAPの動作確認
    • 予想外の事態発生
  • 脆弱性の検証
    • 正常系の動作確認
    • 脆弱性の確認
  • ダメな対策
  • 対策
  • まとめ
  • 参考

検証環境

ホスト

  • Docker 18.06.1

コンテナ

  • OpenLDAP 2.4.44
  • PHP 7.0 (php-ldap)
続きを読む

【AWS】ECSで構築した環境でオートスケーリング

f:id:motikan2010:20180909111752p:plain

 「Docker(コンテナ) = 開発環境の構築に便利」という認識で止まっていましたが、最近では本番環境での利用のノウハウがネット上でも溜まりつつありますので、実際にどのようにして本番のコンテナ環境の構築・運用を実現しているのかを調べてみました。
 独自のコンテナツールを利用している企業(Netflix等)もありましたが、AWS上ではAmazon ECSというサービスが人気だそうなので、実際にさわってみました。(東京リージョンにはまだないですが、KubernetesをうんぬんするAmazon EKSもありだとか...)

 さわってみた感じ、何も考えなくでも複数のコンテナインスタンスで運用している場合にブルーグリーンデプロイメント(サービスを停止せずにデプロイ)が可能というのは非常にうれしいです。シェルで、ターゲットグループから外して、デプロイ後にターゲットグループに戻す、ということを書かずに済むので...。

 この記事では、環境の構築までを書き、オートスケーリングの検証・デプロイ時の挙動の確認は次の記事で書いていきます。

今回やりたいことのイメージ

f:id:motikan2010:20180909094103g:plain

続きを読む

【AWS】Security-JAWSの資料まとめ【第5~9回】

講演資料・スライド

第9回

◆ 【SecurityJAWS】Kibana Canvasで魅せる!AWS環境における脅威分析ユースケース

www.slideshare.net

◆ Security JAWS 【第9回】勉強会 WAFシグネチャとログとAI

www.slideshare.net

JAWS DAYSで話せなかった「Security x Serverless」の話

攻撃者視点から考えるAWS EC2セキュリティインシデントとその対応

自動車監視のためのクラウドソリューション(仮)

第8回

◆ # Security JAWS Amazon GuardDuty 20180223

www.slideshare.net

◆ 踏み台環境におけるAmazon Maice活用の提案 #secjaws #secjaws08 - Speaker Deck

speakerdeck.com

◆ VMware Cloud on AWS のご紹介 -セキュリティ風味-

www.slideshare.net

事例に学ぶ、Splunk×AWSセキュリティモニタリングの具体策(仮)

第7回

◆ AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?

www.slideshare.net

What you see is what you get 〜 インシデント対応するのに、まだログ分析で消耗してるの?

Infocage SiteShell on AWS

◆ Auth0でAWSの認証認可を強化

www.slideshare.net

◆ 失敗事例で学ぶ負荷試験

www.slideshare.net

AUTOMOXで俺たちのVulsが殺されるのか

第6回

◆ ざっくりわかるAmazon Macie - Speaker Deck

speakerdeck.com

◆ Security JAWS #6 - Speaker Deck

speakerdeck.com

AWSで実践するリスト型アカウントハッキング対策(仮) -

◆ DevSecOps in Multi Account

www.slideshare.net

AWS環境におけるフォレンジック(仮)

第5回

Deep SecurityとAWS WAF、SNS、Lambdaを使ってうまいこと自動防御する(仮)

セキュリティのあるべき姿とSOCの重要性(仮)

◆ 2017_0522 security-jaws_no5_Kawano_web_up

www.slideshare.net

◆ AWS使って社内CTFやってみたよ - とある診断員の備忘録

tigerszk.hatenablog.com

参加レポート

第9回

Security-JAWS 第9回レポート #secjaws #secjaws09 | Developers.IO
https://dev.classmethod.jp/cloud/aws/security-jaws-09-report/

第8回

Security-JAWS 第8回レポート #secjaws #secjaws08 | Developers.IO
https://dev.classmethod.jp/cloud/aws/security-jaws-08-report/

第7回

ASCII.jp:ハニーポットから負荷試験の失敗事例まで、Security-JAWS勉強会 (1/3) http://ascii.jp/elem/000/001/594/1594177/

Security-JAWS第7回レポート #secjaws #secjaws07 | Developers.IO https://dev.classmethod.jp/cloud/aws/security-jaws-07-report/

blog/20171113-Security-JAWS-7.md at master · wahho/blog https://github.com/wahho/blog/blob/master/20171113-Security-JAWS-7.md

第6回

ASCII.jp:たかがアカウント、されどアカウント、AWSでの運用ベストプラクティスは?
http://ascii.jp/elem/000/001/551/1551875/

ASCII.jp:オンプレとどこが違う? 実例に見るAWSでの不正アクセスの傾向と対策 http://ascii.jp/elem/000/001/549/1549718/

Security-JAWS第6回レポート #secjaws #secjaws06 | Developers.IO
https://dev.classmethod.jp/study_meeting/security-jaws-06-report/

2017/08/24 Security-JAWS 【第6回】参加レポート - やーまんぶろぐ
http://yamano3201.hatenablog.jp/entry/2017/12/26/104439

第5回

Security-JAWS第5回レポート #secjaws #secjaws05 | Developers.IO
https://dev.classmethod.jp/cloud/aws/security-jaws-05-report/

Security-JAWS#5レポート | cloudpack.media
https://cloudpack.media/31159

Security-JAWS#5レポート - Qiita
https://qiita.com/fnifni/items/73c9664aff0e639db62e

『生つべ』というサービス作ったので利用技術の紹介

先日、『生つべ』というWebサービス開発しました。リリースをしたのはよいが「完成!」と言えるような状態になるのは、まだまだ時間が掛かりそう。
どのようなサービスなのかを簡単に説明をすると「YouTubeの動画を皆で見ながらチャットしようよ」というもの。

namatube.motikan2010.com

ソースコードも公開してある。

github.com

利用している技術・API群の紹介

認証

このサービスでは、動画の登録にはログインすることが必要です。
 「Twitter」と「GitHub」アカウントを用いたOAuth認証方式のみをサポートしています。

サービス内だけの認証(ログインIDとパスワードを登録)も用意しようか迷いましたが、最近のWebサービスでは、認証方法にOAuth認証のみというのを目にするようになっているので、今回はOAuth認証のみとしました。(2つのサービスのOAuth認証は少ないと思われるが・・・)

この記事通りにやったらできました。

【Rails4.2.x】omniauth(twitter/facebook/github)実装まとめ

◆ なぜGitHubアカウント?
 Twitterアカウントは多くの人が持っているので、認証方法として適していると思うが、なぜこのサービスに持っている人が限られているであろうGitHubアカウントを用いているかというと、こんな経緯があったりします。
 サービス開発の当初は、技術者向けのサービスとして開発しようと考えいました。具体的には、YouTubeをはじめとするニコニコ動画などといった動画配信サービスに登録されている技術系の動画を1つのサイトにまとめ、検索・評価できるようなサービス。 の予定だったが、途中で微妙...と感じ断念_(:3 」∠ )_ 。

もともとは「Tech TV」というサービス名だったという名残があります。

add アイコンの追加 · motikan2010/NamaTube@714a89f · GitHub

チャット

f:id:motikan2010:20180712213852p:plain

Rails5になって「Action Cable」というWebSocketを簡単に扱えるようになる機能が追加されたので利用しました。

Action Cable の概要 | Rails ガイド

モデルの構成など大枠の作成こちらを参考にしました。

Rails 5 + ActionCableで作る!シンプルなチャットアプリ(DHH氏のデモ動画より)

今回は動画毎にチャットルームが異なるようになっているので、ルーム毎にメッセージを送る方法は下記を参考にしました。

Rails 5 Action Cable メッセージとルームを紐付ける。

タグ生成

f:id:motikan2010:20180712214102p:plain  動画新規登録時のタグ生成の処理は「Google Natural Language API」を利用して実現しています。 その中のエンティティ分析を活用することにより、動画タイトルから固有名詞のみを抽出し、タグとして登録しています。

Googleクラウド自然言語APIを使ってみた

▼ APIを利用しているのは、この辺り

NamaTube/analyze_entity_util.rb at 20180710 · motikan2010/NamaTube · GitHub

動画の再生位置の制御

f:id:motikan2010:20180712214135p:plain 動画の埋め込みは「YouTube Player API」を利用しています。このAPIを活用することによって、動画ページを開いた時の再生位置を制御できています。

iframe 組み込みの YouTube Player API リファレンス  |  YouTube IFrame Player API  |  Google Developers

動画再生ページを開いた時の時間によって再生位置を決めていますので、このサービスの肝である「みんなが同じ動画を見ている」というはこの部分で実現されています。

▼ この辺りで再生位置の計算・制御を行っている

NamaTube/videos.js at 20180710 · motikan2010/NamaTube · GitHub

動画のタイトル・再生時間の取得

動画のタイトルや長さを取得は「YouTube Data API」を利用しています。

API Reference  |  YouTube Data API (v3)  |  Google Developers

▼ APIを利用しているのは、この辺り

NamaTube/youtube_api_util.rb at 20180710 · motikan2010/NamaTube · GitHub

動的なフロント部分

 動的なUIを実現するために「jQuery」と「React」で迷ったのだが、保守的なことを考えてReactを採用することにしました。JSXの方がタグ構造を直感的に把握しやすく、書き直しが簡単だと感じているので。  フロントに関しては、ほぼ知識がないようなものなので、とりあえず動くのを目指して実装。

新規登録画面

f:id:motikan2010:20180712215519p:plain

まずはこっちの方をReactで実装した。
▼ソースコード NamaTube/new.js at 20180710 · motikan2010/NamaTube · GitHub

編集画面

f:id:motikan2010:20180712215534p:plain
 最初は「React DnD」というライブラリを利用して、ドラッグ&ドロップで上下移動させることを考えていたのだが、想像よりも実装に時間が掛かりそうだったので断念。
 結局、ボタン押下で上下移動させるようにした。

React DnD

▼ソースコード

NamaTube/edit.js at master · motikan2010/NamaTube · GitHub

今後(TODO)

▲優先度高

  • トップページ(ランディングページ)の作成
  • スマホ向けのレイアウト
  • OAuth認証の対象を増やす
  • HTTPS化
  • マイページの拡充
  • アプリ固有のエラー画面の作成
  • React(フロント)側のリファクタリング
  • MySQLへの移行

▼優先度低