>운영 및 유지보수 >안전 >XXL-JOB API 인터페이스에 대한 무단 액세스에 대한 RCE 취약점을 재현하는 방법

XXL-JOB API 인터페이스에 대한 무단 액세스에 대한 RCE 취약점을 재현하는 방법

WBOY
WBOY앞으로
2023-05-12 09:37:055210검색

XXL-JOB 설명

XXL-JOB은 경량 분산 작업 스케줄링 플랫폼입니다. 핵심 설계 목표는 빠른 개발, 쉬운 학습, 경량 및 쉬운 확장입니다. 이제 소스 코드가 공개되어 많은 회사의 온라인 제품 라인에 연결되어 즉시 사용할 수 있습니다.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

1. 취약점 세부정보

이번 취약점의 핵심 이슈는 GLUE 모드입니다. XXL-JOB은 "GLUE 모드"를 통해 다중 언어 및 스크립트 작업을 지원합니다. 이 모드의 작업 기능은 다음과 같습니다.

● 다중 언어 지원: Java, Shell, Python, NodeJS, PHP, PowerShell...을 지원합니다. 그리고 다른 유형.

● Web IDE: 파견센터에서 업무를 소스코드 형태로 유지관리하고, Web IDE를 통해 온라인 개발 및 유지관리를 지원합니다.

● 동적 검증: 사용자가 Web IDE를 통해 온라인으로 개발한 작업 코드를 원격으로 실행기에 푸시하고 실시간으로 로드하여 실행합니다.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

위 그림과 같이 GLUE 모드 태스크 코드로 공격 코드를 작성하고 실행을 위해 Executor에 푸시하면 원격 공격이 발생할 수 있습니다.

【취약점 설명】

XXL-JOB의 Restful API 인터페이스 또는 RPC 인터페이스는 인증 수단으로 구성되지 않았습니다. 무단 공격자가 악의적인 요청을 구성하고 원격 명령 실행을 유발할 수 있습니다.

【영향받는 버전】

XXL-JOB <= 2.2.0

2. 환경 설정

전체 아이디어: 소스 코드 다운로드->Maven 설치 종속성->배포 구성 "Scheduling Center" "->"실행자 프로젝트" 구성 및 배포 ->배포 완료

로컬 개발 환경: Java8+Maven3.61. Github 소스 코드 다운로드

주소: https://github.com/xuxueli/xxl -job/releases/tag/v2.2.0

2. Maven은 필수 종속성을 다운로드합니다

如何进行XXL-JOB API接口未授权访问RCE漏洞复现Idea는 압축이 풀린 소스 코드를 열고 터미널에서도 사용할 수 있는 관련 종속성을 자동으로 pom에 설치합니다. maven 명령은 필수 종속성을 다운로드합니다

3. 데이터베이스 구성

예약 데이터베이스 초기화 SQL 스크립트 위치는

/xxl-job/doc/db/tables_xxl_job.sql

왜냐하면 mysql은 로컬에 설치되지 않기 때문입니다. . 따라서 docker를 사용하여 설치하세요.

a) docker pull mysql:5.7

如何进行XXL-JOB API接口未授权访问RCE漏洞复现b) sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

이런 식으로 mysql 컨테이너를 시작하고 계정은 루트입니다. , 비밀번호는 root입니다. navicat을 사용하여 123456

에 대한 데이터베이스에 연결합니다. 왼쪽 하단을 클릭하여 연결 테스트를 완료할 수 있습니다. 가져온 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 SQL 파일 실행을 선택한 후 시작을 클릭하여 데이터베이스 가져오기를 완료합니다.

如何进行XXL-JOB API接口未授权访问RCE漏洞复现4. "일정 센터" 구성 및 배포

如何进行XXL-JOB API接口未授权访问RCE漏洞复现일정 센터 프로젝트: xxl-job-admin

