やられアプリ BadTodo - 25.2 色々混ぜてやってみる2(XSS - CSRF -WebShell)

前回:やられアプリ BadTodo - 25.1 色々混ぜてやってみる1(XSS - CSRF -WebShell) - demandosigno 前回、BadTodo上にWebShellを設置することができました。 WebShell=Web上でシェルを動かせる、ということで色々なことができるようになります。 (WebShe…

やられアプリ BadTodo - 25.1 色々混ぜてやってみる1(XSS - CSRF -WebShell)

BadTodo - 4.1 XSS(クロスサイト・スクリプティング) BadTodo - 10.1 CSRF(クロスサイト・リクエスト・フォージェリ) BadTodo - 10.7 XSSによるCSRF対策の突破 前回:BadTodo - 24 適切でないアップロートファイル制限 などを混ぜて色々やってみます。 …

やられアプリ BadTodo - 13.2 クリックジャッキング 対策方法(X-Frame-Optionsヘッダ)

前回:やられアプリ BadTodo - 13.1 クリックジャッキング - demandosigno クリックジャッキング対策はアプリケーションのバグが原因ではなく、HTMLの仕様を巧妙に悪用した攻撃と言えます。このため、バグを修正したら防げるというタイプの脆弱性ではありま…

やられアプリ BadTodo - 17.4 ハッシュの解析(hashcat を使う)

前回:やられアプリ BadTodo - 17.3 パスワードハッシュ化の目的 - demandosigno パスワード解析ソフトの John the Ripper でもハッシュの解析はできるのですが、今回は hashcat を使います。 その名の通りハッシュの解析ができます。強力なグラフィックボー…

やられアプリ BadTodo - 17.3 パスワードハッシュ化の目的

前回:やられアプリ BadTodo - 17.2 補足 保存するパスワードのハッシュ化 - demandosigno 今回の内容は記事の最後にリンクを貼った徳丸さんの解説動画の内容などから自分なりにまとめたものです。(細かい点はわざと省いています。徳丸さんの動画はとても分…

やられアプリ BadTodo - 26.4 NULLバイト攻撃(POSTリクエストの場合)

前回:やられアプリ BadTodo - 25.3 NULLバイト攻撃(+XSS) - demandosigno 前回までに挙げたNULLバイト攻撃の3つの例はどれもGETリクエストに対するものでした。 続けて、POSTリクエストに対して試してみようとした際に疑問点が残ったためメモしておきま…

やられアプリ BadTodo - 23 evalインジェクション

前回:やられアプリ BadTodo - 22 A8:2017 - 安全でないデシリアライゼーション - demandosigno 幾つかのプログラミング言語は eval(イーバル)という機能や関数を持っています。 eval には複数のコードを解釈し実行する機能がありますが、evalの利用法に問…

やられアプリ BadTodo - 4.7 XSS Todo詳細ページ

前回:やられアプリ BadTodo - 4.6 XSS パスワード変更ページ - demandosigno Todoの題名をクリックすると開くTodoの詳細画面のリクエスト https://todo.example.jp/todo.php?rnd=6639eec0ed1b2&item=2の item パラメータにXSSがあります。 itemに'><script>alert(1)</script>…

やられアプリ BadTodo - 3.10 ブラインドSQLインジェクション (Boolean-Based) 練習

前回:やられアプリ BadTodo - 3.9 SQLインジェクション 対策方法 - demandosigno これまでのSQLインジェクションは、UNION SELECT 演算子を使って既に存在する表に追記させたり、SLQエラー文の出力を利用して情報を得たりしました。 しかし、結果を出力する…

やられアプリ BadTodo - 29 キャッシュからの情報漏洩

前回:やられアプリ BadTodo - 27 レースコンディション - demandosigno キャッシュを利用することでアプリケーションの読み込み処理を高速化したり、サーバーの負荷を軽減させたりできます。 BadTodoでは Nginx がリバースプロキシサーバとなりキャッシュ機…

Docker フォルダのマウント。ホストでの場所。

毎度忘れるのでメモ。 コンテナの中でファイルを作成しても、コンテナを削除すると消える。そこでホスト側のフォルダをコンテナにマウントすることで永続化する。 データベースの保持 — Docker-docs-ja 24.0 ドキュメント 環境 ・Windows10 ・Docker Desktop…

やられアプリ BadTodo - 28 レースコンディション

前回:やられアプリ BadTodo - 26 TOCTOU競合 - demandosigno 競合状態 (race condition) 情報処理における競合状態は「イベントタイミングへの予期せぬ依存が引き起こす異常な振る舞い」である。特に複数のプロセスやスレッドが通信しながら動作する場合(…

Debian 12 (bookworm) PHP8.2 Xdebug3.3

Xdebugの設置でつまづいたため、とりあえず最小限で試してみる。 (別Ver. Debian 10 (buster) PHP7.1 Xdebug2.9 - demandosigno) Xdebug: Documentation » Supported Versions and Compatibility docker-compose.yml version: '3' services: php: image: p…

Debian 10 (buster) PHP7.1 Xdebug2.9

Xdebugの設置でつまづいたため、とりあえず最小限で試してみる。 (別Ver. Debian 12 (bookworm) PHP8.2 Xdebug3.3 - demandosigno) Xdebug: Documentation » Supported Versions and Compatibility docker-compose.yml version: '3' services: php: image:…

スクリプトキディから始めるハッカー実践入門

次の動画(45:20~)で徳丸さんが行っていたハッカー入門をそのままやってみた。 WordPressの有名な脆弱性を題材として脆弱性について学ぶ 「スクリプトキディ」は低級ハッカーの意味で使われるが、誰もがはじめから高度な攻撃手法を編み出すことはできないので…

やられアプリ BadTodo - 17.2 補足 保存するパスワードのハッシュ化

前回:やられアプリ BadTodo - 17 認証(パスワードの強度・ログアウト) - demandosigno BadTodo - 3.4 SQLインジェクション ID・パスワードの取得で確認したように、BadTodoはDB内にパスワードが平文で保存されているという問題点があります。 パスワード…

やられアプリ BadTodo - 4.9 DOM Based XSS

前回:やられアプリ BadTodo - 4.7 XSS 対策方法(エスケープ処理) - demandosigno DOM Based XSSについて。 BadTodoのトップページhttps://todo.example.jp/todolist.phpですが、このURLの後ろに#とスクリプトを追記するとXSSが発動します。 https://todo.…

やられアプリ BadTodo - 3.9 SQLインジェクション 対策方法

前回:やられアプリ BadTodo - 3.8 SQLインジェクション sqlmapを使ってみる - demandosigno これまで検査方法についてIPAのサイトや徳丸本を参考にしてきましたが、対策方法についても同様です。 「安全なウェブサイトの作り方 - 1.1 SQLインジェクション |…

やられアプリ BadTodo - 3.8 SQLインジェクション sqlmapを使う

前回:やられアプリ BadTodo - 3.7 SQLインジェクション idパラメータに対して - demandosigno sqlmap はSQLインジェクションを検出するためのオープンソースのテストツールです。 sqlmap: automatic SQL injection and database takeover tool これまでの検…

やられアプリ BadTodo - 27 TOCTOU競合

前回:やられアプリ BadTodo - 25.4 NULLバイト攻撃(POSTリクエストの場合) - demandosigno TOCTOU(トックトゥー)Time of check to Time of use. ある条件をチェック (check) したあと、その結果を行使 (use) するまでに変更が発生することで引き起こさ…

やられアプリ BadTodo - 26.3 NULLバイト攻撃(+XSS)

前回:やられアプリ BadTodo - 26.2 NULLバイト攻撃(+SQLインジェクション) - demandosigno 前回と同じ場所で今度はXSSを試します。 入力値 https://todo.example.jp/api/v1/is_valid_id.php?id=hoge%00%3Cscript%3Ealert(1)%3C/script%3E Nullバイト(%00…

やられアプリ BadTodo - 26.2 NULLバイト攻撃(+SQLインジェクション)

前回:やられアプリ BadTodo - 25.1 NULLバイト攻撃(+ファイルインクルード) - demandosigno 新規ユーザー登録時などにバリデーションチェックが入り(記号などの入力はダメで)「英数字で」と注意されます。 この時のチェックはAPIが行っているのですが、…

やられアプリ BadTodo - 26.1 NULLバイト攻撃(+ファイルインクルード)

前回:やられアプリ BadTodo - 24 適切でないアップロートファイル制限 - demandosigno Todoリストを「完了」にしたり「削除」や「エクスポート」する際に走るリクエストhttps://todo.example.jp/editlist.phpにはprocessというパラメータがありますが、これ…

Hack The Box OpenVPN 接続エラー

Hack The Box にチャレンジしていこうと思ったが、初っ端のOpenVPNで接続する時点でもうつまずいた。 Hack The Box のウェブページ上でVPNの接続先を選択し .ovpn 接続設定ファイルをダウンロード後。Kali Linux の端末で下記コマンドを打ちこむとエラー。 $…

Nmap - Ping Sweep(アドレススキャン)

Nmap リファレンスガイド (Man Page) Nampスキャンの全コマンド・オプションを日本語解説|ネットワークのセキュリティーはNmapで抑えよう – Self branding pingコマンドで稼働中のサーバIPを探す nmap -sn -PE ターゲットのIP範囲 -sn : PINGスキャン -PE : …

Metasploitable 2 をDocker Desktopにインストールする

Metasploitによるペネトレーションの練習やテストに使用するための、わざと脆弱性を持たせた「やられサーバ」の仮想マシン。debian → Ubuntu の系譜。 DockerDesktopの検索バーでイメージを検索してダウンロード PS C:\> docker run --network=kali_badtodo …

Apache2 で CGI を許可する

Metasploitable2-LinuxでCGIを動かそうとしたらソースコードが表示されるのみで動かなかった。 #!/bin/sh echo "Content-type: text/plain" echo echo "Hi! I'm an ordinary CGI script which is executed by /bin/sh" 『一行のメッセージを出力するだけの C…

Dockerコンテナ間での通信を行えるようにする

前提。前回インストールした Kali LinuxとBadTodoのコンテナ間で通信できるようにします。 Dockerコンテナの確認 PS C:\> docker ps -a (抜粋) CONTAINER ID IMAGE ~(中略)~ NAMES 11da21e5a036 kalilinux/kali-rolling ~(中略)~ Kali-Linux 2cbf8…

Kali LinuxをDocker Desktopにインストールする

Kali LinuxをDocker Desktopにインストールします。 https://www.kali.org/get-kali/#kali-containers Dockerイメージの取得 Docker イメージのリポジトリは下記となりますが、 https://hub.docker.com/u/kalilinux/ Docker Desktop 最上部の検索バーからも…

やられアプリ BadTodo - 10.6 CSRF対策トークンの不備

前回:やられアプリ BadTodo - 10.5 CSRF(対策) - demandosigno トークンが推測可能 BadTodoで利用されていたトークンを幾つか抜き出してみました。 c4ca4238a0b923820dcc509a6f75849b 7bd4762216e1953efd194f3868c1e8ba 449e7e9838eabd52940a36d22c654228…

/* -----codeの行番号----- */