cli53でroute53のリソースレコードを全て削除する。

調べ物のログです。 Route53のWebコンソール上からホストゾーンの削除を試みたところ以下のエラーが出ました。 ホストゾーンを削除するには、最初に Zone Apex の NS および SOA リソースレコードセット以外のすべてのリソースレコードセットを削除する必要があります。 (HostedZoneNotEmpty 400: The specified hosted zone contains non-required resource record sets and so cannot be deleted.) 5000件以上のリソースレコードを登録しているので、流石に画面ぽちぽちで削除するのはつらいなあ… と思っていたところcli53というツールを見つけました。 barnybug/cli53 - Github 以下のコマンドでリソースレコードを全て削除できます。 cli53 rrpurge {zonename} --confirm その後、以下のコマンドでホストゾーンを削除 cli53 delete {zonename} 大量にレコードを登録したい場合も、テキストを用意してimportオプションで読み込むことができます。 cli53 import --file zonefile.txt {zonename} zonefile.txt の中身は以下のような形です。 test 0s A 8.8.8.8 test2 0s A 1.1.1.1 »

AWS LambdaでSeleniumとActiveRecordを扱う

気付いたらもう9月ですね。 最近、AWS Lambdaでいろいろと遊ぶ機会があったのでメモとして残します。 はじめに とあるセキュリティゲームの運営用に、SeleniumでWebスクレイピングをやっているRubyのスクリプトをEC2で運用していたのですが、Headless Chromeを扱うため大量に起動するとメモリ食っちゃうし、スケールしようにもEC2インスタンスのAutoScaling組むのもちょっとなあ。とか、インスタンスの起動まで待ってられないからある程度多めにインスタンスを実行したりするのも余分にコストが。。。 1実行に15分もかからないスクリプトだし、ということでLambdaに移行することにしました。 Lambda Layerについて Headless Chromeを扱う場合、単純にFunctionのデプロイパッケージにバイナリを含めると50MBを超えてしまうため、Lambdaのクォータ(制限)にかかります。 今ではLambda Layerという仕組みができていてFunctionとは別に、Functionの実行に必要なライブラリやバイナリファイルをデプロイパッケージとして作成できます。それをアップロードし、Layerとして追加することでコンテナ内の/optとして展開されます。ただし、Layerの展開後のサイズが250MBに収まっている必要があります。 デプロイパッケージの作成 Layerに追加するためのデプロイパッケージを作成します。 ここでは、Layerの再利用性を考慮し、3つのパッケージに分割します。 Headless Chrome font Ruby Gems Headless Chromeのデプロイパッケージ作成 serverless chromeとchromedriverを用意。serverless-chromeとchroomedriverのバージョンは合わせる感じで、chromedriverは chromedriver_linux64.zip をダウンロード。 https://github.com/adieuadieu/serverless-chrome/releases https://chromedriver.storage.googleapis.com/index.html ディレクトリは以下のような感じで作成し、zipで圧縮する。 bin ├── chromedriver └── headless-chromium zip -r headless-chrome.zip bin .fontsのデプロイパッケージ作成 日本語用フォントがインストールされてないと、日本語のページを表示した場合に文字化けしてしまうためフォントパッケージを作成します。 wget https://ipafont.ipa.go.jp/IPAexfont/IPAexfont00201.zip unzip IPAexfont00201.zip mkdir .fonts cp IPAexfont00201/*.ttf .fonts zip -r .fonts.zip .fonts Ruby Gemsパッケージの作成 ActiveRecordなり、rubyでseleniumを扱うためにいろいろとライブラリが必要なのでパッケージを作成します。 ActiveRecordがmysql2を使用するため、mysql2のライブラリもまとめてパッケージにする必要があります。 作成方法は以下が参考になります。 AWS LambdaからRuby + Mysql2でAmazon RDSにつないでみた Using Mysql2 gem in AWS Lambda for Ruby - Medium 上記参考資料からの変更点は、Gemfileのみ。以下のGemfileを作成しました。 »

