脆弱性について

主にウェブアプリケーション、サイトについて


Index

  • A 概要
  • B 脆弱性を自分で体験する診断ツール
  • C 一般的な区分
  • D それぞれの詳細、対策
  • E 補足,未整理

A 概要


B 脆弱性を自分で体験する診断ツール

脆弱性診断ツール OWASP ZAP vs 脆弱性だらけのWebアプリケーションEasyBuggy

Owasp Top 10なども参考に

セキュリティ・脆弱性診断無料ツール・有料サービスの比較と選び方


C 区分

1 認証

  • [ ] 1-1 パスワードポリシー
  • [ ] 1-2 不適切な認証
  • [ ] 1-3 脆弱なパスワードリマインダ

2 承認

  • [ ] 2-1 セッションの推測
  • [ ] 2-2 不適切な承認
  • [ ] 2-3 セッションの固定
  • [ ] 2-4 クロスサイトリクエストフォージェリ

  • [ ] 2-5 補足:Cookieで「secure 属性」を指定 保険的な対策

  • [ ] 2-6 セッションハイジャック

3 クライアントがわでの攻撃

  • [ ] 3-1 クロスサイトスクリプティング
  • [ ] 3-2 コンテンツの詐称

4 コマンドの実行

  • [ ] 4-1 バッファオーバーフロー
  • [ ] 4-2 書式文字列攻撃
  • [ ] 4-3 LDAP インジェクション
  • [ ] 4-4 OS コマンドインジェクション
  • [ ] 4-5 SQL インジェクション
  • [ ] 4-6 SSI インジェクション
  • [ ] 4-7 XPath インジェクション

5 情報公開

  • [ ] 5-1 ディレクトリインデクシング
  • [ ] 5-2 ソース記載による情報漏えい
  • [ ] 5-3 推測可能なリソース位置

  • [ ] 5-4 ディレクトリトラバーサル

6 ロジックを狙った攻撃

  • [ ] 6-1 機能の悪用
  • [ ] 6-2 パス・トラバーサル
  • [ ] 6-3 リダイレクタ
  • [ ] 6-4 不適切なプロセスの検証

7 その他、概念的にまとめた物

  • [ ] 7-1 ヌルバイト攻撃
  • [ ] 7-2 メールヘッダ・インジェクション、メール第三者中継
  • [ ] 7-3 HTTPヘッダインジェクション、HTTPレスポンス分割攻撃
  • [ ] 7-4 スクリプトインサーション

D それぞれの詳細、対策

1 認証

1-1 パスワードポリシー

簡易なパスワードにしないなどのポリシー

1-2 不適切な認証

1-3 脆弱なパスワードリマインダ

パスワードを忘れた場合に、QAなどでログインできてしまうやつ

2 承認

  • 対策コード
// HTTPS限定の物を含む設定
session_name("randamunasuujinadonado"); // A) sessionidを任意の物に変更
ini_set('session.cookie_secure', 1); // B) secureな状態でのみcookieの通信を行う。

//有効期限を設定、例えば1日
$exipires__dd = 60*60*24 ; 
ini_set('session.gc_maxlifetime', $exipires__dd);
ini_set('session.cookie_lifetime', $exipires__dd);
session_start();
  • 補足: session.cookie_secureを設定するとhttp環境ではアクセス毎にクッキーが更新されてしまう。
    https下で使うのが望ましい。

  • 補足: session,cookie それぞれの有効期限の話
    https://teratail.com/questions/33522

2-1 セッションの推測

セッションIDの推測

  • PHPSSEIDのように推測しやすいやつ
  • 連番によるセッションID
  • 桁数の少ないセッションID
  • ユーザ情報を単純にハッシュしたセッションID

2-2 不適切な承認

不適切な承認

cookieの書き換えでログイン状態になるとか・・・

2-3 セッションの固定

セッションの中身までが固定で決まってる・・・・

2-4 クロスサイトリクエストフォージェリ

CSRF対策

csrf対策用のhiddenキーを仕込むのも一般的

2-5 補足:Cookieで「secure 属性」を指定 保険的な対策

2-6 セッションハイジャック

3-1 対応


# 対策系 # 全てsページの場合での注意は必要 Header always append X-Frame-Options SAMEORIGIN Header always set X-Content-Type-Options "nosniff" Header always set X-XSS-Protection "1; mode=block" Header set Strict-Transport-Security "max-age=315360000; includeSubDomains; preload"

