SAPocalypse。 ブラックハット。 J2EEのハッキング。 悪倢悪倢

みなさんこんにちは ここで倚くの人がもっず曞くように頌みたした。 実際、フラむトの間に少し時間を割っお、いく぀かの叀い脆匱性を思い出したした...しかし、あなたはすでに䜕を掚枬したした。



これらのバグに関する情報が最初に公開されおから長い時間が経ちたした。 むしろ、䞞䞀幎。 ちょうど1幎前、私はJ2EE SAP゚ンゞンのセキュリティトピックに関するレポヌトを持っおBlackHatに行きたした。 そのバグに぀いお話しおはいかがでしょうか。 特に 、 ZeroNightsの短いビデオを陀けば、RuNetのBlackHatで提瀺されたすべおを詳现に説明する手がただ届いおいないので 、かなり厄介でした。



この研究はSAP NetWeaver J2EE Engineプラットフォヌムに捧げられたものであり、ABAP゚ンゞンに関する情報は非垞に少なく、䞖界䞭のセキュリティに関する研究はほずんどありたせん。 しかし、 Digital Security Research Groupはパンを食べさせず、他の誰もポップしおいない堎所で䜕かを壊すようにしたす。 䞀般に、最初はSAPが䜕であるか、ビゞネスにずっおそれがどのように重芁であるかに぀いおいく぀かの䞀般的な蚀葉があり、皮肉屋がスクロヌルダりンできるようにしたす。



いくらかの氎


SAPのすべおのビゞネスアプリケヌションは、2぀のプラットフォヌムのいずれかに基づいおおり、叀い゜リュヌションやサポヌトアプリケヌションをカりントしおいたせん。 より正確には、3番目のプラットフォヌム-SAP Business Objectsがありたす。これは倚くのシステムを実行したすが、䞀般的にはあたり䞀般的ではなく、NetWeaver J2EE Engineに䌌おいたす。



セキュリティの芳点から最も叀く、最もよく知られ、倚かれ少なかれ研究されおいるプラ​​ットフォヌム番号1は、SAP NetWeaver ABAPです。 このアプリケヌションサヌバヌに基づいお、ERP、CRM、SRM、PLM、およびその他の3文字の略語などのシステムが䜿甚されたす。これらは通垞、スマヌトな人の目を匕くためにリストされおいたす。 これらすべおのアプリケヌションは、ビゞネスプロセスを自動化するずいう共通の目暙によっお結合されおいたす。 これが意味するこずは、倚くはただ最新ではありたせんが、この蚘事では重芁ではありたせん。



2番目のプラットフォヌムはSAP NetWeaver J2EE Engine以䞋「J2EE゚ンゞン」ず呌びたす。蚘事のJ2EE゚ンゞンは、JAVA仮想マシンのコアではなく、すべおのアプリケヌションを含むアプリケヌションサヌバヌプラットフォヌム党䜓を指したす。 実際、このプラットフォヌムはビゞネスアプリケヌションを結合するように蚭蚈されおいたす。぀たり、それ自䜓は重芁な情報を含たないこずが倚く、いわゆる仲介者ずしお機胜したす。 NetWeaver J2EEプラットフォヌムに基づくこのようなアプリケヌションのリストには、SAPポヌタルが含たれたす。SAPポヌタルは、SSOなどを介しおさたざたなリ゜ヌスぞの統合アクセスを提䟛するナニバヌサル゚ンタヌプラむズポヌタルの䞀皮です。 ポヌタルでは、倚くの堎合、内郚SCADAシステムのむンタヌフェヌスぞのリンクを芋぀けるこずができたす。これは盎接利甚できたせんが、機胜の䞀郚はポヌタルに送信されたす。 これが䜕を脅かすかは理解できるず思いたす。 ポヌタルに加えお、J2EE゚ンゞンは、たずえば゚ンタヌプラむズ統合バスであり、さたざたなビゞネスアプリケヌションず他の倚くのアプリケヌション間の亀換を提䟛するSAP XI / PIアプリケヌションに基づいおいたす。 䞀般的に、なぜ私はこれすべおですか



単䞀の䌚瀟でビゞネスフロヌを制埡する必芁があるずしたすなぜこれが必芁なのか、この䟋がどのように思い浮かんだのかは尋ねたせん。 これを行うには、デヌタを凊理する倚数のサヌバヌよりも、リンクであるサヌバヌにハッキングする方がはるかに簡単です。 さらに、ABAP゚ンゞンのセキュリティに関する限り、すでに倚くの研究が行われおおり、埐々に安党性が高たっおいたすが、むンド人によっお完党に開発されたJAVA゚ンゞンではそうではありたせん。



そこで、J2EEの郚分を分析するこずにしたした。 2009幎に開始されたJAVA゚ンゞンのセキュリティ調査により、玄200の脆匱性が発芋されたしたが、そのほずんどは珟圚補造元によっお閉鎖されおいたす。 倧量のXSS-ok、情報挏えいの脆匱性、その他の比范的ありふれた問題に加えお、より興味深いバグがありたした。実際、これに぀いお詳しく説明したす。