기능: 일정 실행 트리거를 담당하는 작업 일정 플랫폼에서 일정 작업 관리를 통합합니다. 업무 관리 플랫폼을 제공합니다. 실제 상황에 따라 application.properties에서 데이터베이스 구성을 수정할 수 있습니다

XxlJobAdminApplication을 실행하여 파견 센터를 시작합니다

Executor를 관리하기 위해 권장되는 Springboot를 사용합니다如何进行XXL-JOB API接口未授权访问RCE漏洞复现

구성 파일을 보고 xxl을 찾습니다. job.executor.logpath 매개변수, 프로그램 실행 문제를 방지하기 위해 경로를 생성하거나 수정할 수 있습니다. 새로운 Mac 시스템에는 데이터 경로가 존재하지 않습니다. 이는 Mac 시스템에서 Sip이 꺼져 있기 때문에 mkdir을 사용하여 실패한 것으로 나타났습니다. Sip 제한을 제거합니다. XxlJobExecutorApplication을 실행하여 실행기를 시작합니다. 브라우저에서 //localhost:8080/을 열고 로그인 인터페이스를 확인하세요. 기본 로그인 계정은 "admin/123456"

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

참고: 如何进行XXL-JOB API接口未授权访问RCE漏洞复现

/data/를 생성하는 것이 좋습니다. applogs/xxl-job 먼저, 프로그램 이 경로는 많은 구성 파일에서 사용됩니다

如何进行XXL-JOB API接口未授权访问RCE漏洞复现 파견 센터 데이터베이스 구성 수정

Linux/Unix는 lsof를 사용하여 포트 점유를 확인하여 시작 실패를 방지할 수 있습니다

출동센터와 실행자는 실제 상황에 따라 별도로 배포될 수 있습니다

3. 취약점 재발

공식 문서를 확인하고 실행자 RESTful API에서 트리거 작업 인터페이스에 대한 설명을 볼 수 있습니다

如何进行XXL-JOB API接口未授权访问RCE漏洞复现 작업 실행 모드는 다음과 같습니다

如何进行XXL-JOB API接口未授权访问RCE漏洞复现GulueTypeEnum 소스 코드 보기

如何进行XXL-JOB API接口未授权访问RCE漏洞复现그래서 Burpsuite를 사용하여 POC를 구성합니다

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

팁:

glueSource를 수정할 때 실행이 적용되지 않으면 jobId를 수정하세요.

프로젝트를 다시 시작할 때 포트 시작 예외가 발견되었습니다. BurpSuite를 닫으세요.

XXL-JOB의 공식 버전은 기본 인증 구성 요소와 함께 제공되므로 켜질 때 시스템의 기본 통신 보안을 보장할 수 있습니다. . XXL-JOB 작성자는 정상적인 상황에서 파견 센터와 실행자 간의 기본 통신은 안전하며 원격 명령 취약점이 없다고 밝혔습니다. 그러나 실행기에서 액세스 토큰이 활성화되지 않으면 불법 스케줄링 요청을 식별하고 차단할 수 없습니다. 악의적인 요청자는 GLUE 모드를 사용하여 악의적인 공격 코드를 푸시하여 원격 공격을 수행할 수 있습니다. 따라서 XXL-JOB의 작성자는 이 문제가 본질적으로 "취약성"이 아니라고 생각합니다. 공식 웹사이트 버전은 보호를 위해 활성화할 수 있는 인증 구성 요소를 제공합니다.

4. 수리 제안

1. XXL-JOB과 함께 제공되는 인증 구성 요소를 활성화합니다. 공식 문서에서 "xxl.job.accessToken"을 검색하고 문서 지침에 따라 활성화합니다.

2. 포트 접근 제한: 보안 그룹 제한을 구성하면 지정된 IP만 포트에 접근할 수 있습니다

위 내용은 XXL-JOB API 인터페이스에 대한 무단 액세스에 대한 RCE 취약점을 재현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제