フィールドにIPアドレスまたはプレフィックスを入力し、応答としてルーティングテーブルまたはトレースとpingユーティリティの結果を取得するだけです。 したがって、アドレスだけでなく、意味のあるコマンドに変換された他の文字も入力して意味のある結果を得ることができると理解すると、st迷者が入ります。 私はあらゆる角度で走り、叫びたいと思っています:「しかし、これはすぐに禁止されるものであり、どのようなばかげたことですか?」 これらはすべて、セキュリティが開放性と利便性よりも優れている近年の結果であり、これには間違いなく理由があります。
version6.netのlooking-glassの非常に一般的な実装と、このサービスから得られるものについて話します。
見かけのガラスのインターフェースでIPアドレス以外のものを入力できることが突然普通に思える場合は、「古い学校」に属しているか、ニュースを読んでいない可能性があります。 特にこのサービスの他の実装では許可されていないため、私には珍しいように見えました。
- ReTN (かなり一般的な実装)を使用すると、入力されたすべての文字は、IPアドレスではない場合、ドメイン名として認識されます。
- MSX-IXのすべては部分に分割されており、入力できますが、すべてが提供され解釈される場所のみが非常に厳密です。
- Data IXでは、IPアドレスが指定されていないことを報告しますが、 「自由な引数が指定されました-IPまたはIP / nでなければなりません」 -レポートが実行されます。
- VKontakteは 、 pingおよびtracerouteのみが許可され、IPアドレスのみが許可されます。
私にとっては珍しいことだったので、サービス所有者に警告し始めましたが、コードを調べて、そうであるべきだと気付きました-これはバグではなく機能です。 何らかの理由で現在利用できないversion6.netでは、機能は「 すべてのBGP showコマンド 、pingおよびtraceroute」と正直に書かれています 。
lg.cgiを開きます 。これは読みにくく、Perlはここではまったく役に立ちません。
my %FORM = &cgi_decode($incoming); ... $FORM{addr} =~ s/\s.*// if (($FORM{query} eq "ping") || ($FORM{query} eq "trace")); $FORM{addr} =~ s/[^\s\d\.:\w\-_\/\$]//g;
コマンドは$ addr変数で渡され、空白(タブ、 \ sオプションを含む)、文字、数字、文字「-」、「_」、「/」、「$」、「。」、「:」を除くすべての文字が削除されます。 」
pingを使用した条件はさらに厳しくなります。 私が見る限り、すべての入力は空白の後に消去されます。 したがって、 pingおよびtracerouteコマンドに何かを追加するのははるかに困難です。
my $command = sprintf($query_cmd, $FORM{addr}); ... if ($FORM{addr} !~ /^[\w\.\^\$\-\/ ]*$/) { if ($FORM{addr} =~ /^[\w\.\^\$\-\:\/ ]*$/) { ... } else { &print_error("Illegal characters in parameter string"); } }
次に、 $ query_cmdテンプレートから直接実行するためのコマンドが形成され、入力がわずかに異なる文字グループに属しているかどうかがチェックされます。スペースが明示的に指定されているためタブは除外され、「_」文字は数字とともに\ wオプションの下にあるため、「 ^ "。 「:」で追加のチェックが行われますが、これはIPv6で作業している場合にのみ可能です。
それだけです。残りのチェックは、一部の操作モードでは空の行でのみ行われます。 実行用のコマンドはすでに以前に生成されており、変更なしでデバイスに送信されます。
$FORM{addr} = "" if ($FORM{addr} =~ /^[ ]*$/); ... if ($query_cmd =~ /%s/) { &print_error("Parameter missing") if ($FORM{addr} eq ""); } else { &print_warning("No parameter needed") if ($FORM{addr} ne ""); } ... &run_command($FORM{router}, $router_list{$FORM{router}}, $command);
何ができますか? 便利な失われた引用符から、文字「|」、「?」 およびすべてのブラケット。 しかし、非常に多くのことが残った。 テンプレートを形成するコマンドは次のようになります(Ciscoの場合):
my %valid_query = ( "ios" => { "ipv4" => { "bgp" => "show ip bgp %s", "advertised-routes" => "show ip bgp neighbors %s advertised-routes", "summary" => "show ip bgp summary", "ping" => "ping %s", "trace" => "traceroute %s" }, ...
メインコマンドは、ip bgp 、 ping 、およびtracerouteを表示します。 明らかに、 show ip bgp summaryとshow ip bgp neighbors%sの広告ルートはshow ip bgp%sから形成できます。
show ip bgp
私たちのパン。 異なるサイトでは、追加のフィルタリングがまだ実行されているか、標準以外の他のシステムへの改良が行われているため、任意の文字を入力できるとは限らないことに注意してください。 むしろ、それも可能ですが、コマンドをさらに実行するとエラーが発生します。 ただし、元のコードで基本的なデバイスが提供されている場合は、さまざまなコマンドを入力できます。 シスコのWebサイトでは、1つのベンダーに焦点を当てて、 多くのオプションを提供しています 。 たとえば、少し便利です。
show ip bgp regexp
特定のAS-PATHのすべてのルートを調べます。 たとえば、ストックホルムのすべてのYandexネットワークに対して、TTK (GETはクエリ結果に直接送信します):
show ip bgp regexp $ 13,238
ルーター:sgm01rb コマンド:show bgp regexp $ 13,238 12月19日(土)16:30:21.141 UTC BGPルーター識別子10.146.0.1、ローカルAS番号20485 BGP汎用スキャン間隔60秒 BGPテーブルの状態:アクティブ テーブルID:0x0 RDバージョン:0 BGPメインルーティングテーブルバージョン2995757495 BGPスキャン間隔60秒 ステータスコード:s抑制、d減衰、h履歴、*有効、>最高 i-内部、r RIB-failure、S stale、N Nexthop-discard 原産地コード:i-IGP、e-EGP 、? -不完全 ネットワークネクストホップメトリックLocPrfウェイトパス ルート識別:20485:1(vrfインターネットのデフォルト) *> i5.45.192.0 / 18 10.78.0.6 1000 70 0 13238 i * i 10.99.0.8 1000 70 0 13238 i * 149.6.168.201 1000 70 0 174 13238 i * 166.63.220.185 1000 70 0 1273 9002 13238 i * 212.73.250.153 1000 60 0 3356 13238 i * 213.248.99.221 1000 70 0 1299 13238 i *> i5.45.194.0 / 24 10.78.0.6 1000 70 0 13238 i * i 10.99.0.8 1000 70 0 13238 i * 212.73.250.153 1000 60 0 3356 13238 i * 213.248.99.221 1000 70 0 1299 13238 i *> i5.45.196.0 / 24 10.78.0.6 1000 70 0 13238 i * i 10.99.0.8 1000 70 0 13238 i * 149.6.168.201 1000 70 0 174 13238 i * 166.63.220.185 1000 70 0 1273 9002 13238 i * 212.73.250.153 1000 60 0 3356 13238 i * 213.248.99.221 1000 70 0 1299 13238 i *> i5.45.202.0 / 24 10.78.0.6 1000 70 0 13238 i * i 10.99.0.8 1000 70 0 13238 i * 212.73.250.153 1000 60 0 3356 13238 i * 213.248.99.221 1000 70 0 1299 13238 i ...
show ip bgp neighbors
確立された近所の詳細。 コマンドは、他のコマンドを実行するときに、強調表示された出力で間接的に使用できる場合があります。 たとえば、スタブロポリのビーライン地区の1つに関する詳細情報:
show ip bgp neighbors 10.255.0.2
ルーター:len244-bb.stv コマンド:show ip bgp neigh BGPネイバーは10.255.0.2、リモートAS 3216、外部リンクです BGPバージョン4、リモートルーターID 79.104.32.226 BGP状態=確立済み、1y5wまでアップ 最終読み取り00:00:40、最終書き込み00:00:14、保留時間は180、キープアライブインターバルは60秒 ネイバーセッション: 1アクティブ、マルチセッション対応ではありません ネイバー機能: ルートの更新:アドバタイズおよび受信(新規) 4オクテットのASN機能:アドバタイズおよび受信 アドレスファミリIPv4ユニキャスト:アドバタイズおよび受信 マルチセッション機能:広告 メッセージ統計: InQの深さは0 出力深度は0です 送信されたrcvd 営業時間:1 1 通知:0 0 更新:1,352 キープアライブ:631466 635532 ルート更新:0 0 合計:631468 635885 公示の実行間のデフォルトの最小時間は30秒です アドレスファミリの場合:IPv4ユニキャスト セッション:10.255.0.2 BGPテーブルバージョン182470946、ネイバーバージョン182470946/0 出力キューサイズ:0 インデックス77 77更新グループメンバー 着信更新プレフィックスフィルタリストはB2B-BRAS-INです 発信更新プレフィックスフィルタリストはDENY-ALLです 低速ピア検出は無効です 低速ピア分割更新グループダイナミックは無効です 送信されたrcvd プレフィックスアクティビティ:---- ---- 現在のプレフィックス:0 1(52バイトを消費) プレフィックスの合計:0 176 暗黙の引き出し:0 0 明示的な引き出し:0 175 ベストパスとして使用:n / a 1 マルチパスとして使用:n / a 0 アウトバウンドインバウンド ローカルポリシー拒否プレフィックス:-------- ------- プレフィックスリスト16426 0 よく知られたコミュニティ:126392327 n / a このピアからのベストパス:347 n / a 減衰のため抑制:15381 n / a 無効なパス:2886275 n / a 合計:129310756 0 許可される最大プレフィックス500 警告メッセージのしきい値75%、再起動間隔3分 送信された更新のNLRIの数:最大0、最小0 動的低速ピアとして最後に検出された:なし 動的な低速ピアの回復:なし データグラム(最大データセグメントは1460バイト): Rcvd:1268112(順不同:0)、データあり:635885、合計データバイト:12089768 送信済み:1265174(再送信:1 fastretransmit:0)、データあり:631468、合計データバイト:11997935 ...
アドバタイズされたルートに拡張して、特定のネイバーの方向にアドバタイズされるルートを確認できます。多くの場合、インターフェイスに直接存在します。
show ip bgp summary
このコマンドは常に直接使用できるとは限らないため、バイパスを試みることができます。 たとえば、 RTKOMMの場合 :
show ip bgp summary
BGPルーター識別子81.176.81.18、ローカルAS番号8342 64 MiBのメモリを使用するRIBエントリ1052472 ピア2、5024バイトのメモリを使用 16バイトのメモリを使用するピアグループ1 ネイバーV AS MsgRcvd MsgSent TblVer InQ OutQ Up / Down State / PfxRcd 195.161.1.10 4 8342 42323357 15458 0 0 0 01w3d17h 574623 195.161.1.155 4 8342 43105981 15458 0 0 0 01w3d17h 574623 近隣の合計数2
pingおよびtraceroute
また、これらのコマンドは拡張できます。パケットのサイズを増やし、フラグメンテーションをオフにします。 しかし、それを難しくするのは、フィルタリングコードがより厳密だからです。 ただし、例を見つけることができます-Starnet 、ここでジュニパーです:
pingカウント5詳細do-not-fragmentサイズ1200 8.8.8.8
ルーター:MSK-IX MX480 コマンド:ping count 5 detail do-not-fragment size 1200 8.8.8.8 PING 8.8.8.8(8.8.8.8):1200データバイト 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 0 ttl = 60 time = 1.041 ms 8.8.8.8からxe-3 / 3 / 0.0経由で1208バイト:icmp_seq = 1 ttl = 60 time = 0.964 ms 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 2 ttl = 60 time = 0.959 ms 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 3 ttl = 60 time = 32.190 ms 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 4 ttl = 60 time = 1.038 ms --- 8.8.8.8 ping統計--- 5パケット送信、5パケット受信、0%パケット損失 往復最小/平均/最大/ stddev = 0.959 / 7.238 / 32.190 / 12.476 ms ...
ルッキンググラスはすばらしいツールであり、優れたツールであっても、多くの問題を解決し、世界中のネットワークスペシャリストの仲間入りをします。 いくつかの異なる企業について言及しましたが、私自身のやり方では、そのようなサービスを出すことをまだ決めていません。
長い間試すことができます。世界中で多くのLGサービスが利用可能であり、提供されるversion6.netのバージョンで十分な数のサービスが構築されています。 しかし、どのツールも予測可能である必要があり、フィルタリングされていないチームの一部はひどくリソースを消費し、一部は現代世界で許可されているよりも少しだけオープンです。 コードを覗いて、必要に応じて実行してください。 お互いに気を配り、相互支援とオープン性によってインターネットを構築することができました。インターネットを破壊することはありません。