まったり技術ブログ

Webエンジニアのセキュリティブログ

Laravelで学ぶ「安全でないデシリアライゼーション」

  • はじめに
  • 環境
  • 事前知識
    • 1つのPHPファイルでやってみる
    • なぜOSコマンドが実行されたのか
    • なにが問題なのか
  • Laravel でやってみる
    • 修正内容
    • 脆弱性の確認
    • OSコマンド呼び出し部分の確認
      • Illuminate/Broadcasting/PendingBroadcast クラス
      • Faker/Generator クラス
  • PHPGGC(PHP Generic Gadget Chains)
    • PoCを出力する
  • 対策
    • unserialize関数に渡す値はバリデーションを行う
    • allowed_classesオプションの付与(※非推奨な対策)
  • まとめ
  • 更新履歴

はじめに

 OWASP Top 10 - 2017に「A8:安全でないデシリアライゼーション」がありますが、この脆弱性が顕在化 することは少なく、あまり身近ではないかなと感じています。ということで今回は本脆弱性がどういったものなのかを簡単に手元で試すことができるLaravelを用いて説明します。
 PHPオブジェクトインジェクション(PHP Object Injection)を試すことになります。

続きを読む

【セキュリティ】motikan2010作サイト『オープンハニーポット』とは

※金欠の為、当サービスは終了いたしました。


  • はじめに
  • どのようなサイト?
  • 各画面の説明
    • トップ
    • リクエスト一覧
    • リクエスト詳細
    • 時間別アクセス数
    • 日別アクセス数
    • ログイン画面
  • 今後
  • 参考
  • 更新履歴

はじめに

 前回のブログ更新から1ヶ月以上経ち、たまには更新をしないといけないと思ったので最近私が作成したサイトを簡単に紹介することにします。
 その名は『オープンハニーポット』!!
 まだ β版 ということで挙動がおかしい部分がありますが、興味のある方は是非さわってみてください。

http://honypot.motikan2010.com/honypot.motikan2010.com

どのようなサイト?

ハニーポットという名が入っていることからもわかる通り、ハニーポットに関係しているサイトです。
 このサイトには私が運用している複数のハニーポットのアクセスログが保存されており、誰でもそのログを閲覧することができます。ちなみに今は4台のハニーポットからログを収集しています。

 その4台上で動作しているハニーポットは全て同じですが、動作させているクラウドサービスがそれぞれ異なっており、「AWS」「GCP」「Azure」「Alibaba Cloud」を利用しています。
 その意図としては、クラウドサービスごとに攻撃の種類が異なるのかを観測したかったというのがあります。(実際は軽く確認した感じ、差異はありませんでした・・・)

 「オープンハニーポット」では、それらのハニーポットで収集されたアクセスログの詳細や時間別のアクセス数などを確認することができます。

続きを読む

CVE-2019-11581 - 「Atlassian JIRA サーバーサイド・テンプレート・インジェクション」について調べてみた

  • はじめに
  • 概要
    • 脆弱性についてより詳しく
  • 検証情報(キャプチャ画像有り)
    • PoC(検証コード)
    • 検証
      • 検証パッケージ(Jira Server 7.13.4)
      • Jira Server インストール手順(AWS)
    • 攻撃可能な設定
  • 対応
  • まとめ
  • 追記
  • 更新履歴

はじめに

 プロジェクト管理ツールとし有名な Jira Server の脆弱性が見つかりました。

 脆弱性を含んでいるバージョンを利用しているかつ、特定の設定を有効にしている場合に、未ログインユーザでも「サーバーサイド・テンプレート・インジェクション(server-side template injection)」攻撃が可能ということで少し調べてみました。

 Poc も存在しており、実際にその検証している様子もありますので、Jiraサイトをパブリックに公開している運用している場合には、バージョンの確認・設定の確認をしてみたほうがよいでしょう。

続きを読む

最悪の管理画面URLランキング

f:id:motikan2010:20190617024001p:plain
  • はじめに
  • 確認したツール
  • 最悪な管理画面URLランキング
    • 1位 - 全てのツールで検索対象
    • 2位 - 5つのツールで検索対象
    • 3位 - 4つのツールで検索対象
    • 4位以下 - 1~3つのツールで検索対象
  • まとめ
  • 更新履歴

はじめに

 Webサイトの管理画面が推測されることにより、サイトの改ざん等の被害が増えてきているようで、先月(5/9)にEC-CUBEでは下記のような注意喚起がありました。

 以下、注意喚起の一部抜粋。

  1. 管理画⾯の URL が /admin/ など推測されやすい URL になっていないか 管理画⾯の URL を変更せず /admin/ のままで運⽤していた場合、攻撃者が管理画⾯にア クセスしやすい状況になっておりますので、 早急に変更をお願いします。

