日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kylin源码调试_Apache Kylin 命令注入漏洞调试分析(CVE-2020-1956)

發布時間:2025/3/13 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kylin源码调试_Apache Kylin 命令注入漏洞调试分析(CVE-2020-1956) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:Apache Kylin 命令注入漏洞調試分析(CVE-2020-1956)

1、前言

Apache Kylin是一個開源的、分布式的分析型數據倉庫,提供Hadoop/Spark 之上的 SQL 查詢接口及多維分析(OLAP)能力以支持超大規模數據。近日,百度云安全團隊監測到Apache官方發出了一個漏洞通告,披露了Apache kylin多版本存在命令注入漏洞,漏洞編號為CVE-2020-1956。由于Apache Kylin依賴的組件較多,自行搭建環境較為困難,我們采用了IDEA+docker進行遠程調試來分析漏洞。

2、遠程調試環境搭建

本次復現使用了受影響的Kylin 3.0.1版本,直接鏡像拉取并啟動,對外暴露17070、19001端口。

docker pull apachekylin/apache-kylin-standalone:3.0.1

docker run -d -p 17070:7070 19001:19001 apachekylin/apache-kylin-standalone:3.0.1

遠程調試需要保證運行環境代碼和本地代碼相同,這里我們可以去Kylin的releases頁面下載3.0.1版本,解壓后導入IDEA。此時docker啟動的Kylin并沒有開啟遠程調試,先進入容器bash,修改/home/admin/apache-kylin-3.0.1-bin-hbase1x/bin/kylin.sh,在啟動命令添加一行。

此時Kylin是啟動狀態,先執行./kylin.sh stop以停止服務,再執行啟動腳本/home/admin/entrypoint.sh,可連接到服務器的19001端口進行遠程調試。編輯Configurations,選擇Remote并填寫對應的主機和端口。

當Console端出現如下提示,表明遠程連接成功。

3、漏洞分析

漏洞入口在server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java的migrateCube方法,我們構造好對應的POST包,對該方法打斷點。此時傳遞的project為learn_kylin,隨后進入migrateCute方法。

跟進到CubeService.java的migrateCute方法,1086行會獲取kylin的配置,1087行調用config對象的isAllowAutoMigrateCube進行判斷,若返回False則程序會拋出異常。

我們跟進到KylinConfigBase.java的isAllowAutoMigrateCube方法,該方法主要是判斷屬性kylin.tool.auto-migrate-cube.enabled的值是否為true,若要繼續執行則需要設置該屬性為true。

接著在1098、1099行會從config對象中獲取srcCfgUri、dstCfgUri,對象的屬性分別為

kylin.tool.auto-migrate-cube.src-config、kylin.tool.auto-migrate-cube.dest-config,并且1101、1102行還會判斷取出的兩個屬性的值是否為空。

接著1108行會將projectName、srcCfgUri、dstCfgUri等參數直接拼接到cmd中,并在1111行執行,在整個過程中沒有對projectName進行任何的校驗,導致命令注入漏洞。并且,若能夠控制上述3個屬性值,那么srcCfgUri以及dstCfgUri也是能夠導致命令注入漏洞的。

我們看下官方的補丁https://github.com/apache/kylin/commit/9cc3793ab2f2f 0053c467a9 b3f38cb7791cd436a。對projectName、dstCfgUri、srcCfgUri都調用了checkParameter方法進行處理。

而checkParameter方法主要是將可疑的命令執行字符替換為空,包括空格、管道符、&等。

4、漏洞復現

根據網上文檔可知,Cube級屬性值是可以添加或者修改的,并且可以覆蓋kylin的屬性。那么我們首先在某個Cube中添加上述屬性。

這里我們先嘗試ProjectName參數的命令注入,發現可以成功執行touch命令。

由于命令注入點在路徑中,注入命令中包含”/”會導致路由出錯,而反彈shell、寫webshell等都需要用”/”,因此有一些文章將此處認定為受限的命令注入。但是這里我們可以用其他字符來替代斜杠,聯系上篇文章提到的shell參數擴展,斜杠可以用${PATH:0:1}表示。

同樣的,由于可以直接修改配置文件,也可以利用srcCfgUri或者dstCfgUri注入,此時就不受路徑處的一些限制了。

5、安全產品解決方案

百度安全智能一體化產品已支持CVE-2020-1956漏洞的檢測和攔截,有需要的用戶可以訪問anquan.baidu.com聯系我們。

參考鏈接:

https://www.t00ls.net/thread-56549-1-1.html

https://github.com/apache/kylin/commit/9cc3793ab2f2f0053c467a9b3f38cb7791cd436a返回搜狐,查看更多

責任編輯:

總結

以上是生活随笔為你收集整理的kylin源码调试_Apache Kylin 命令注入漏洞调试分析(CVE-2020-1956)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。