【書評】体系的に学ぶ 安全なWebアプリケーションの作り方 第2版

技術面接でボコボコにされた備忘録に書いた通り、先日おこなわれた技術面談でボコボコにされた。特にセキュリティ周りの質問に回答できなかったのが悔しかった。 そこでセキュリティの勉強をするために『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版』なる書籍を読んだ。 せっかくなのでその書評をば。 #PR 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 楽天 Amazon 良かった点 体系的、網羅的に学べる この書籍は667ページもあって、内容は体系的かつ網羅的に書かれている(と思う)。 まずWebアプリケーションのセキュリティに関するページは膨大で、これだけで400ページくらいある。 特にXSSやCSRFの説明はいろいろなパターンで何度も何度も出てくるので、自然と脳に定着すると思う。 自分は技術面接でCSRFのことを聞かれてクリックジャッキングのことを話してしまったが、もう今後間違うことはないだろう。 さらに、終盤では脆弱性診断の方法、ネットワークやマルウェアに関連する脆弱性、開発マネジメントの手法などについても触れられていて、かなり手広くカバーされているという印象。 一家に一台欲しいタイプの本だと思う。 サンプルが充実している 脆弱性を抱えるソースコードが大量に掲載されているので、脆弱性がどのようにして発生しているのかを理解しやすい。 加えてサンプルアプリケーション用のDocker環境も配布されているので、手元で気軽に脆弱性を体験できるのも良い。 微妙だった点 Docker環境のソースコードをいじれない 本書のサンプルはPHPで書かれているので、PHP初心者の自分的には「今このセッションの中身はどうなっているんだろう」みたいにデバッグしたくなることがあった。 ただDocker環境ではソースコードが編集できないようになっていたので(厳密には.tar.gzを展開した上でソースコードを編集し再圧縮した上でDockerイメージを再ビルドすれば編集できる)、理解が難しい点もあった。 PHPが得意な人にとっては問題ないかも。 認証周りの説明がやや少ない 例えばJWTやOAuthについての説明がほとんどなかった。 自分は仕事ではJWTやOAuthを利用することが多いので、もう少し詳しく知りたかった。 もし第3版が出るなら、ここらへんの説明をもう少し充実させてほしい。 まとめ 総じてかなり良い本だという印象。 上にも書いた通り、一家に一台欲しいタイプの本だと思う。 この本を読んでセキュリティに対するモチベーションが上がってきたので、秋にはセキュリティスペシャリストの試験も受けてみたい。

2025-04-02

TryHackMeが面白い

『TryHackMe』というサイトがある。 わざと脆弱性を残してある仮想環境に対して攻撃を行うことでセキュリティの勉強をすることができるサイトだ。 こういう種類のゲームをCTF(Capture The Flag)と呼ぶらしい。 セキュリティの勉強をするなら自分が攻撃者側を体験するのが一番効率的だというコンセプトなんだろう。 自分はYoTubeで以下の動画を見てTryHackMeの存在を知った。 これが結構面白い。 攻撃の手順は割とテンプレ化できるところがあるので、よく使うサイトやコマンドをいつでも見返せるようにこの記事に残していく。 この記事は定期的に更新していくタイプの記事にする予定。 よく使うサイト pentestmonkey https://pentestmonkey.net/ リバースシェルのコマンド等が言語ごとにまとまっている。 『TryHackMe』では基本的にはシェルで侵入し、そこから攻撃を仕掛けていくことが多い。 ここで使えそうなコマンドを探してシェルに侵入していこう。 GTFOBins https://gtfobins.github.io/ Linuxのコマンドを使って権限昇格を行う方法がまとまっている。 『TryHackMe』ではrootユーザに権限昇格できればほとんど勝ち確である。 このサイトで権限昇格できそうなコマンドを探してrootユーザになることを目指そう。 よく使うコマンド ポートスキャン nmap -sV (IP Address) -sVオプションを付けることで動いているサービスとそのバージョン情報を取得できる。 実際の実行例が以下みたいな感じ。 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) tcpの22番ポートでsshが、tcpの80番ポートでhttpがそれぞれ動いていることがわかる。 ...

2025-03-17