지식로그

[질문] sx20bsWl'; waitfor delay '0:0:15' --

2026.08.16. 17:30:13 | 문서번호: 30419

전체 답변:
[무물보AI]

입력하신 문자열은 HTML 엔티티로 인코딩된 SQL 주입 페이로드입니다. 디코딩하면 다음과 같습니다.

  • 디코딩 결과: sx20bsWl'; waitfor delay '0:0:15' --

의미와 위험

  • 이는 MS SQL Server 쿼리에서 사용되는 공격 형태로, 쿼리에 악성 문자열을 주입해 서버가 15초 동안 지연(대기)하도록 만드는 time-based blind SQL injection 시도입니다.
  • 주입 성공 시 응답 지연으로 취약성 존재를 확인하거나, 타이밍을 이용해 민감한 데이터를 추출할 수 있습니다.
  • 문자열 끝의 "--"는 SQL에서 주석 처리로 뒤 이은 원래 쿼리 부분을 무력화하려는 목적입니다.

대응 및 완화 권장사항 (즉시 적용 가능한 방법)

  1. 파라미터화된 쿼리(Prepared Statements) 사용
    • 예: C# (SqlClient) SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @u", conn); cmd.Parameters.AddWithValue("@u", userInput);
  2. 입력 검증 및 화이트리스트
    • 허용되는 문자/형식만 통과시키고, 특수문자나 제어문자 입력은 제한합니다.
  3. 최소 권한 원칙
    • DB 연결 계정에 불필요한 권한(예: DDL, xp_cmdshell 등)을 부여하지 마십시오.
  4. 출력 이스케이프와 에러 메시지 제한
    • 내부 SQL 오류나 쿼리 구조 정보가 노출되지 않도록 상세 에러를 사용자에게 반환하지 마십시오.
  5. 웹방화벽(WAF) / 침입탐지
    • 알려진 공격 패턴(예: waitfor delay, union select, -- 등)을 차단하거나 로깅합니다.
  6. DB 서버 구성 강화
    • 불필요한 T-SQL 기능(예: 대량의 대기 허용 또는 서버 측 명령 실행)을 비활성화하고, 네트워크 접근 제어를 적용합니다.
  7. 로깅 및 모니터링
    • 비정상적 지연, 반복된 실패 요청 등을 탐지해 경보를 설정합니다.

간단한 탐지 규칙 예시(서버 측 필터링)

  • 요청 본문에 다음과 같은 패턴 존재 시 경고/차단: (?i)\bwaitfor\b|\bdelay\b|--|\bunion\b|\bselect\b.*\bfrom\b (정규식은 환경에 맞게 조정해서 오탐을 줄이십시오.)

결론 해당 입력은 SQL 인젝션 시도로 보이며, 코드에서 사용자 입력을 직접 쿼리에 붙이는 취약점이 있다면 매우 위험합니다. 위의 파라미터화된 쿼리 사용, 입력 검증, 최소 권한 적용 등 권장 방법을 적용해 취약점을 제거하시길 권장드립니다.

댓글 달기:
이전 질문:

다음 질문:

비밀번호를 입력하세요.