アジャイルしかやったことのない人間の覚書

日々の考えを記録するためにブログをつけ始めました。

やられサイトの作成

本番環境やステージング環境をインターネット環境上とするアジャイル開発の場合、アプリケーションの脆弱性対策が常に求められる。開発者として、自身のアプリケーションの脆弱性診断は自身で出来るようになりたいので、今日から少しずつ勉強することにした。

脆弱性診断の方法は別途まとめるとして、今回はやられサイト(脆弱性のあるサイト、脆弱性診断を行うための練習用サイト)を手早く用意するための方法を紹介する。

諸注意

やられサイトは自身で準備すべきである。インターネット上に公開されている一般のサイトに対して、脆弱性診断を決してしてはならない。脆弱性診断を行う際には、実際にそのサイトを攻撃してみてセキュリティホールを探す操作を行うので、自身の管理下にないサイトに対して脆弱性診断を行うと、最悪サイバーテロと誤解されかねない。

また、すでに本番環境リリースを行っているアプリケーションの場合、ステージング環境やテスト環境があるのであれば、そちらの環境で脆弱性診断を行うべきである。本番環境で脆弱性診断を行う場合、本番環境を壊しかねないからである。

事前準備

やられのダウンロード&インストール

BadStore:今回用意するやられサイト。ショッピングサイトの体裁を取っていて、一昔前のWebサイトっぽい感じ。

「BadStore (links to version 2.1.2)」というリンクをクリックして.isoファイルをインストールする。

VirtualBoxを起動し、「新規」アイコンをクリックする。新しい仮想マシンを下図のようにセットアップする。 f:id:Mizuki901:20170814174942p:plain

メモリサイズは「128MB」を選択。

ハードディスクは「仮想ハードディスクを追加しない」を選択し「作成」をクリックする。「仮想光学ディスクからしか起動できない」旨の傾向が出るが「続ける」をクリックして仮想マシンの作成を完了する。

続いて、作成した仮想マシン「BadStore」を選択し「設定」アイコンをクリックし、設定から「ストレージ」を選択し「ストレージツリー」から「空」と表示されている光学ドライブを選択する。ウインドウ右側の「属性」の光学ドライブのアイコンをクリックし「仮想光学ディスクファイルを選択」をクリックし、「BadStore_212.iso」をクリックする。さらに、「属性」にある「Live CD/DVD」にクリックを入れる。最終的に、下図のような設定になればOK。
f:id:Mizuki901:20170814180149p:plain

続いて、「設定」から「ネットワーク」を選択し「アダプター1」の「割り当て」を「ブリッジアダプター」に変更する。
f:id:Mizuki901:20170814180327p:plain

作成した「BadStore」の仮想マシンを「起動」する。「ifconfig」コマンドを実行し表示されるIPアドレスを、VirtualBoxをインストールしている端末のhostsファイルに「www.badstore.net」でFQDN設定をしておく。

hostsを設定変更後、www.badstore.netにブラウザでアクセスすると、BadStoreのトップページが開くことを確認できる。
f:id:Mizuki901:20170814180634p:plain

BadStoreでは、いい感じに多くの脆弱性を確認することができる(笑)。例えば、BadStoreでアカウント作成&ログイン後、左上部の「Quick Item Search」のテキストエリアに、 alert(document.cookie); をhtmlのスクリプトタグで囲んで記述し検索アイコンを押下してみよう。すると見事に、下図のようにダイアログが表示され、いとも簡単にCookieの値にアクセスすることに成功してしまう。このBadStoreには、明らかにXSSCookieのHttpOnly属性欠如の脆弱性が存在することがわかる。
f:id:Mizuki901:20170817145201p:plain

より詳細にBadStoreを使って脆弱性診断の練習を行うのはまた次回とする。

参考:その他のやられサイト紹介

上記で紹介したBadStore以外にも、有名なやられサイトがあるらしいのでリンクだけ貼っておく。今後時間があればスキルアップのためこれらにも手を出してみたい。

自動化してみるという意識

定常的な作業を自動化したいと考えるのは当然である。同じ作業を何回繰り返すかによって、自動化するのかしないのか、人それぞれ違うらしい。

自分の周りでは、3回以上やる作業は自動化したほうがよいと考えている人が多いようだ。しかし、私の師匠のような人のうちの一人は、「1回以上やる作業は試しに自動化してみろ」と言う。

大事なのは、自動化する意識を忘れないこと。「○回しかやらないから〜」と言って自動化することを面倒に思い、自動化に挑戦することや自動化方法の発想力を鍛えることをやらないと、自身を成長させることを自然にやめてしまう。

もちろん、自身の仕事の目的を考えて自動化することに時間をさくかどうかを判断すべきだが、DevOpsの3つ目の道を忘れずに、自身の成長や組織への学習の転化を考えて自動化には日々挑戦していきたい。

DevOpsとは何なのか①

私はDevOpsという言葉を二年前に初めて知った。当時、新米だった私には、言葉の意味しかわからなかった。正直いまでもDevOpsとは何かを咀嚼できていないが、最近の私なりのDevOpsに対する考えを一度まとめておく。

DevOpsの真の目的は、顧客のビジネスの検証機会を増やし、多くのフィードバックを得ることで、顧客のビジネスの価値を最大化すること。そのために、Dev→Ops→顧客といったリードタイムを少しでも短縮することで、顧客へのリリース頻度を高めることだと考える。この目的さえ外れていなければ、どんな取り組みでさえもDevOpsであると個人的に思っている。

リードタイムを減らすために、「The DevOps逆転だ!究極の継続的デリバリー」の著者は、DevOpsの3つの道があることを具体的に示している。

The DevOps 逆転だ!究極の継続的デリバリー

The DevOps 逆転だ!究極の継続的デリバリー

1つ目の道は、Dev→Ops→顧客のフローを加速させること。CI、CD、仕事の可視化、作業インターバルの削減、などが実践項目に当たる。

2つ目の道は、Ops→Devへと素早いフィードバックを得ること。問題の早期検知、組織一丸となった問題解決、再発防止などがこれに当たる。

3つ目の道は、組織全体での継続的な学習・改善である。DevとOpsフィードバックループを増やし、組織全体で日常業務の改善や標準化を制度化し、組織全体で利用できる学習に転化させることである。

3つの道については、「The DevOps ハンドブック」にも詳しく書いてあるので参考にされたい。

The DevOps ハンドブック 理論・原則・実践のすべて

The DevOps ハンドブック 理論・原則・実践のすべて

  • 作者: ジーン・キム,ジェズ・ハンブル,パトリック・ボア,ジョン・ウィリス,榊原彰,長尾高弘
  • 出版社/メーカー: 日経BP
  • 発売日: 2017/06/22
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

個人的には、3つ目の道が一番難しく、3つ目の道が一番重要であり、3つ目の道無くして、DevOpsの目的であるリードタイムの短縮化は図れないと思う。日々の作業に没頭してしまうと、1つ目の道や2つ目の道にのみ目が行きがちであり、3つ目の道を実践することをすぐに忘れてしまう。

3つ目の道の実践することを忘れないためにも、日々の業務を俯瞰し、自分は何のために仕事をしているのかを意識できるようにありたい。

数日後、数ヶ月後、数年後になるかもしれないが、自分なりのDevOpsに対する新しい考えがまとまったときには、「DevOpsとは何なのか②」を書こうと思う。

気づきを忘れないためにブログをつけます。

アジャイルやDevOpsを普段やっています。日々の気づきをどこかにメモしないともったいないと思うようになり、ブログを始めました。日記やブログを続けるのは苦手なタイプですが、継続して書けるといいな…