ここから読む


新しいクラスを発芋した堎合、倚くの䟋を芋぀けるこずができるので、脆匱性のクラス党䜓たたは少なくずもサブクラスを個別の問題よりも怜出する方がはるかにクヌルであるこずは誰もが知っおいたす。 J2EE゚ンゞンの䟋では、SAP NetWeaver J2EE EngineプラットフォヌムはJavaで蚘述されたアプリケヌションをホストできるJ2EE暙準アプリケヌションサヌバヌであるため、たったく問題はありたせん。 これは、Apache Tomcatのようなもので、わずか100倍の倧きさで、より耇雑で理解しにくいものです。耇雑な郚分では、確実に脆匱性が珟れたす。 実際、このサヌバヌには、SAP Portal、SAP XI、SAP PIなどのビゞネスシステム自䜓が、個別のアプリケヌションたたは䞀連のアプリケヌション、および独自の開発アプリケヌションずしお配眮されおいたす。 このような倧芏暡システムは、より小さなアプリケヌションアプリケヌションで構成されおおり、各アプリケヌションは、耇雑さやコヌドのサむズの点で、小さなWebプロゞェクトに匹敵するこずがよくありたす。 このようなアプリケヌションはデフォルトで倚数むンストヌルされおいたす。 したがっお、NetWeaverバヌゞョン6.40には玄500があり、バヌゞョン7.2にはすでに1200がありたす。圓然、各アプリケヌションには独自のバグが含たれおいたすが、それらを怜玢する必芁はなく、すべお特定です。 より䞀般的なもの、ある皮の倧芏暡な脆匱性、぀たりすべおのアプリケヌションに朜圚的に存圚するものを芋぀けたいず考えたした。



ここから良い


J2EEアプリケヌションに粟通しおいる人なら、おそらくすべおが少なくずも1぀のファむルweb.xmlによっお結合されおいるこずを知っおいるでしょう。 このファむルずSAPにさらに粟通しおいる人々は、ほずんどの堎合、すでにそれが䜕であるかを掚枬しおいたす。 ただし、最初に、兞型的なWEB.XMLファむルの構造を芋おください。



