まったり技術ブログ

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

最悪の管理画面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

続きを読む

SQLインジェクション体験ツール『SQLI-LABS』で遊ぶ

f:id:motikan2010:20201130185745p:plain:w600

  • はじめに
  • 環境構築
    • インストール
    • データベース設定
    • データベース・テーブル初期化
  • 動作確認
    • Less-1 (GET - Error based - Single quotes - String)
    • Less-5 (GET - Double Injection - Single Quotes - String)
    • Less-10 (GET - Blind - Time based - double quotes)
      • level 1 ⇒ 失敗
    • Less-11 (POST - Error Based - Single quotes - String)
    • Less-18 (POST - Header Injection - Uagent field - Error based)
    • Less-23 (GET - Error based - strip comments)
    • Less-53 (GET - Blind based - ORDER BY CLAUSE - String - stacked injection)

はじめに

 今回は「SQLI-LABS」を利用してさまざまなSQLi(SQL Injection)を学んでいきます。
SQLI-LABS はSQLi用やられWebアプリケーションで、SQLi攻撃を実際にやってみることでSQLiについて学ぶことができます。

  SQLI-LABS は65種類(問題一覧からは75問あるように見えたが404だった...)のSQLiを学べるらしいので早速遊んでみました。

 動作DBはMySQLです。

環境構築

インストール

 インストールは非常に簡単で、リポジトリをWebサーバ上のドキュメントルート上に配置するだけ。

$ cd /var/www/html/
$ git clone https://github.com/Audi-1/sqli-labs.git
$ cd sqli-labs
続きを読む

Sambaの脆弱性〜CVE-2017-7494をやってみる〜

f:id:motikan2010:20170531012815p:plain
  • はじめに
  • 環境構築
    • Sambaのインストール事前準備
    • Samba(4.5.9)をインストール
    • 外部からの通信許可
    • 動作確認
    • Sambaアカウントの作成
    • 外部からのSambaへの接続を許可する
    • Sambaを起動
    • プロセスの確認
    • Sambaへ接続
  • PoCを試してみる
    • 攻撃側
    • Samba側
  • PoCを実行
    • 攻撃側
    • Samba側(デバッグ内容)
    • 追記(2017/5/31)
  • 再度PoCを実行してみます。
    • 攻撃側
    • Samba側(デバッグ内容)
  • まとめ

はじめに

 2017年5月24日に公開された、ファイル共有によく利用されるSambaの脆弱性「CVE-2017-7494」を実際に構築・PoCでの検証を行ってみます。

f:id:motikan2010:20170531215510j:plain:w600

 脆弱性の概要・対策に関しては、下記の記事が参考になります。
Red Hat Customer Portal

oss.sios.com

続きを読む

【セキュリティ】jwt-goを使ってみる - その1

f:id:motikan2010:20170512014516p:plain:w500
  • はじめに
  • 動作確認
    • サンプルなどでよく見られる"HS256"を使用
      • ①トークン必要URLにアクセス
      • ②トークンを取得
      • ③発行されたトークンを送信
      • ④トークンを改ざんして送信
    • 危険と言われている署名の検証なし"None"を使用
      • ①トークン必要URLにアクセス
      • ②トークンを取得
      • ③トークンを改ざんして送信
  • 更新履歴

はじめに

 前回、RailsのJWTライブラリである"knock"を使って署名アルゴリズムにNoneを使えるのかを試してみた(使えなかった)ので、今回はGo言語のJWTライブラリである"jwt-go"を使って、署名アルゴリズムに「SHA256」と「none」を試した(使えた)ことを書いていきます。
motikan2010.hatenadiary.com

github.com

続きを読む