추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

WBOY
풀어 주다: 2023-05-12 11:19:11
앞으로
1010명이 탐색했습니다.

최근 클라이언트의 침입 사건 추적을 도왔을 때, 해커가 서버에 접근하기 전에 웹사이트의 "ZIP 압축 풀기 기능"을 사용하여 웹쉘을 업로드한 것을 발견했습니다. 이러한 유출 악용 방식은 '공격 페이로드 구조'와 '실제 압축해제 경로' 측면에서 상대적으로 대표적인데, 업계에서는 아직 '안전하지 않은 압축해제' 취약점에 대해 충분한 관심을 기울이지 않고 있기 때문이다. 따라서 우리는 침입 추적 및 취약점 발견 프로세스를 설명하고 보안 개발 및 보안견 제품 보호 솔루션의 두 가지 측면에서 몇 가지 보안 제안을 제시하는 이 보고서를 작성하여 업계에 도움이 되기를 바랍니다.

CMS에서 관련 방어 설정을 해놨음에도 불구하고 CMS의 루트 디렉터리에 JSP 파일을 직접 작성하면 실행되지 않고 403 오류가 발생한다는 점에 유의할 필요가 있습니다. 공격자는 war 패키지의 자동 배포 기능을 활용하고 "디렉터리 탐색" 아이디어를 사용하여 war 패키지가 CMS의 루트 디렉터리에서 튀어나오도록 했습니다.

1. 침입 추적

한 회사의 운영 및 유지보수 담당자가 늦은 밤 근무 중 시스템에서 특정 이상 현상을 발견하여 빠른 시일 내에 문제를 조사하기 위해 당사에 연락해 주셨고, 이후 하이칭 연구소에 연락해 주셨습니다. 오염원 추적 및 분석을 수행하고 후속 처분 계획을 제공하기 위해 개입했습니다.

Tomcat의 로그 파일 /logs/localhost_access_log.yyyy-MM-dd.txt를 확인하면 공격자가 해당 웹사이트의 로그인 인터페이스("POST /cmscp/login.do")를 블래스팅한 것을 확인할 수 있습니다. 인터페이스는 매우 높습니다), 그림에 표시된 것처럼.

참고: 폭발이 성공했을 때의 HTTP 상태 코드는 302이고, 폭발이 실패했을 때의 HTTP 상태 코드는 303입니다.

공격자가 웹사이트 Trojan을 업로드했는지 확인하기 위해 Website Security Dog의 Webshell AI 탐지 엔진을 사용하여 Tomcat의 webapps 디렉터리를 스캔하면 "/admin/login.jsp"라는 파일이 있음을 확인할 수 있습니다. 그림과 같이 Webshell로 인식됩니다(해커가 이 작업을 수행했습니다. Webshell의 이름은 다소 혼란스럽습니다).

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

추가 수동 확인 후 jsp 파일이 실제로 Webshell임을 확인할 수 있습니다. 그리고 그림과 같이 admin.war 파일의 자동 배포와 관련이 있습니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

그럼 이 전쟁 패키지는 어떻게 서버에 업로드되나요? 계속해서 로그 파일을 분석하고, 분석 중에는 "파일 업로드 기능일 수 있는 인터페이스"에 중점을 둡니다. 그림과 같이 해커가 본 웹쉘을 사용하기 전에 ZIP 업로드ZIP 압축해제 기능을 사용한 것으로 사전 판단할 수 있습니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

서버의 파일 압축 해제 인터페이스에서 호출되는 test5.zip 파일을 찾아 분석해 보면 admin.war이 위치한 경로가 "test5.zip..."임을 알 수 있습니다. 따라서 ZIP 파일은 해커가 조심스럽게 구성한 악성 파일입니다. 그림과 같이 war 패키지의 압축 해제 경로를 더 이상 기본 "/uploads/1" 디렉터리가 아닌 Tomcat의 "webapps" 디렉터리로 만듭니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

참고: 이 문서에서 악성 zip 파일을 생성하는 방법

(1) 다음 Python 스크립트를 실행하여 test5.zip을 생성합니다.

