web-dev-qa-db-ja.com

異常なポートでnmap HTTPスクリプトを実行する方法

TCPポート123など)nmapがHTTPで通常とは異なるポートでHTTPスクリプトを実行するようにするにはどうすればよいですか?nmap -n --script="http* ..." -p123 target nmapのようなものでは、ポート123がポートに対してスクリプトを開いて実行しません(nmapのトレースオプションで確認しました)。

HTTPですか?バージョンスキャンはサービスの性質を認識しませんが、フィンガープリント出力はそれについて非常に明確です。

==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port123-TCP:V=6.47%I=7%D=4/27%Time=553D8163%P=i686-pc-linux-gnu%r(Gener
SF:icLines,1BA,"HTTP/1\.1\x20400\x20Bad\x20request\r\nContent-Type:\x20tex
SF:t/html\r\n\r\n<!DOCTYPE\x20HTML\x20PUBLIC\x20\"-//W3C//DTD\x20HTML\x204
SF:\.01\x20Transitional//EN\"\x20\"http://www\.w3\.org/TR/html4/loose\.dtd
SF:\">\r\n<html><head><link\x20rel=\"stylesheet\"\x20href=\"/minishare\.cs
SF:s\"\x20type=\"text/css\"><title>400\x20Bad\x20request</title></head><bo
SF:dy><h1>400\x20Bad\x20request</h1></body><hr><p\x20class=\"versioninfo\"
[...]
7
countermode

ここでの他の答えは非常に良いです。ただし、スクリプトを編集せずに機能する目的で実行する方法がいくつかあります。

  1. このサービスを認識するようにNmapを教えることができます。Nmapのサービスフィンガープリントはnmap-service-probesファイルにあります。Nmapは、この一致でいくつかのバージョンのMiniShareをすでに認識していますNmap 6.00:

    match http m|^HTTP/1\.1 200 OK\r\nContent-Type: text/html\r\n\r\n.*<title>MiniShare</title>\r\n.*<td class=\"total\" colspan=\"2\">Total: (\d+) files</td><td class=\"totalsize\">([^<]+)</td></tr>\r\n</table>\r\n<hr><p class=\"versioninfo\"><a href=\"http://minishare\.sourceforge\.net/\">MiniShare ([\d.]+)</a>|s p/MiniShare http interface/ v/$3/ i/$1 files, $2 shared/ o/Windows/ cpe:/o:Microsoft:windows/a
    

    ただし、サービスの応答は少し異なり、一致しません。 ください指示に従ってくださいNmapが提供する このサービスフィンガープリントを送信 して、他のユーザーがその間、サービスが-sVで「http」として識別され、スクリプトが実行されるように、同様のマッチラインを作成できます。

  2. 原則として、新しいバージョンのNmapへの更新を試すことができます。この記事の執筆時点では6.47が最新バージョンだったため、これは役に立たないかもしれませんが、後でこの回答を読む人を助けるかもしれません。

  3. スクリプト名に「+」を付加することにより、NSEスクリプトをすべての開いているポートに対して強制的に実行できます。たとえば、--script +http-titleはページをリクエストし、ターゲットで開いているすべてのサービスのタイトルを取得しようとします。これは、dangerousおよびslowになる可能性があります。スクリプトが任意のサービスに対して実行されるように作成されておらず、タイムアウトまたはクラッシュする可能性があるためです。ターゲットサービス。

最後の警告の1つ:--script http*を要求すると、(開発バージョンでは)23の「エクスプロイト」、1の「dos」(サービス拒否)、51の「侵入」など、意図しない多くのスクリプトが実行されます。 "、および10個の"外部 "カテゴリスクリプト。これを指定するより良い方法は、--script "http* and safe"または--script "http* and default"です。

9
bonsaiviking

単に スクリプト名の前に+文字を使用 でスクリプトを強制的に実行します。強調鉱山:

上級ユーザー専用の2つの特別な機能があります。 1つは、スクリプト名と式の前に+を付けて、通常は実行されない場合でも強制的に実行することです(たとえば、関連するサービスが検出されませんでした)。ターゲットポート)。もう1つは、引数allを使用してNmapのデータベース内のすべてのスクリプトを指定できることです。 NSEにはエクスプロイト、ブルートフォース認証クラッカー、サービス拒否攻撃などの危険なスクリプトが含まれているため、これには注意してください。