【重要】サイト改ざんによるクレジットカード流出被害が増加しています。

 ここで述べられている推測されやすいURLの代表例として、ツールによって発見されるURLであることがあります。
 なので今回は各ツールがどのようなURL(管理画面へのパス)を検索しているのかを調べてみました。

確認したツール

 今回確認したツールは以下の6つです。

  • OWASP ZAP
  • Arachni
  • Nikto
  • skipfish
  • Wfuzz
  • WAScan

最悪な管理画面URLランキング

1位 - 全てのツールで検索対象

admin
administrator

 「admin」「administrator」パスはツール全てで検索されていました。

 EC-CUBEでは、インストール時に管理画面のパス名を指定することができるようになっていますが、「admin」というパス名は指定できないようになっており「admin」がパスとして利用される危険性の配慮がなされていることが分かります。

 実際に下画像のように「admin」を管理画面のパスに指定すると、エラーメッセージが表示されることが確認できます。
f:id:motikan2010:20190616204123p:plain:w500

続きを読む

WAF for Nginx「NAXSI」を動的モジュールとして読み込む

NAXSI-Logo
NAXSIのロゴ

  • はじめに
  • 環境
  • 導入作業
    • Nginxインストール
      • リポジトリ追加
      • インストール
    • NAXSIモジュールをビルド
    • NAXSIモジュールのロード
    • ログファイルの作成
    • Nginx設定ファイル修正
    • Nginxの起動
    • 動作確認
      • 不正なリクエストを送信
      • 検出ログ
    • ブロックはしたくないけど、検出はしたい
    •  参考

はじめに

 NAXSI(Nginx Anti XSS & SQL Injection)はOSSのWAFであり、スター数が3,000を超える人気を誇っており、利用してみたくなったので、インストールしてみました。
 ちなみにOSSのWAFとして有名なModSecurityのスター数は約2,800です。(NAXSIすごい...)

github.com

環境

  • CentOS 7.4
  • Nginx 1.16.0
  • NAXSI
続きを読む

CookieのSameSite属性で「防げるCSRF」と「防げないCSRF」

 CookieのSameSite属性はCSRF対策のために提案されたもので、その属性をCookieに付与するだけでほとんどのサイトの場合はCSRF対策が可能になります。
しかし、SameSite属性の付与が今までのCSRF対策の代わりになり、今まで行ってきたCSRF対策をしなくてよくなるというわけではありません。

 CSRF対策の為に提案された属性ですが、サイトの特性によってはCSRFを防ぐことができない場合があります。
今回は、その「防げないCSRF」とはどういったものであるのか、一例をあげます。

 そして実際にSameSite属性付与が付与される脆弱なサンプルサイトを使って説明していきます。

目次

  • 目次
  • TL;DR
  • サンプルアプリケーションを用いての検証
    • サンプルサイトの機能
    • CSRFの確認
      • CSRFトークンを用いている場合
      • SameSite属性を用いている場合
  • まとめ

TL;DR

  • 「防げるCSRF」とはセッションが存在しているサイト
  • 「防げないCSRF」とはセッションを利用していないサイト
  • SameSite属性は充分にCSRF対策の効果がある
続きを読む

LaravelのセッションCookieにSameSite属性を付与

  • はじめに
  • TL;DR
  • 検証環境
  • SameSite属性とは
  • SameSite属性が付与されるように設定
    • 設定変更
      • 設定前に発行されるCookie情報
      • 対応Laravelバージョンについて
      • 設定ファイルの編集
    • 確認
      • 設定後に発行されるCookie情報
  • まとめ
  • 参考
  • 更新履歴

はじめに

 Cookieの属性に「Domain」「path」「Max-Age」「Expires」「Secure」「HttpOnly」があるが、 『SameSite』というのも存在していることを知っていたか!? 私は最近まで知らなかった(恥ずかしい)

 2016年から存在しており現在、主要なブラウザではサポートされているらしい。

--- 追記 2020/2/4 ---
 2020年2月リリース予定の Chrome 80 からはSameSite属性の値がないCookieはSameSite=Laxが付与されたものとして扱われるとのこと。

 SameSite属性を無効にしたい場合は明示的にSameSite=Noneを設定する必要があります。
Google Developers Japan: 新しい Cookie 設定 SameSite=None; Secure の準備を始めましょう

 LaravelのデフォルトではSameSite属性を付与しないようになっているため、SameSite属性を無効にする場合は「none」を明示的に指定する必要があります。
----- ここまで -----

そんな認知度が低そうな属性をLaravelで設定できるのかを確認してみる。

TL;DR

  • Laravel 5.5.0 からサポート
  • config/session.php を編集することでSameSite属性の値(Strict / Lax)の設定可能
