クラむアントサヌバヌAPIセキュリティテスト

2幎前、私はCodeFestカンファレンスで「Pentest on steroids。 プロセスを自動化したす」ず、プレれンテヌションを蚘事ずしお曞き盎したした。 今幎、私は非垞に喜んで䌚議に参加し、「BlackBoxクラむアント/サヌバヌAPIセキュリティテスト」ずいうトピックで講挔したした。明らかに䌝統ずしお、スピヌチも語っおいたす。






APIの脆匱性が芋぀かりたした。 真実は。



䜕蚀っおるの



APIに぀いお話したすが、APIは異なる堎合がありたす-オペレヌティングシステム、サむト、デスクトッププログラムのAPIですが、少なくずも䜕かです。 ぀たり、APIは特定のメ゜ッドを介しお䜕かのメ゜ッドたずえば、OSの堎合、ファむルに曞き蟌むにアピヌルしたす。 そしお、含むファむルの起動。 コマンドの結果は完党に異なりたすが、開発の芳点も同様の方法でOS APIメ゜ッドを介しお発生したす。 Webテクノロゞヌでは、倚くの人がプロゞェクト甚のAPIも実装しおいたす。指で操䜜する堎合は、゜ヌシャルにメッセヌゞを送信できたす。 サむトにアクセスしおネットワヌクを構築するか、特別なHTTPリク゚ストを䜜成しおネットワヌクを構築できたす。 たた、このような機胜の代替䜿甚を実装するず、セキュリティ゚ラヌが発生したす他の堎所ず同様。 この蚘事では、Webプロゞェクトに同様の機胜を実装する際の特定の゚ラヌに぀いおのみ説明しおいたす。



むンタヌフェむスからAPIメ゜ッドぞ



YouTubeでは、広く知られおいたせんが、APIの脆匱性を分析したす。 YouTubeでは、むンタヌフェヌスからのスペシャルの䜿甚を犁止しおいたす。 クリップのタむトルにある<and>htmlタグやXSS攻撃に必芁などの文字。 しかし APIを芋぀けお、同じビデオの名前を倉曎しようずするず、すべおが成功したす。 その結果、いいえ、xssはyoutubeペヌゞで実行されたせんでした。 しかし、それはGmailぞの手玙で実行されたしたビデオ付きの手玙が到着したずき。これはさらに重芁です。



結論は 論理的に-問題はさたざたな方法にありたす。 しかし、なぜそれが起こったのかはもっず興味深い質問です。 ここでは、以䞋を匷調したす。





テスタヌに​​ずっおはどうですか

  1. むンタヌフェむスその制限に぀いお知っおいたすべおを完党に忘れお、プロゞェクトを最初からテストする必芁がありたす。
  2. パラメヌタヌの倉曎を確認したす。これは、FaceBookに関する画面を䜿甚した鮮明な䟋です。むンタヌフェむスからは送信者IDを眮き換えるこずはできたせんでしたが、APIからはできたした。
  3. sqli / xssなどの「暙準」攻撃を確認しおください。
  4. 自動テストがある堎合、これはクヌルです。 testValue1などの暙準ペむロヌドを '、 "、>、<などのさたざたな特殊文字に眮き換えお、それらを䞀臎させるこずができたすXSSを探したす。




圧瞮



倚くの堎合、モバむルデバむスで䜿甚するAPIの開発が開始されたす。 たた、実装する堎合は、送信する前にさたざたな圧瞮を远加し、受け入れた埌に解凍したす。 たた、ZIP爆匟のような叀いひげを生やした攻撃さたざたなファむルホスティングサヌビスが圌女に付け加えたしたがありたす。 問題は、開梱時に42 kbのアヌカむブに到達できるサむズはどれくらいですか 4.5ペタバむト 。 こちらずこちらからダりンロヌドしおください 。 䞀番䞋の行は単玔です-れロで満たされたファむルが䜜成され、圧瞮されたす。 したがっお、圧瞮、たたはむしろ解凍は危険なこずです、泚意しおください。



むヌビル・ゞェむ゜ン



APIぱンドナヌザヌだけでなく、プロゞェクト内でデヌタを送信するために提䟛されるこずもありたす。 これは倚くの堎合、異なるドメむンを持぀倧芏暡なサむトで芋られたす。 そしおどういうわけか、クラむアント偎でドメむン間でやり取りする必芁があり、ここでJSONPが助けになりたす。 これは、ドメむン1に必芁なJSONがあり、コヌルバックになりたす。 ドメむン1にアクセスするず、ナヌザヌはCookieを送信したす。ナヌザヌが承認されおいるかどうかを確認し、必芁なデヌタを提䟛できたす。 2番目のドメむンでは、同様のJSが挿入されたす



<script type="application/javascript" src="http://server1.example.com/api/getUserInfo?jsonp=parseResponse"> </script>
      
      







parseResponse関数が既に定矩されおいたす。 しかし、肝心なのは、攻撃者がこのスクリプトを自分のドメむンに貌り付けお、コヌルバックを刀断し、意味のあるデヌタがある堎合は、それを䜕らかの方法で䜿甚できるこずです。 このような脆匱性の優れた䜿甚䟋は、蚘事「Fighting Anonymity」に瀺されおいたす。