3 クライアントがわでの攻撃

  • HTTP リクエストの作成などに / chrom extension REST Client
    https://qiita.com/KAZ0225/items/354b7726e650e9bda45d

上記でTRACEを送る方法で405で返ってくれば対策はされてると考えて良い。

3-1 クロスサイトスクリプティング

クロスサイトスクリプティング対策 ホンキのキホン

クロスサイトスクリプティング対策としてやるべき5つのこと

テンプレートエンジンを使う事により、対策となる物も

3-2 コンテンツの詐称

4 コマンドの実行

4-1 バッファオーバーフロー

4-2 書式文字列攻撃

4-3 LDAP インジェクション

4-4 OS コマンドインジェクション

http://senmon.cfc.ac.jp/studentreport/report2/OS.html

4-6 SSI インジェクション

http://securitychecklist.net/security/cyber-attack/SSL-injection.html

4-7 XPath インジェクション

ユーザの入力に基づき、XMLドキュメントに対してクエリーを発行するようなWebシステムで発生
http://www.soi.wide.ad.jp/class/20040011/slides/18/33.html

5 情報公開

5-1 ディレクトリインデクシング

ディレクトリリスティングの危険性と対策方法

ディレクトリリスティングの危険性と対策方法

5-2 ソース記載による情報漏えい

5-3 推測可能なリソース位置

http://www.soi.wide.ad.jp/class/20040011/slides/18/38.html

6-1 機能の悪用

6-2 パストラバーサルについて

ディレクトリ・トラバーサルと対策

6-3 リダイレクタ

オープンリダイレクタ脆弱性に気をつける

6-4 不適切なプロセスの検証

7 その他、概念的にまとめた物

7-1 ヌルバイト攻撃

7-2 メールヘッダ・インジェクション、メール第三者中継

7-3 HTTPヘッダインジェクション、HTTPレスポンス分割攻撃

7-4 スクリプトインサーション


E 補足,未整理

  • telnet

Windows telnet コマンドで入力文字を表示する方法

HTTP/TELNETを利用してHTTPレスポンスヘッダを確認する

※ ただしtelnetはhttpsなどに非対応

telnetはHTTPSを喋れないので、openssl s_clientを使えばいい

どんな場面でhtaccessを使うのか?

apcheのhttpd.confで、出来る物に関してはそちらで対応した方が良い。
運用上のリダイレクトや共用サーバーでconfファイルがいじれない場合などに利用する。

  • リダイレクト処理
  • アクセス制限
  • URLの統一

などに使用する


前提条件

httpd.confファイルにて,AllowOverrideが有効になっている必要がある

<Directory />
~中略~
AllowOverride None
~中略~
</Directory>

<Directory "対象となるディレクトリ 例) /var/home/www">
~中略~
AllowOverride All
~中略~
</Directory>


リダイレクト処理について

シンボリックリンクを許可し、RewriteEngineをOnにする

.htaccessのでRewriteEngineをOnにするにはOptions FollowSymLinksを設定しなければならないとApacheの公式サイトにあります。

Options +SymLinksIfOwnerMatch

リダイレクト処理について


アクセスの制限と許可

htaccessへの直接のアクセスを制限

直接ブラウザなどから.htaccessにアクセスできないように制限する。

<Files ~ "^\.ht">
deny from all
</Files>

BASIC認証

別途 .htpasswdファイルが必要

ベーシック認証の暗号化形式にも注意
Password Formats

AuthTYpe Basic
AuthName "Input your ID and Password"
AuthUserFile /home/current/.htpasswd
AuthGroupFile /dev/null
Require valid-user

  • AuthTYpe Basic

現行ダイジェスト認証に対応しているブラウザも多いため、そちらを利用するのも良い

AuthTYpe Digest
※ Digest認証だと、ユーザーIDとパスワードがハッシュ関数を用いて暗号化され解析されにくくなります。
  • AuthGroupFile /dev/null
    グループ指定が無いという意味、グループを使用する場合は
    .htgroupファイルが必要

    ※グループやRequire の記述で.htpasswdファイルは一つで
    各ディレクトリ毎に.htaccessを用意して権限を分けやすくするというメリットはある。

参照

IP制限

BASIC認証、もしくはIP制限

Satisfy Anyがポイント

Basic認証の記述 + Satisfy Any + IP制限、許可 の順番で記述する。

AuthType Basic
AuthName "Input your ID and Password"
AuthUserFile /home/current/.htpasswd
AuthGroupFile /dev/null
Require valid-user

Satisfy Any

order allow,deny
allow from 100.100.100.100

細かくはこちらを参照

