본문 바로가기
정보보안/WebGoat

OWASP Top 10 항목 진단 - WebGoat (환경설정)

by IT매니절 2024. 11. 18.

무작정 따라하며 원리를 깨우치는 웹 해킹 : WebGoat 편

https://www.inflearn.com/course/%EC%9B%B9-%ED%95%B4%ED%82%B9-%EB%B3%B4%EC%95%88-webgoat

 

실무에서 OWASP Top 10 진단을 중요시한다는 얘기를 듣고 이번에 들을 강의로 정했다.

 

웹곳WebGoat이란?
OWASP에서 JAVA 기반으로 제작된 웹 어플리케이션. 
취약환경을 구성하여 기능별 취약점 실습 가능

(WebGoat 8.1.0 버전 기준)

 

순서
1. Injection
- SQL Injection
- Path traversal
2. Broken Authentication
- Authentication Bypasses
- JWT tokens
- Password reset
- Secure Passwords
3. Sensitive Data Exposure
- Insecure Login
4. XML External Entities(XXE)
5. Broken Access Control
- Insecure Direct Object References
- Missing Function Level Access Control
6. Cross-Site Scripting(XSS)
7. Insecure Deserialization
8. Vulnerable Components
9. Request Forgeries
- Cross-Site Request Forgery(CSRF)
- Server-Side Request Forgery(SSRF)
10. Client side
- Bypass front-end restrictions
- Client side filtering
- HTML tempering

 

Burp Suute에서 원하는 url만 필터링하기

Response도 마찬가지로 추가해주면 적용된다

 

 

공식사이트

https://github.com/WebGoat/WebGoat

 

1. Run using Docker
=> 윈도우의 Docker를 이용하는 방법

2. Run using Docker with complete Linux Desktop
=> 리눅스의 Docker를 이용하는 방법

3. Standalone

최신버전 설치사양
Java 17 or 21
Your favorite IDE
Git, or Git support in your IDE

강의를 그대로 따라할 것이기 때문에

설치사양
Java 11

https://www.oracle.com/java/technologies/downloads/?er=221886#java11-windows

jdk-11.0.25_windows-x64_bin.exe


Maven > 3.2.1

3.2.1을 클릭했더니 이 페이지가 나와서 일단 다운로드했다. apache-maven-3.9.9-bin.zip


Your favorite IDE
Git, or Git support in your IDE
이렇게 진행한다

https://github.com/WebGoat/WebGoat/releases
여기서 v8.1.0 Assets 칸의 webgoat-server-8.1.0.jar 다운로드

 

java -jar webgoat-server-8.1.0.jar --server.port=5555 --server.address=0.0.0.0

 

그런데 ...

C:\Users\user\Desktop\webgoat>java -jar webgoat-server-8.1.0.jar --server.port=5555 --server.address=192.168.56.1
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/owasp/webgoat/StartWebGoat has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:92)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)

오류가 났다. 다른 강의를 들을 때 java를 다른 버전으로 여러 개 설치한 사유인 듯 하다.

 

우선 기본적으로 java 11 설치한 폴더를 대상으로 환경변수 편집을 해주고

cmd에서 powershell을 실행한뒤

get-command java.exe를 확인하면 

이상한 폴더가 잡혀있어서 삭제한다

또 엉뚱한 폴더가 나와 삭제하자, 그때서야 java 11 버전으로 경로가 제대로 잡혔다

 

그리고

regedit에서


컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
경로의 Path에서 C:\ProgramData\Oracle\Java\javapath;를 삭제해주었다

( 참고한 블로그 : https://sunyzero.tistory.com/256 )

 

환경변수 재적용을 위해
cmd 열어서 taskkill /f /im explorer.exe 이후 explorer.exe 실행

 

C:>java --version
java 11.0.25 2024-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.25+9-LTS-256)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.25+9-LTS-256, mixed mode)

이제 실행이 되었다

 

원래 사용하던 192.168.56.1 주소를 사용하려고 했는데 안 됐다. 대신 100.1 주소를 사용하기로 함.

 

Register new user를 통해 계정을 생성한다. 나는 그냥 webgoat1 이런걸로 했다

WebGoat 메인화면

 

java jdk 에러를 바로잡느라 시간을 많이 써서, 일단 오늘은 여기까지만.