続きを読む

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

  • GUIアプリケーション型
    • Burp Suite
    • ZAP
    • zap-cli
    • Fiddler
    • Vex
    • Watcher
    • X5S
  • コンソールアプリケーション型(CUI型)
    • SQLMap
    • NoSQLMap
    • w3af
    • Arachni (終了)
    • SCNR
    • Scan My Server (※提供終了)
    • WhatWeb
    • Skipfish
    • Nikto
    • Vega
    • Grabber
    • Wapiti
    • WebScarab
    • Ratproxy
    • Wfuzz
    • Grendel-Scan
    • WAScan
    • Paros
  • SaaS型
    • VAddy(バディ)
    • AeyeScan(エーアイスキャン)
    • komabato(コマバト)
    • Securify(セキュリファイ)
    • secuas(セキュアズ)
    • Walti (※提供終了)
      • 特徴
      • 診断種別
      • 「Web Server」のスキャン結果
    • Acunetix WVS
    • Qualys - Web Application Scanning
    • UpGuard - Cloud Scanner
      • 診断結果
    • Tinfoil Security
      • 診断結果
        • 診断結果トップ
        • 脆弱性一覧
        • 脆弱性詳細
    • Sucuri - Free Website Malware Scanner
      • 診断結果
    • Web Inspector - Free Website Malware Scanner
      • 診断結果
  • 参考

GUIアプリケーション型

 玄人向けのアプリケーションが多い印象です。

Burp Suite

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

  • GUIアプリケーション

  • シナリオ型の設定可能

ZAP

公式 ZAP
https://www.zaproxy.org/
GitHub https://github.com/zaproxy/zaproxy
  • GUIアプリケーション
  • スパイダー型(簡易スキャン)
  • 2023年8月にOWASPから離れた。そのため「OWASP ZAP」ではなくなった。

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

Vex

日本の会社が開発しているツールです。

公式 https://www.ubsecure.jp/vex

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インジェクションをしたかった話【セキュリティ】

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

はじめに

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

 LDAPインジェクションは脆弱性としてそこそこ有名であり、名前だけは目にすることがあるが、イマイチ実際に検証を行う気になれない脆弱性でもあると思う。特にLDAPの環境構築は手間になりそうだし。

 このままだとLDAPインジェクションを体験しないまま死んでしまってもおかしくないので、DockerでさくっとLDAPインジェクションの検証環境を構築し体験してみるとする。

検証環境

ホスト

  • Docker 18.06.1

コンテナ

続きを読む

【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

XSSI(Cross-Site Script Inclusion)攻撃とは【セキュリティ】

f:id:motikan2010:20180303225303p:plain:w500
  • はじめに
  • 攻撃名からの勝手な予想(※誤り)
    • 結局何ができるのか
  • Same-Origin Policyを確認
  • XSSIは結局何ができるのか
    • 脆弱性が存在するサイト(bank.example.jp)
      • トップページ(index.php)
      • シークレットコードを生成し、JSONPを活用(userdata.php)
    • 攻撃者が用意したサイト (evil.example.com)
      • トップページ (index.html)
  • 対策
    • CSRFトークンによる対策
  • まとめ
  • 事例
    • 事例1 : Pulse SecureのVPN製品(CVE-2019-11540)
  • 参考記事
  • 更新履歴

はじめに

 今回はWebセキュリティのお話です。

 とある機会にXSSI(Cross-Site Script Inclusion : クロスサイト・スクリプト・インクルージョン)攻撃というワードが話に出てきて、その攻撃が正直分からず困惑してしまったので、その攻撃について調べてみました。

 結論としては「Same-Origin Policy制限外のJSONPなどからは機密情報を外部ドメインから取得できる攻撃」です。

 本記事では、脆弱性あるサンプルアプリケーションを使い、実際に攻撃を行ってみて当脆弱性を確認していきます。

続きを読む

【THE 備忘録】Burp Suiteを使ってHTTPSサイトにアクセス

  • はじめに
  • やること
  • 使ったブラウザ
  • 手順
    • 1. 初期状態だと証明書エラー
    • 2. 証明書のダウンロード
    • 3. インポート済みの証明書一覧を表示
    • 4. ダウンロードした証明書をインポート
    • 5. ダイアログの上部にチェック後、「OK」
    • 6. 証明書がインポートがされたことを確認
    • 7. HTTPSサイトにアクセス

はじめに

 証明書のインポート毎に忘却しており、証明書探しの旅に出てしまっているので「THE 備忘録」

やること

  • Burp SuiteのSSL証明書を Firefox にインポート

使ったブラウザ

  • Firefox : 57.0.4

手順

1. 初期状態だと証明書エラー

f:id:motikan2010:20180124004545p:plain:w600

続きを読む