> 데이터 베이스 > MySQL 튜토리얼 > 파트 SQL 주입 시리즈: 고급 SQL 주입 기술

파트 SQL 주입 시리즈: 고급 SQL 주입 기술

Mary-Kate Olsen
풀어 주다: 2024-12-05 20:16:11
원래의
991명이 탐색했습니다.

Part SQL Injection Series: Advanced SQL Injection Techniques

작가: 트릭스 사이러스

Waymap 침투 테스트 도구: 여기를 클릭하세요
TrixSec Github: 여기를 클릭하세요
TrixSec 텔레그램: 여기를 클릭하세요

고급 SQL 주입 공격 – 7부: 최첨단 기술 및 예방

SQL 주입 시리즈 7부에 오신 것을 환영합니다! 이번 호에서는 공격자가 사용하는 고급 SQL 주입 기술을 자세히 알아보고 이에 대응하기 위한 실행 가능한 전략을 제공합니다. 위협이 진화함에 따라 앞서 나가기 위해서는 이러한 정교한 방법을 이해하는 것이 중요합니다.


1. 고급 SQL 주입 기술

1.1. 대역 외 SQL 주입

Out-of-Band(OOB) 주입은 공격자가 페이로드 결과를 직접 관찰할 수 없을 때 사용됩니다. 대신 DNS 또는 HTTP 요청을 사용하여 데이터를 추출합니다.

  • 작동 방식: 페이로드는 공격자가 제어하는 ​​서버로 데이터를 보내는 쿼리를 트리거합니다. 예를 들어:
  SELECT * FROM users WHERE>



<p>The above payload exploits SQL Server's xp_dirtree to make an outbound DNS request.  </p>

로그인 후 복사
로그인 후 복사
  • Real-World Example:

    In 2019, attackers used OOB techniques to bypass traditional defenses and exfiltrate sensitive data from a government database.

  • Mitigation:

    • Block outbound DNS/HTTP requests from the database.
    • Use network monitoring tools to detect unusual outbound traffic.

1.2. Boolean-Based Blind SQL Injection

This method determines true or false conditions based on subtle changes in the application's behavior.

  • Example Payload:
  ' AND 1=1 -- True condition  
  ' AND 1=2 -- False condition  
로그인 후 복사
로그인 후 복사

반응 차이는 주입된 조건이 참인지 거짓인지를 나타냅니다.

  • 사용:

    공격자는 조건부 쿼리를 사용하여 데이터베이스, 테이블 또는 열을 한 번에 1비트씩 열거합니다.

  • 완화:

    • 매개변수화된 쿼리 또는 ORM 프레임워크를 사용하세요.
    • 블라인드 SQL 주입 감지를 위한 규칙 세트를 사용하여 웹 애플리케이션 방화벽(WAF)을 배포합니다.

1.3. 시간 기반 블라인드 SQL 주입

이 기술은 지연을 사용하여 데이터를 추론합니다. 공격자는 서버가 응답하는 데 걸리는 시간을 관찰합니다.

  • 페이로드 예시:
  SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds  
로그인 후 복사
로그인 후 복사
  • 영향:

    쿼리 속도가 느리면 서버 성능이 저하되어 서비스 거부가 발생할 수 있습니다.

  • 완화:

    • 과도한 요청을 차단하려면 속도 제한을 사용하세요.
    • 장기 실행 쿼리를 모니터링하고 종료합니다.

1.4. 2차 SQL 주입

이 기술에서는 악성 페이로드가 데이터베이스에 저장되고 관리자 검토와 같은 후속 작업 중에 트리거됩니다.

  • 예시 시나리오:

    • 공격자는 이 페이로드를 양식에 삽입합니다.
    Robert'); DROP TABLE users; --  
    
    로그인 후 복사
    로그인 후 복사
    • 검토 중에 애플리케이션은 저장된 페이로드를 실행합니다.
  • 완화:

    • 검색 중에도 모든 단계에서 입력을 이스케이프하고 삭제합니다.
    • 악성 스크립트 실행을 방지하려면 불변 데이터베이스 기능을 사용하세요.

2. 실제 사례 연구

사례 연구 1: Magento 취약점(CVE-2019-8144)

사건:

  • 공격자는 Magento 전자상거래 플랫폼의 시간 기반 SQL 주입 취약점을 악용했습니다.
  • 그들은 인증을 우회하고 민감한 고객 데이터에 접근했습니다.