その他、細かなファイルや拡張子単位での制限


URLの統一

httpsに統一する

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

wwwありなしの統一

※ 前提条件として www.はサブドメイン


番外 FTPのIPアクセス制限(.ftpaccess)

  • [FTP接続制御!IPアドレスによるアクセス制限設定をする方法](https://www.nkshopping.biz/index.php?
    FTP%E6%8E%A5%E7%B6%9A%E5%88%B6%E5%BE%A1%EF%BC%81IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E9%99%90%E8%A8%AD%E5%AE%9A%E3%82%92%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)

Index

初めての方へ

(ビギナー用セクション・プロジェクトマネージャー、ディレクター向け)
  1. はじめに
  2. ビギナー向け・ドキュメント
  3. 会話集

より深く追求される方へ

(開発者・フルスタックエンジニア向け)
  1. 検索と開発

1 はじめに

検索でサイト内検索としてgoogleなどのサービスが多く使われていますが、その検索結果に広告が表示されるようになった事から、再び、インストール型やASPでの検索サービスに注目が集まっています。

1-1 インストールタイプ

  • Namazu : CGIで動作
  • Lucene : JAVAで動作

※ AWSで利用可能な物。
Elasticsearch Service と CloudSearch どっちを選べば良いの?

1-2 ASP,クラウドタイプ、サービス

1-3 CMS一体型

  • WordPress,MovableType等

2 ビギナー向け・ドキュメント

検索の仕組みは大きく2種類ある

  • 予めクローラーが等が動き、インデックスを作成して検索を行うタイプ
  • DBの中をSQLで検索して結果を抽出するタイプ

3 会話集

  • 今回のサイトはサーバーサードの動的言語を使えないからASPの検索サービスを使おうか。

4 検索と開発

  • オンプレ、インストール型の検索アプリケーションに関しては調整や開発に、それに対応した言語が必要となる。
  • ASP、クラウドサービスの場合はAPIを叩くためにサーバーサイド言語を用いる事も出来るが、昨今はJSだけでページ生成が可能な物が多い。

その他 理解すべき項目

  • vHost

    ヴァーチャルホスト
    一つのIPに対して複数のドメインを割り当てる技術
    サーバーは一つなのに複数のサイトを運用する場合はこれが必要

  • NTP

    NTPサーバーとは、正しい時刻情報を取得・配信しているサーバー。
    そのサーバとコネクトして正しい時間を取得するようにする。

  • CRON/バッチ処理

    サイトの中で自動処理を行う為の技術。 定期的に処理が必要な物を記述、実行する。

  • NFS

    NFSの特長は、ネットワークファイルシステム
    ネットワークを介してサーバ上のストレージ領域をローカルストレージと同様にマウントして使える

  • SYNC

    RSYNC,LSYNCともにNFSに近いかたちでストレージを同期する技術

  • Samba,WebDav

    ウィンドウズのファイルネットワークのようにディレクトリを共有してアクセスできるようにする物。

自動化Batch処理について

Index

初めての方へ

(ビギナー用セクション・プロジェクトマネージャー、ディレクター向け)
  1. はじめに
  2. ビギナー向け・ドキュメント
  3. 会話集

より深く追求される方へ

(開発者・フルスタックエンジニア向け)
  1. より深く理解する為に
  2. 関連ワード
  3. 関連ツール
  4. 関連項目について

1 はじめに

運用には様々な問題が関わってくる。
多くはサーバを止める事なく動かし続けるための仕組みを指す。

  • 冗長化(LB,リージョンとアベイラビリティゾーン・・・)
  • 仮想化(xen,docker・・)
  • セキュリティ(WAF,IDS,IPS,Firewall・・・)
  • BCP対策(バックアップ、コールドスタンバイ・・・)
  • 24/365対応(一次対応、2次対応・・・)
  • LOG監視(アクセスログ・・・)

2 ビギナー向け・ドキュメント

3 会話集

  • 24/365のサーバー運用保守のためには、アウトソーシングするしかないね。
  • BCP対策はどこまでやれば正解かわからなくなるよね。

4 より深く理解する為に

4-1 冗長化(LB,アベイラビリティ・・・)

4-1-1 LB,ロードバランサ

4-1-2 リージョンとアベイラビリティゾーン

DC(データセンター)自体を分ける事が本当のBCP対策にはなる。
しかしDCを複数離れた地域に点在して持っているサーバ会社は数多くはない。

4-2 仮想化(xen,docker・・)

