무작정 따라하며 원리를 깨우치는 웹 해킹 : 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
Maven > 3.2.1
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 에러를 바로잡느라 시간을 많이 써서, 일단 오늘은 여기까지만.