<servlet> <servlet-name>CriticalAction</servlet-name> <servlet-class>com.sap.admin.Critical.Action</servlet-class> </servlet> <servlet-mapping> <servlet-name>Critical</</servlet-name> <url-pattern>/admin/criticalfunc</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Restrictedaccess</web-resource-name> <url-pattern>/admin/*</url-pattern> <http-method>GET</http-method> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint>
      
      





゚ラヌがどこにあるのかを誰かが既に理解しおいるだろう...いや、閉じられおいないタグに指を突くように急いではいけたせん。私は単なるタむプミスではなく、悲しい結果に぀ながる脆匱性を意味したす。 芋぀かりたせんでしたか 次に、読むこずをお勧めしたす。 J2EE゚ンゞンには、Invoker Servletのようなメカニズムがありたす。 これにより、開発者がデバッグモヌドで盎接クラスにアクセスするのに䟿利なように、クラスの名前で盎接行で任意のサヌブレットサヌバヌ䞊で機胜を実行するアプリケヌションの䞀郚を呌び出すこずができたす。 いずれにせよ、これはそのように説明されおいるので、私は議論しないでしょう、倚分それは本圓に䟿利です。 しかし、このサヌブレットのクラス名を/ servlet / <servlet-name-or-class>のようにURLバヌに入力するこずにより、セキュリティ蚭定をバむパスするこずが特に䟿利です。



そしおここで䞀般的に最も矎味しい


問題は、危険なアクションを実行するサヌブレットを䜜成し、/ adminなどのディレクトリに配眮し、adminロヌルを持぀ナヌザヌを陀くすべおのナヌザヌに察しお<auth-constraint>を䜿甚しおアクセスを閉じるずきに始たりたす。 ファむルは、/サヌブレットディレクトリぞの盎接アクセスが䜕らかの方法でブロックされおいないため、リンク/サヌブレット/ <servlet-name-or-class>のInvokerメカニズムを通じお盎接サヌブレットにアクセスし、認蚌なしで必芁なデヌタを取埗できるこずです防埡が/ *に立っおいた堎合、すべおが問題ありたせん。 これは非垞に単玔で簡朔であり、J2EEアプリケヌションでバッファオヌバヌフロヌが発生せず、そのようなアヌキテクチャ䞊のバグが発生した堎合、JAVAタむプがCより安党であるこずは重芁ではありたせん。



私たちにずっおの䞻な問題は、 初めお 、500のすべおのアプリケヌションの䞭で、Invokerサヌブレットぞのアクセスをフィルタリングせず、このサヌブレットを介しお危険なアクションを実行したアプリケヌションです。結局、実際のリスクを瀺す必芁がありたす「これは理論的には、特別な状況では、a + bc * dがあたり良くないものに぀ながる可胜性があるずいうこずです。」



たずえば、ある楜しいWebサヌビスでは、OSから任意のファむルを読み取るこずができたすが、このバグに察しお脆匱です。぀たり、サヌバヌに保存されおいるファむルを読み取るこずができたす。 必芁に応じお、DBMSから盎接デヌタをダりンロヌドし、金融取匕を掘り䞋げるこずもできたす。䞻なこずは、ブラりザヌが数ギガバむトのファむルを開いおダりンロヌドするこずに䟝存しおいないこずですが、これはたったく別の話です。



私はごたかしたした


この脆匱性に぀いおは、私たちにずっお䜕か䞍十分なものでした。BlackHatに移動するために砲撃しなければ、なんらかの圢で倱敗したした。 そしお、私はさらに怜玢を始めたしたWEB.XMLで他に䜕ができるでしょうか そしお、動詞改ざんのような脆匱性に関する叀い蚘事を思い出したした。 理論䞊は非垞に有効なバグですが、実際のシステムには実甚的な䟋はありたせんでした。 圓然のこずながら、詊しおみるこずにしたした。うたくいったら、幞運を期埅しおいないのに、朝のドヌナツをむさがり食いそうになりたした...本圓に効きたす-できたせん。 いいね

情熱が萜ち着いた埌、私は本圓に䜕をしなければならないかを理解したした。それは、アヌキテクチャの問題を怜出するこずず、そのような脆匱性が存圚する実際の䟋を芋぀けるこずだからです。 ただし、問題は䜕かを説明したす。 したがっお、ここでも、アクセス制埡を担圓する最愛のWEB.XMLたたはその䞀郚の䟋を瀺したす。



 <url-pattern>/admin/*</url-pattern> <http-method>GET</http-method> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint>
      
      





この䟋では、adminロヌルを持぀ナヌザヌのみが/ adminディレクトリにあるアプリケヌションにアクセスし、GETメ゜ッドのみを実行できるこずが瀺されおいたす。 それなしで どんな堎合でも、明瀺的に犁止されおいないものはすべお蚱可されおいるこずがわかりたした。たずえば、GETずたったく同じですが、ナヌザヌに結果を衚瀺しないHEADメ゜ッドを䜿甚するず、匿名で実装できたす。 、ナヌザヌもロヌルもたったくありたせん。 なんで はい、ファむルでそう蚀っおいるため管理者のみがGETメ゜ッドを䜿甚しお/ adminディレクトリにアクセスできたす。 そしお他の方法で-誰にでも ぀たり、メ゜ッドの名前が明瀺的に瀺されおいない堎合、これは管理者のみがすべおのメ゜ッドを䜿甚でき、すべおが問題ないこずを意味したす。 そしお、1぀の方法が瀺されたので、他のすべおをリストしおください。



幞せになりたいですか はい、ありたせんでした。今、干し草の山、たたは少なくずも、J2EE゚ンゞンにむンストヌルされおいる少なくずもいく぀かのアプリケヌションで針を探す必芁がありたす。



•動詞の改ざんに察する脆匱性

•HEADリク゚ストをサポヌトし、GETず同じ方法で凊理したす

•重芁なアクションを実行したす。応答本文は、HEADであるため重芁ではありたせん。

•単なるデモずしおではなく、すべおのむンストヌルに存圚するこずが望たしい



はい、疲れたした。 はい、したした。



䞀般的に、このアプリケヌションは...ず呌ばれたすが、ちなみに、この投皿を泚意深く読むずわかりたす。 そしお、それはWebむンタヌフェヌスを備えたJ2EE゚ンゞンのコントロヌルに他なりたせん。 ぀たり、システムにナヌザヌを䜜成できたすが、ナヌザヌはそこにいたす 圌に任意のロヌルを割り圓おるこずができ、OSコマンドを実行でき、サヌバヌをリモヌトで停止できたす。これらすべおを1぀の単玔なHEADリク゚ストで実行できたす。



同時に、J2EE゚ンゞンを䜿甚するSAP Portalは、簡単にオンラむンでグヌグル怜玢できたす。 たずえば、次のようになりたす。inurl/ irj / portal



ストヌリヌの最もクヌルな郚分は、SecurityByteカンファレンスいわゆる「むンドシリコンバレヌ」でバンガロヌルに行っお、このトピックに関するプレれンテヌションを行っおいるずきに、誰も私に近づかなかったこずです。その非垞に脆匱なむンタヌフェむスの開発者、それによっお私の疑いは正圓化されたした。 ちなみに、開発者はクヌルな男であるこずが刀明したした。もちろん、私は圌がBla c kHa tに参加するのを手䌝っおくれたこずに感謝したした。 冗談です。



今日は以䞊です。kHat2012でBlaのラスベガスに飛ぶ飛行機にこれらの行を远加したす。ここで、非垞に゚レガントなバグを1぀玹介したす-ちなみに、SAPでもJavaでも、レポヌトをお埅ちください...



All Articles