現在のサーバーのほとんどが仮想化の技術を利用している。筐体依存で無いため、メンテナンスのしやすさや他の環境への移行のしやすさが特徴。

4-3 セキュリティ(WAF,IDS,IPS,Firewall・・・)

4-4 BCP対策(バックアップ、コールドスタンバイ・・・)

4-4-1 BCP対策

関連する概念
「危機管理」と「リスク管理」の違い

4-4-2 コールドスタンバイ

ホットスタンバイやコールドスタンバイ。サーバーが復活するまでに必要な時間に応じてメインサーバ以外で準備しておく復活のための体制。

  • コールドスタンバイとは、サーバやネットワーク機器などに関して、全く同じ構成や設置の予備のマシンを電源を入れない状態で待機させておく障害対策の手法の一つである。

  • ホットスタンバイとは、サーバやネットワーク機器などに関して、主として稼動しているマシンと同じ構成や設定のマシンをOSの電源を入れるだけではなく、データの同期などを絶えず行った状態で、予備のマシンとして待機させておくようにした状態のことである。

4-5 24/365対応(一次対応、2次対応・・・)

  • 24/365対応 : 24時間365日の対応

  • 障害に対する対応

    • 一次対応(手順書に沿った対応)
    • 二次対応(手順書外の技術ノウハウに基づく対応)

4-6 LOG監視(アクセスログ・・・)


5 関連ワード


6 関連ツール

6-1 サーバー管理ツール

pleskなどGUIでサーバーを管理できるツール。コマンドラインで管理する必要が無いのと、機能が豊富な為、人気がある。

7 関連項目

IIS

Microsoft Internet Information Services (IIS 現行は8.5?)

php : .htaccess
iis : web.config


.htaccess のrewriteルールをインポート

http://www.powercms.jp/blog/2012/11/windows_iis_dynamicmtml.html

インポート説明部分だけでOK? バッティングの除外設定はいらない?(power cmsのみ)

https://www.compnet.jp/wordpress/archives/1238


省略 プレビュー

わりと簡単IIS7


詳細

microsoft manual/URL 書き換えモジュールの使用(Rewrite Module for IIS 7.0 )
https://technet.microsoft.com/ja-jp/library/dd939109.aspx

注意

.htaccessファイルをweb.configに変換する際の注意事項
https://technet.microsoft.com/ja-jp/library/dd647603.aspx

デフォルトだとRewriteがない等 複数のアクシデントケースについて
http://qiita.com/shogo/items/5672210f5a6bfb622790


補足

iis7.0 manual
https://technet.microsoft.com/ja-jp/library/dd647576.aspx

シェア
国内上位50サイト、平均24件のスクリプトを実行 – 1Mバイト以上をダウンロード
http://www.security-next.com/070742

具体的に利用されていたバージョンを見ると、「IIS 8.5」が6サイト、「php 5.2.3」「Apache 2.2.22」が各3サイト、「Apache 2.2.15」が2サイト、「IIS 7.5」「Apache 1.3.42」「同2.2.3」がそれぞれ1サイトで利用されていた。

WEB上で利用される様々なパッケージ。

一般的にコンテンツを作成するCMS(コンテンツマネージメントシステム)以外にも様々なシステムパッケージが存在する。
フルスクラッチで作成する事も可能だが、システム開発にかかる費用や、継続的なアップデートの難しさからパッケージを導入する企業も多い。また、WEBクラウドサービスの特性を活かした、様々な連携サービスも存在しスマホやタブレットの普及とともにシステム=ウェブシステムとして認知されているパッケージは多い。

  • EC : ショップパッケージ
    • EC-CUBE(OSS)

    EC系統はOSSのパッケージよりもクラウドパッケージが多くなってきている。

    • えびすマート
    • Shopify
  • CRM : 顧客管理パッケージ

    CRMパッケージとして有名なのはSalesforceだ。

    しかし顧客対応パッケージ(Zendesk)や後述のMAツール(Hubspot)などもCRMとして機能充実を目指しており、いずれはCRM、MAツールさらにECパッケージすら統合されていく可能性はある。

  • MA : マーケティングパッケージ

    MAツールはほとんどがクラウドパッケージとして存在している。ただし、大多数のパッケージは管理する対象ユーザ、コンタクト数に応じて課金がされるシステムとなっている。

    そのため、オンプレ利用であれば無料のMauticもOSSとして根強い人気を持っている。

外部からの接続(HTTP,FTP,SSH・・・)

Index

初めての方へ

(ビギナー用セクション・プロジェクトマネージャー、ディレクター向け)
  1. はじめに
  2. ビギナー向け・ドキュメント
  3. 会話集

