Warning: Undefined variable $dir in /var/www/html/includes/report_guide_infra.php on line 177
보고서 가이드 — ForusSec Lab
W-01

SQL Injection (인증 우회)

위험도: 상
⚠️ 위험도 근거: 인증 우회로 관리자 권한 탈취 가능, DB 전체 조회·삭제 가능
📌 아래 내용이 표준 보고서에 포함되어야 합니다. 자신이 작성한 보고서와 대조하세요.

취약점 개요

📄 표준 내용
SQL Injection이란 사용자 입력값이 적절한 검증 없이 SQL 쿼리에 삽입되어, 공격자가 의도하지 않은 SQL 구문을 실행할 수 있는 취약점이다.

발견 내용 (현황)

필수 포함: 점검 URL 점검 파라미터 사용 도구 공격 시도 내용 요청/응답 결과
📄 표준 내용
로그인 폼의 username 파라미터에 대한 입력값 검증이 미흡하여 SQL Injection 공격이 가능한 상태임.

[점검 방법]
- 점검 URL: http://target/login.php
- 점검 파라미터: username (POST)
- 사용 도구: BurpSuite, 브라우저 개발자도구

[공격 시도]
```
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded

username=admin'--&password=anything
```

[실행된 쿼리 (추정)]
SELECT * FROM users WHERE username = 'admin'--' AND password = 'anything'

[결과]
관리자 계정(admin)으로 인증 우회 성공

증적 (스크린샷 첨부)

필수 포함: 입력 화면 응답 화면 요청/응답 캡처
📄 표준 내용
① 취약 입력값 입력 화면
② 서버 응답 (인증 우회 성공 화면)
③ BurpSuite Repeater 요청/응답 캡처
④ (가능 시) 에러 메시지 또는 DB 정보 노출 화면

위험도 및 근거

필수 포함: 위험도 등급 판단 근거 피해 가능성
📄 표준 내용
위험도: 상 (High)

[위험도 판단 근거]
- 인증 우회를 통한 관리자 계정 무단 접근 가능
- UNION 구문 활용 시 DB 내 전체 데이터(회원정보, 결제정보 등) 추출 가능
- 시스템 명령 실행(xp_cmdshell 등) 시 서버 장악 가능
- 기술적 난이도: 낮음 (공개된 툴 및 페이로드 사용 가능)

조치 방안

필수 포함: 취약 코드 예시 조치 코드 예시 즉시 조치 추가 조치
📄 표준 내용
[즉시 조치]
1. Prepared Statement(바인딩 변수) 적용
   - 취약 코드: $sql = "SELECT * FROM users WHERE username = '$username'"
   - 조치 코드: $stmt = $db->prepare("SELECT * FROM users WHERE username = ?");
               $stmt->execute([$username]);

2. 입력값 길이 제한 적용 (username: 최대 50자)

[추가 조치]
3. WAF(웹방화벽) 적용 또는 시그니처 업데이트
4. DB 계정 최소 권한 원칙 적용 (읽기 전용 계정 분리)
5. 에러 메시지 사용자 노출 차단 (display_errors = Off)