コマンドを実行すると

# nmap 127.0.0.1 -p 22 --script=+http-title.nse -d

これにより、「http-title」スクリプトがポート22に対して実行されます。

NSE: Starting runlevel 1 (of 1) scan.
NSE: Starting http-title against 127.0.0.1:22.
Initiating NSE at 14:14
NSE: Finished http-title against 127.0.0.1:22.
Completed NSE at 14:14, 0.03s elapsed
Nmap scan report for localhost (127.0.0.1)
Host is up, received localhost-response (0.000089s latency).
Scanned at 2015-04-28 14:14:07 BST for 0s
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack
Final times for Host: srtt: 89 rttvar: 5000  to: 100000
6
SilverlightFox

最後のテスト結果では、疑問符( "ntp"ではなく "ntp?")は、nmapが実行中のサービスを認識できなかったことを示しています。したがって、NTPは通常このポート番号に関連付けられている種類のサービスにのみ依存していますが、まったく信頼できないため(疑問符))と推測します。

このサービスによって送信されるヘッダーは非常に最小限です。

HTTP/1\.1 400 Bad request
Content-Type: text/html

以上です。実際のWebサーバーでは、日付、サーバー名、キャッシュパラメーターなどを示す一連のヘッダーがあります。ここでは何もありません。

したがって、あなたは本格的なWebサーバーに直面していないと思いますが、次のいずれかになります。

  • 特定のデバイスに埋め込まれたリモート管理インターフェースなど、特別に細工されたWebサーバー
  • 難読化されたWebサーバー(以下のコメントでの説明に従って)、
  • HTTPプロトコルに依存する別のサービス(Webサービス、WebDavサーバーなど)が通常のGET以外のHTTPリクエストを試行すると、このような場合に興味深い動作がトリガーされることがあります。

編集

より正確にあなたの質問に答えるために、Nmapは一般的なツールです。そのスクリプトは、基本情報を取得する簡単な方法として、難読化されていないサーバーに対して主に役立ちます。

ここでは、管理者は、このような一般的なツールに必要な情報を正確に隠すことを目的として、サーバーを難読化するために特別な努力をしました。したがって、さらに一歩進んで、より具体的なツールを使用する必要があります。

技術的な観点から、nmapスクリプトは必要な場合にのみ実行されるように設計されています。 HTTP関連のスクリプトは、nmapによってサービスがHTTPとして識別された場合にのみ実行されます。これはportrule=ステートメントはスクリプトの最初にあります。ランダムなHTTP nmapスクリプトからの例をいくつか示します。

portrule = shortport.http    
portrule = shortport.port_or_service( {80, 443}, {"http", "https"}, "tcp", "open")

たとえば、これらのスクリプトを編集して実行を強制するという汚い方法は...ですが、結果は保証されていません。適切なタスクに適切なツールを使用することをお勧めします。

4
WhiteWinterWolf

セットする "portrule = shortport.http"

開いた http-enum.nse関連する行を検索します。

こちらのドキュメントをお読みください: https://nmap.org/nsedoc/lib/shortport.html

0
ken

これは、ブラウザーでポートに直接アクセスすることで得られるものと同じであり、text/htmlドキュメントです! HTTP 1.1を介して送信される、スタイルシートと400ステータスコード。

400 Bad Request
    The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)

それが何を実行しているのかについての詳細を知りたい場合は、ブラウザーで直接そこにアクセスして、他にどんな情報が光っているかを確認します。多分あなたはそれを切り取った直後から

class="versioninfo

Webサーバーについて取得したい情報に応じて、ここから実行できるHTTPスクリプトはかなり多くあります。形式は次のとおりです。

nmap --script http-enum -p 123 x.x.x.x

出典: https://nmap.org/nsedoc/scripts/http-enum.html

編集:それがminishare.cssスタイルシートを参照していることを考えると、おそらくこれがこれであるかどうかを調べ始めたいでしょう: http://minishare.sourceforge.net

0
Jambo