より深く追求される方へ

(開発者・フルスタックエンジニア向け)
  1. その他
  2. リンク
  3. テスト・デバッグ・ツール

1 はじめに

サーバーとの接続方法

ブラウザを通して接続できるのはサーバの下記のポートのみである。

  • HTTP(80) ・・・ http://
  • HTTPS(443) ・・・ https://

※ ws:// , wws://(ウェブソケット)も上記ポートを利用する

それ以外にもサーバとの接続には様々な形式が利用され、それらには個別にポート番号が割り当てられている。

  • FTP(データ:20、制御21 ※パッシブモード時はコネクション側から指定) , FTPs , SFTP
  • SSH(22)

  • Telnet(23)

  • DNS(53)

  • DHCP(サーバ:67、クライアント:68)

  • Mail Protocol

    • POP3(110) , POP3s (995)
    • IMAP4(143) , IMAP4s (993)
    • SMTP(25/587), SMTPs(465)
  • VPN

2 ビギナー向け・ドキュメント

3 会話集

  • FTP接続方法だけど、SFTPとFTPSは名前が似てるけど全然意味が違うよね。
  • メールサーバがS対応(POP OVER SSL等)してるかどうかは重要だけどみんなあまりわかってないよね。

4 その他

  • コマンドで操作する事も可能

通常はGUIのソフトウェアを使用してFTPやSSHなどを行うだろうが、CLIでコマンドだけでサーバにつなげる事も可能。


5 リンク


6 テスト・デバッグ・ツール

6-1 接続、確認の為のツール

FTP(データ:20、制御21 ※パッシブモード時はコネクション側から指定) , FTPs , SFTP

  • Filezila,Winscp

SSH(22)

  • Teraterm

Telnet(23)

DNS(53)

DHCP(サーバ:67、クライアント:68)

  • コマンド:nslookup

Mail Protocol

  • ThunderBird

VPN

  • VPN Client Soft

Conf / 設定ファイル(htaccess,各種conf)

Index

初めての方へ

(ビギナー用セクション・プロジェクトマネージャー、ディレクター向け)
  1. はじめに
  2. ビギナー向け・ドキュメント
  3. 会話集

より深く追求される方へ

(開発者・フルスタックエンジニア向け)
  1. その他
  2. リンク
  3. テスト・デバッグ・ツール
  4. 未整理
  5. 関連

1 はじめに

サーバのミドルウェアは各種設定が必要になる。
Webサーバを始め、何の設定も無しに動作する物はほとんどない。
ただ、設定項目は非常に多いため、自らサーバの設定をする場合を除き、細かく動作を検証してもらう必要がある。

レンタル共用サーバ場合と同じと思って.htaccesすら使えない、phpなどが使えないなどという事もありえる。

2 ビギナー向け・ドキュメント

3 会話集

  • htaccessを使えるように設定してほしいが、これはapacheがわの設定でしか出来ない。
  • 443ポートでのhttps接続が出来るように設定してほしい。vHostやらopenSSLやら色々準備がいるな。

4 その他

どんなサーバであれ、それぞれ設定ファイルを持ちます。

4-1 設定ファイルの役割

代表的なWebサーバとして
– apache web server
– nginx
– windows server
などが挙げられますが、それぞれ設定ファイルに記述する事により機能を有効にしたり制限したりすることが可能です。

4-2 各種conf

例えば apache web server では ***.confという系統のファイルを編集する事によりドキュメントルートや各プログラムの実行権限などを設定する事ができます。
もちろん、ウェブサーバ以外にも、サーバの挙動を制御するconfが存在しています。

4-3 .htaccessとは?

.htaccessは主にapache web server で使用されます。

先程あげたconfファイル系統だけで色々なWebサーバの動きを制御できるのですが、バーチャルホストなどを切ってドメイン毎にや、ディレクトリ毎に何かしら権限や挙動を変えたい場合は .htaccessファイルを使用します。

nginxやウィンドウズサーバでは.htaccessとは違ったファイルや形式で設定を行わなければいけないという事も頭に入れておきましょう。

4-4 SSL種証明書の設定や、脆弱性対策にも

SSL証明書の設定後、confで証明書のファイルの指定をしたり、
脆弱性対応の場合、confの設定でHTTPリクエストの一部を制限が必要な事があります。


5 リンク

5-1 httpd.confの概要理解


6 テスト・デバッグ・ツール

6-1 apache

6-2 nginx


7 未整理


8 関連