import zipfile if __name__ == "__main__": try:binary = b'<script>alert("helloworld")</script>'zipFile = zipfile.ZipFile("test5.zip", "a", zipfile.ZIP_DEFLATED) info = zipfile.ZipInfo("test5.zip")zipFile.writestr("../../../safedog.html", binary)zipFile.close()except IOError as e: raise e
로그인 후 복사
(2) Webshell이 ​​포함된 war 패키지를 "test5.zip으로 드래그합니다. ", 그림과 같이.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

2. 코드 감사

이전의 침입 추적성 분석을 통해 이번 공격은 CMS의 "ZIP 압축 풀기 인터페이스"(GET /cmscp/core/web_file_2/unzip)와 관련이 있다는 예비 결론을 내릴 수 있습니다. .do?ids= {ids}&parentId={parentId})는 밀접하게 관련되어 있습니다. 이 인터페이스는 그림에 표시된 대로 WebFileUploadsController.java의 unzip 메소드에 해당합니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

unzip 메소드를 추적하여 특정 구현이 WebFileControllerAbtractor.java에 있는지 확인하세요. zip 파일의 압축을 풀면 그림과 같이 AntZipUtil 클래스의 unzip 메소드가 호출되는 것을 확인할 수 있다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

AntZipUtil 클래스의 unzip 메소드를 따라가면

이 메소드는 파일을 작성하기 전에 ZIP 압축 패키지의 파일 이름에 대해 매개변수 검증을 수행하지 않습니다. 이러한 코드 작성은 그림과 같이 디렉터리 순회 취약점 을 유발합니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석현재 Haiqing Lab은 CNVD에 취약점을 제출하고 제조업체에 수정을 요청했습니다.

3. 요약

이 예제를 통해 압축 해제 기능의 보안이 웹 사이트 보안에 큰 해를 끼칠 수 있음을 알 수 있습니다. (CVE-2018에도 노출된 Spring Integration Zip 개발 구성 요소를 예로 들어 보겠습니다) -1261 "안전하지 않은 압축 해제 취약점"). 웹 사이트의 비즈니스가 압축 해제 기능과 관련된 경우 보안 개발 차원에 더 많은 관심을 기울이는 것이 좋습니다. 또한 Safe Dog는 해당 제품 방어 솔루션도 제공합니다.

보안 개발 측면에서 개발자는 압축 해제 알고리즘 구현 시 다음과 같은 측면에서 자체 검토 및 제한을 수행하는 것이 좋습니다.

(1) 압축 패키지에서 파일 확장자를 제한할지 여부

예를 들어 : .war, .jsp, jspx, .jsp::$DATA (Windows 호스트에만 영향을 미칩니다)

(2) 압축 패키지에 있는 파일의 실제 압축 해제 경로를 제한할지 여부

(3) 총 압축을 제한할지 여부 압축된 패키지의 파일 크기(압축된 패키지의 경우 **다음으로 인한 서비스 거부 공격)

(4) 웹 응용 프로그램 디렉터리에 합당한 권한을 부여할지 여부

또한 사용자가 신뢰할 수 있는 항목을 선택하는 것이 좋습니다. Security Dog 제품을 설치한 사용자와 같은 전문 보안 제품은 보안 사고가 발생하면 시스템으로부터 자동으로 경고 문자 메시지를 받아 최대한 빨리 개입하여 더 큰 손실을 방지합니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

"보안견 제품방어" 측면에서는 "웹사이트 보안견", "유뉴"의 웹사이트 백그라운드 보호와 서버견의 파일 디렉토리 보호 기능, 웹 백엔드를 사용하시길 권장합니다. Yunyu 및 Website Security Dog의 경로 보호 기능은 웹 사이트 백그라운드에서 무차별 공격 행위로부터 보호할 수 있습니다.

윤유의 배경보호 기능은 사진과 같습니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

사이트 보안견의 배경 보호 기능은 그림과 같습니다.

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석

서버 폴더 디렉터리 보호 기능:

추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석


위 내용은 추적성을 통해 발견된 안전하지 않은 압축해제 GetShell 인스턴스 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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