プライバシーポリシー

個人情報の利用目的 当ブログでは、メールでのお問い合わせなどの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。 これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。 個人情報の第三者への開示 当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。 本人のご了解がある場合 法令等への協力のため、開示が必要となる場合 個人情報の開示、訂正、追加、削除、利用停止 ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、対応させていただきます。 アクセス解析ツールについて 当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。 このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。 この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはここをクリックしてください。 免責事項 当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。 当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。 当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。 プライバシーポリシーの変更について 当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。 修正された最新のプライバシーポリシーは常に本ページにて開示されます。 »

CISSPとかOSCPとかこの半年にあったこととかその辺の話

証明書を更新し忘れてサイトが見れなくなっていた…(^^; 全然記事を書いてないなあと思ったので、久々に更新。 最近、資格をいくつか取れたので振り返りでも。 CISSP (ISC)² が認定を行っている情報セキュリティの資格。 どういう資格なのか… という点については公式にまとまってるので割愛 https://japan.isc2.org/cissp_gaiyou.html 学生時代に初めて見つけて、いつかは取りたいなと思ってたものの 脆弱性診断後の報告でお客さん先に足を運んだりすると 雑談の中でセキュリティに関する質問を受けることもあり 何かしら回答できるだけの知識や考え方はあっても良いなあと思い 資格を取ることを決めました。 公式が提供しているCBKトレーニングもあって良いお値段なのですが、 沖縄県サイバーセキュリティ人材創出促進事業によりトレーニング費用の補助をいただけたので、特別価格で受講できました。 https://isc-okinawa.org/event/cissp-kouza2019/ ※ 補助を受けるにはいくつか条件がありました 沖縄県内でセキュリティ関連のトレーニングはなかなか開催されないのでとても良い機会でした。 トレーニングは5日間かけて8ドメイン全てを体系的にレビューして、 確認問題を解いて終了。 解説もすごい分かりやすいので受講してよかったです。 8ドメインを5日で確認するのでかなりハイペースですが、 物理からアプリケーション開発まで一通りやっていたおかげか 事前知識はいくらかあったので問題なくついていけました。 事前知識なしでも大丈夫かとは思うけど、 一部ドメインはネットワーク周りや暗号の基礎的な部分は理解した上で 受講したほうが良いかなと思いました。 あとはもらったテキストを3-4回くらい読み直して、 Apple Booksに売ってる以下の公式問題集を各章2回ずつ解いた。 https://books.apple.com/jp/book/cissp公式問題集/id1465705751 試験そのものは沖縄で受験不可なので、上京して受験しました。 無事合格して、認定の手続きをする。 合格しても、認定をもらうためには業務経験が5年必要なのですが、 大学卒業学位取得者は1年分の経験が免除されるので、4年の業務経験で認定できるとのこと。 https://japan.isc2.org/cissp_outline.html それでも合格時点では業務経験が2週間くらい足りなくて、 一度はアソシエイトとして登録しました。 大学から卒業証明書を取り寄せたり、エンドース(推薦)のための書類を作成してたらあっという間に2週間過ぎて認定要件満たされたので、会社の人にお願いしてエンドースをしてもらいました。 これからはCPEを継続的に取得していく必要がありますが、 価値を提供できるように日々コツコツと学習を続けます。 OSCP ペネトレの資格。 最近は日本でも受験する人が多く、日本語で書かれた詳細な受験記ががいくつか上がってるのでそれ見るとどういう試験かは分かるかも。 実は2019/11にOSCPのラボを2ヶ月分購入していたのですが、あまりの忙しさにラボをやる暇がなくお布施をしただけに…(^^; CISSP合格後(2020/04)に、30日分追加で購入しました。 2ヶ月分無駄にしたことを後悔していたので、自分を追い込むつもりで受験日も購入日に決めてしまいました。 アップデートが入っていてテキストもラボも変わっていて、テキストもさらっと読み直してラボに挑戦。 30日で攻略できたホストは20くらいかな。 1日1ホストのペースでやるつもりだったけど、実際そんなに上手くは取れなかった。 コロナの件もあってステイホームしてたので捗ったとは思う。 root取れたときとか脳から何か出てる感じがたまらなくて、寝ないでラボ攻略してた日もあったな… 体に悪いのでちゃんと寝た方がいいです。 テキストにExcerciseがついていて、それとラボマシン(10台)の攻略手順を記載したラボレポートを作成して提出すると、試験で最大5点の加点があるのですがこちらは実施せず。 レポート作成の練習になるのでやっておいたほうが良いのですが、普段から診断の報告書は書いてるので大丈夫かな?と思い私はやりませんでした。 試験前日はExam Guideを読み込んで、レポートの作り方を確認して就寝。 試験当日。 プロクターなので、カメラで24時間ずっと監視されながらもひたすら攻略していく。 攻略しながらレポートの構成を考えて証跡を取ることになりますが、 この辺は普段の業務とあまり変わらない感じでした。 ある程度は攻略できたものの、知識不足で解けないものもありました。 このときはラボレポート作っておけばよかったなあと少し後悔もしました。 5点あれば不安な気持ちは多少緩和できたかもしれない。 少しだけ寝て試験のレポートを作成。 証跡の取得漏れも無くてサクッと作って提出。 運営のメールには10日くらいで合否通知がくるらしい。 体験記見てると2,3日で合否通知がきてるみたいだけど、 そんなにはやく来なかったので少し不安になりました。 でも、1週間後に合格通知がきたのでホッとしました。 »

WPScanとバージョン検出の網羅性

よく「Wordpress セキュリティ対策」でググると攻撃者に余計な情報を与えないという意味で「バージョン情報を非表示にする」と書いてある記事がちらほらあるのですが、Wordpressで構築されたサイト内にバージョン情報を消しきれてないケースがあることに気づきました。 よくある記事で紹介されているのは下記の2パターンがメイン。 各ページのMETAタグにバージョン情報が表示されているケース jsやcssなどのassetsファイルにバージョン情報がパラメータとして付与されているケース atomやrdfなどのfeedに記載されていることもあったり、古いWordpressだとreadme.htmlに大きく記載されていることもある。 なので、バージョン情報が記載されている箇所をある程度網羅する必要がある。 そこで利用するのがWPScan。 WPScanは、ブラックボックス型のWordpressの脆弱性スキャナで、自身で構築したWordpressの検査に時々利用している。 gemでインストールできるのだが、Docker Imageもあるので、普段はこちらを利用しています。 https://hub.docker.com/r/wpscanteam/wpscan/ 通常の利用方法でもバージョン情報を検出は可能なのだが、検出できた時点で探索をやめてしまうので、網羅的に探すことができない。 $ docker run -it --rm wpscanteam/wpscan --url https://target.tld/ と困っていたところ、 --wp-version-all というオプションがあることを教えてもらった。これでバージョン情報が表示されている場所をある程度網羅ができそう。 $ docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --wp-version-all マニュアルに載っていないなと思ったら --hh オプションのマニュアルにちゃんと書いてあった^^; ここまでやっておいてなんだけど、バージョンを非表示にすることよりもちゃんと最新版にアップデートしていくほうに時間を使いたい。 »

[Mac]SafariのXSSAuditorを無効化する

SafariでXSSのテストをしたい時に、何度かブラウザの機能で止められることがあった。 Chromeは[Mac]GoogleChromeのXSSAuditorを無効化する で書いたように 起動オプションで無効化できるが、Safariでのやり方がわからなくてググってた。 SafariではTerminalを開いて下記のコマンドでXSSAuditorを無効化できる。コマンドを実行後、Safariを再起動する。 $ defaults write com.apple.Safari "com.apple.Safari.ContentPageGroupIdentifier.WebKit2XSSAuditorEnabled" -bool FALSE 有効化したい場合は、コマンド末尾の-boolオプションをTRUEに変更するだけ。 参考 XSSAuditor - discussions.apple.com »

AlexaのプロアクティブイベントAPIを使ってみる

Alexaを買ったのはちょうど一年前くらい。 Alexaにいろいろ通知ができないかといろいろ模索してた時期があって、 そのときは通知用のAPIがβ版になっていてAmazonに申請しないと使えなかったのですが、最近調べたらプロアクティブイベントAPIなるものが出てるらしく遊んでみた。 https://twitter.com/328__/status/1112307063672061953 プロアクティブイベントAPI - amazon alexa プロアクティブイベントAPIとは? 一言で言うとサーバ側からAlexaにPUSH通知を行うことができるAPIです。 Alexaは基本的にユーザがEchoに呼びかけてサーバから結果を取得するいわば「フェッチ型」です。 このプロアクティブイベントAPIを利用すると、ユーザがEchoに呼びかけなくてもサーバ側から通知を送ってくれる「プッシュ型」の処理が作れるわけです。 とはいっても、このAPIだけでは好きな言葉をベラベラ喋らせれることはできなくて、ある定型文に沿って喋らせることができるだけです。 それと、「Alexa, 通知は何?」って聞かないと結果は返してくれません。 ※ 聞かなくても勝手に返してくれる方法があれば誰か教えてください 使ってみる https://github.com/328/alexa-proactive-api-test 1. ツールのインストール https://serverless.com https://developer.amazon.com/ja/docs/smapi/ask-cli-command-reference.html 2. AlexaDeveloperコンソールからスキルを作成 LambdaのトリガーにスキルIDが必要になるのでこちらを控えておく。 スキルIDはAlexaスキルのアプリ名の下に「スキルIDの表示」というボタンがあるのでそこを押下すると表示される。 3. ServerlessFrameworkで空のLambdaを作成 https://github.com/328/alexa-proactive-api-test/blob/master/lambda/subscribe-event-lambda/serverless.yml#L16 ↑の __SKILLID__ 部分を手順2で控えたスキルIDに差し替えて # sls deploy でデプロイを実行する。LambdaのARNを控える。 4. askコマンドでプロジェクトをデプロイを実行 uri内の __LAMBDA_ENDPOINT__ を手順3で控えたARNに変更する。 https://github.com/328/alexa-proactive-api-test/blob/master/skill.json configのskillIdを記載 https://github.com/328/alexa-proactive-api-test/blob/master/.ask/config#L4 ask deploy でデプロイを実行します。 5. Alexaコンソールから通知の許可を実行 https://alexa.amazon.co.jp にアクセスします。 「有効なスキル→作成したアプリをクリック→設定→アクセス権を管理→Alexaの通知をON→アクセス権を保存」で通知を許可します。 これやってなくてハマってしまった…^^; 6. クライアントIDとクライアントシークレットを控える alexa developer consoleから「アプリ→アクセス権限→Alexaスキルメッセージング」からクライアントIDとクライアントシークレットの2つを控える 7. userIdの取得 Alexaでスキルを動作させて、LambdaのコンソールからuserIdを取得 8. プロアクティブイベントAPIを実行 https://github. »

307 Temporary Redirect

HTTPのステータスコード3xxといえば、Redirectionなのですが、 300,301,302,303,304,305,306,307といろいろあります。 302,303,304はよく見かけるのですが 最近、HTTPのステータスコードを見かけて気になったので 307を調べたのでそのときのメモ。 w3c.orgのサイトでは、307はTemporary Redirectionとなっている。 HTTP/1.1 Status Code Definitions - w3.org これなにかというと、サーバからリダイレクト要求が行われた時に、メソッドと本文が変更されないことが保証されるものです。 たとえばHTTPサーバAに何かしらのデータをPOSTしたときに, HTTPサーバBへのリダイレクト要求(307)を返したとします。それを受け取ったHTTPクライアントは、HTTPサーバAにPOSTしたデータと同じものをHTTPサーバBへPOSTします。 よくあるサイトの1つとして、更新処理をするとトップ画面に遷移する的なものがあり、302が多いのですが、302はリダイレクト先にアクセスする際のメソッドを変更してはならない(GETだったらGET, POSTだったらPOSTでリダイレクト先にリクエストする)ものなのですが、その実装を守っていないクライアントがあって303,307が追加されたようです。 HTTPステータスコード – 302 Foundと303 See Otherと307 Temporary Redirectの違いについて / cyano 307の挙動を確認 307の挙動を見たいので下記のコードをPHPで作成しました。 このコードを配置したサーバに対してPOSTメソッドでアクセスし307が返却された場合に、POSTメソッドと本文を保持したままリダイレクト先にPOSTメソッドでアクセスします。 リダイレクト元 リダイレクト先 303の挙動を確認 ちなみにPOSTメソッドでアクセスして303が返却されると、リダイレクト先はGETメソッドでアクセスします。 リダイレクト元 リダイレクト先 雑感 307はメソッドと本文を変更することが禁止されているため、リダイレクト元と同様のリクエストをリダイレクト先に送信することができます。 303はリダイレクト元にPOSTでアクセスすると、リダイレクト先ではGETメソッドでアクセスします。 ※ ただしHTTPクライアントが実装できてるかどうかは別の話です。 ちなみにcurlで303リダイレクトすると、リダイレクト先も本文つかないけどPOSTメソッドでアクセスしちゃうし、 BurpSuiteのRepeaterだと307はリダイレクト先をGETメソッドでアクセスしちゃう。。。 HTTPクライアント全てが303,307を意図した挙動で動作させるわけでもないみたい。 (実装が悪いのか僕の使い方が悪いのかはわかんないけど) おしまい。 »

Mac AppStoreのキャッシュを削除する

新年あけましておめでとうございます。 昨年はアウトプットの場をLTや登壇をメインにしていたので、ブログの投稿数はだいぶ少なめでしたが、今年はブログでのアウトプットも頑張っていきたいと思ってます。 実は、最近まで手持ちのMacをElCapitain(10.11)でずっと利用していました。 アップデート後、スリープ復帰後にBluetoothとWifiの接続が切れて一定時間使えない、特定のアプリケーションが動かない等いろいろ問題を抱えていたので上げるに上げ切れず… しかし、Docker for Macのアップデート後、10.12以降でないと動作しない問題が発覚し致し方なくMojave(10.14)までアップデートを実施することに。 加えてXcodeのアップデートも実施していましたが、途中誤ってMacをスリープさせてしまい、以降アップデートのプログレスバーが進まなくなりました。 再起動して再度ダウンロードしても、プログレスバーが動作せず、Wiresharkでパケットdumpしてもダウンロードが進んでる様子が無い… のでおそらくダウンロードキャッシュが壊れてるのではないかと推測。 思い切って、ダウンロードキャッシュを削除することに。 Terminalからコマンドを入力しディレクトリを開く $ open $TMPDIR../C/com.apple.appstore/ 数字の羅列があるディレクトリ内にflyingIconがあるので確認して、削除したいアプリケーション(今回はXcode)のアイコンであればディレクトリごと削除する。 そしてAppStoreを再起動して、再度アップデートを開始する。 これで再度ダウンロードができる。 しかし、最初からのダウンロードになるのでXcodeとか6GBくらいあるアプリだと結構辛い。 参考 Clear Mac App Store Temp Cache to Fix Some Download Issues - OXSDaily AppleDeveloperForums »

[Mac]GoogleChromeのXSSAuditorを無効化する

GoogleChromeで脆弱性診断をやってる時や、やられサイトの作成をしてる時に XSSのテストをしていると止められてしまうため何か良い方法はないかとググってたら ちゃんとやり方があった。 $ open Google\ Chrome.app --args --disable-xss-auditor XSSAuditorを無効化するオプションをつけて起動するだけでOKでした。 »