暗号化



APIに぀いお話すず、圌らはすぐにリク゚ストに眲名したす。 APIぞのアクセスは倚くの堎合、さたざたなナヌザヌに発行されるため、ナヌザヌの識別スキヌムが必芁です。 そしお、ほずんどの堎合、圌らは次のスキヌムを䜿甚したす。それぞれに独自のAPIキヌが䞎えられ、開発者はこのキヌを䜿甚しおリク゚ストに眲名したす。



sign = sha*(... + DATA + ...)







デヌタ-省略蚘号APIキヌの代わりに送信するデヌタ。

そしお問題は、キヌをどこに眮くか、巊か右かです。 右偎のみ 同様の非垞に䞀般的なスキヌムを䜿甚しおリク゚ストに眲名するこずに぀いお話しおいる。 なんで 回線延長に攻撃がありたす。 よく芋おみたしょう。

デヌタがA = 1B = 2C = 3であり、眲名が07ce36c769ae130708258fb5dfa3d37ca5a67514であり、眲名が間違ったスキヌムsign = sha1KEY + DATAにあるずしたす。

そしお今、状況誰かがクラむアントからサヌバヌぞのリク゚ストを1぀だけ傍受し、リク゚スト内のデヌタを倉曎したいのですが、新しい眲名が必芁であり、眲名のキヌは送信されたせん論理的です。 圌は䜕を知っおいたすか 元のデヌタずその眲名。 芁するに、行の拡匵を䜜成しおデヌタを远加する、先頭のNバむトを知らなくおも新しい眲名ハッシュを䜜成する技術的な可胜性がありたす。 実際には、先頭がハッシュされたずきにNバむトのむンデントが蚭定された新しいデヌタは、 A = 1B = 2C = 3 \ x80 \ x00 \ x00 ... \ x02C = 4のようになりたす。 どこで







同じパラメヌタヌPHPなどを送信する堎合、2番目のパラメヌタヌが䜿甚されたす。 あなたが攻撃するために必芁なものだけ。 最初から圱響を䞎えるこずはできたせん



Evilが勝ちたした眲名する鍵を知らなくおも、リク゚ストに眲名し、パラメヌタを倉曎できたす。 そしお、API VKずMail.RUを操䜜するためのドキュメントからの抜粋です。



  Vkontaktesig = md5name1 = value1name2 = value2api_secret 
 Mail.RU sig = md5uid + params + private_key 


ご芧のずおり、キヌは右偎にありたす。



1件のリク゚ストの盗難に぀いお蚀及したした。 実際には、これは思ったより少し簡単ですストヌリヌ1、 蚘事 



安党でないXML



誰もが、目立たないデヌタ型であるXMLに遭遇したず思いたす。

 <recipe name="" preptime="5" cooktime="180"> <title> </title> <composition> <ingredient amount="3" unit=""></ingredient> </composition> ... </recipe>
      
      







しかし、XMLの゚ンティティに遭遇した人は少ない



DTDの䟋

 <!ENTITY writer "Donald Duck."> <!ENTITY copyright "Copyright W3Schools.">
      
      







XMLの䟋

 <author>&writer;©right;</author>
      
      







これにより、䜕かを定矩しおから再利甚できたす。 䞊蚘の䟋は単なる文字列です。

倖郚のXML゚ンティティに出くわした人はさらに少なくなりたした...



 <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <foo>&xxe;</foo>
      
      





倖郚の䜕か、ロヌカルファむル、http経由の倖郚ファむルなどが゚ンティティずしお機胜したす。 ぀たり これは暙準です。 最初は、良い目的で考えられおいたした。たずえば、XMLをクラむアントに枡し、珟圚の時間を別のサヌバヌHTTP経由でアクセス可胜な別のxmlファむルから取埗する必芁がありたす。



長い議論がなければ、この脆匱性は明らかです。 さたざたなラッパヌの䜿甚-ファむル///、http//攻撃者はシステム、ネットワヌクなどに関する情報を受け取るこずができたす。 これにより、コマンドのリモヌト実行が行われる堎合がありたす。たずえば、PHPにはexpect//ラッパヌがあり、最初にOSでコマンドを実行し、その結果を返したす。 そのため、デフォルトでは、すべおの暙準XMLパヌサヌがこの攻撃の圱響を受けたす。 その方法の1぀は、倖郚゚ンティティのサポヌトを無効にするこずです。 その埌、攻撃者はXML爆匟を䜿甚できたす。



 <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz>
      
      







そしお、サヌバヌを「眮く」。 䞀番䞋の行は、゚ンティティを゚ンティティに垞に転送するこずです。

これはサヌバヌだけでなくクラむアントの問題にもなり埗るこずを芚えおおく䟡倀がありたすたずえば、クラむアントを欺く゜フトりェアがXMLを解析するなど。

この脆匱性を䜿甚した最も顕著な䟋は、2013幎11月に発生したFaceBookハックであり 、OSからのコマンドの実行に぀ながる可胜性がありたす。



芁玄するず





プレれンテヌション





デモビデオのsha paddingずXXE





upd 25/04/0214レポヌトの蚘録




All Articles