완화 교훈:

  • 알려진 취약점을 해결하기 위해 소프트웨어를 정기적으로 패치합니다.
  • 타사 플러그인 및 확장 프로그램에 대한 보안 테스트를 수행합니다.

사례 연구 2: Shopify(2020 버그 바운티)

사건:

  • 한 보안 연구원이 Shopify API에서 DNS를 통해 민감한 데이터를 유출할 수 있는 OOB SQL 주입 취약점을 식별했습니다.
  • Shopify의 버그 포상금 프로그램 덕분에 악용되기 전에 발견되었습니다.

완화 교훈:

  • 윤리적 취약점 보고를 장려하기 위해 버그 포상금 프로그램에 투자합니다.
  • API 게이트웨이를 활용하여 엄격한 쿼리 검증을 시행합니다.

3. 고급 방어 전략

3.1. 동적 쿼리 분석

비정상적인 패턴이나 과도한 복잡성에 대해 데이터베이스 쿼리를 모니터링하는 도구를 사용합니다.

  • 도구:
    • SQLMap: 시스템을 테스트합니다.
    • Aqua Security 또는 Imperva: 런타임 보호용.

3.2. 상황 인식 검증

컨텍스트에 따라 유효성 검사 규칙 시행:

  • 로그인 페이지: 영숫자 값만 허용하려면 자격 증명을 확인하세요.
  • 검색 양식: SELECT 또는 UNION과 같은 SQL 연산자를 제외하려면 입력을 삭제하세요.

3.3. 데이터베이스별 구성

  • MySQL에서 SQL 주입 감지 모드와 같은 기능을 활성화하세요.
  • PostgreSQL에서 SECCOMP 필터를 사용하여 위험한 작업을 제한하세요.

3.4. 지속적인 침투 테스트

  • 공격을 시뮬레이션하여 공격자가 공격하기 전에 취약점을 식별합니다.
  • OWASP ZAP 또는 Burp Suite와 같은 도구를 사용하여 CI/CD 파이프라인으로 자동화합니다.

4. 실용적인 과제: 착취 시뮬레이션 및 방어

시나리오

전자상거래 사이트에서는 사용자가 입력 필드를 사용하여 제품을 검색할 수 있습니다. 테스트하고 보안을 유지하세요.

단계:

  1. SQL 주입 취약점을 탐지하기 위해 페이로드를 주입합니다.
  SELECT * FROM users WHERE>



<p>The above payload exploits SQL Server's xp_dirtree to make an outbound DNS request.  </p>

로그인 후 복사
로그인 후 복사
  • Real-World Example:

    In 2019, attackers used OOB techniques to bypass traditional defenses and exfiltrate sensitive data from a government database.

  • Mitigation:

    • Block outbound DNS/HTTP requests from the database.
    • Use network monitoring tools to detect unusual outbound traffic.

1.2. Boolean-Based Blind SQL Injection

This method determines true or false conditions based on subtle changes in the application's behavior.

  • Example Payload:
  ' AND 1=1 -- True condition  
  ' AND 1=2 -- False condition  
로그인 후 복사
로그인 후 복사
  1. 사이트가 취약한 경우 SQLMap과 같은 자동화 도구를 사용하여 데이터 추출을 시뮬레이션하세요.

방어 수정:

  • 준비된 명령문 구현:
  SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds  
로그인 후 복사
로그인 후 복사
  • 엄격한 패턴을 사용하여 입력 유효성을 검사합니다.
Robert'); DROP TABLE users; --  
로그인 후 복사
로그인 후 복사

5. SQL 인젝션 공격 동향

5.1. 클라우드 익스플로잇

잘못된 구성으로 인해 클라우드 기반 데이터베이스의 표적이 점점 더 많아지고 있습니다.

5.2. API 취약점

마이크로서비스의 등장으로 잘못 설계된 API는 공격자의 진입점이 되었습니다.

5.3. AI 기반 공격

자동화된 도구는 AI를 활용하여 복잡한 주입 페이로드를 제작합니다.


최종 생각

이 고급 세션에서는 SQL 주입의 진화하는 특성과 선제적 방어의 중요성을 강조합니다. 최첨단 기술을 이해하고 강력한 보안 조치를 구현하면 악용 위험을 크게 줄일 수 있습니다.

~트릭섹

위 내용은 파트 SQL 주입 시리즈: 고급 SQL 주입 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