Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워크 보안

SQL 주입(SQLi) 공격:알아야 할 모든 것

다양한 웹 애플리케이션은 백엔드 기능을 제공하기 위해 데이터베이스 시스템을 사용합니다. 데이터베이스 시스템을 쿼리, 운영 및 관리하는 데 널리 사용되는 언어는 SQL(Structured Query Language)입니다. 전 세계적으로 웹 애플리케이션에서 널리 사용되기 때문에 SQL 기반 데이터베이스는 사이버 범죄 행위의 쉽고 빈번한 표적이 되며, 그 심각성은 표적이 되는 각 시스템의 복잡성에 달려 있습니다.

SQL 주입 공격 설명

SQL 주입 공격은 오늘날 가장 많이 발생하는 웹 해킹 중 하나입니다. 공격자는 웹 페이지 입력을 사용하여 SQL 문에 악성 코드를 삽입합니다. 일반적으로 웹 페이지에서 사용자 이름/사용자 ID와 같은 사용자 입력을 요청할 때 발생합니다. 공격자는 이 기회를 이용하여 사용자 모르게 데이터베이스에서 실행되는 SQL 문을 삽입합니다.

SQL 주입(SQLi) 공격:알아야 할 모든 것

SQL 주입 공격 워크플로

이러한 공격의 영향은 웹 응용 프로그램과 SQL 문을 작성하기 전에 공격자가 제공한 데이터를 처리하는 방법에만 의존할 수 있습니다. 가능한 보안 결과는 인증 우회에서 정보 공개, 악성 코드를 다른 애플리케이션 사용자에게 확장하는 것까지 다양합니다. SQL(Structured Query Language) 데이터베이스는 WordPress, PHP, Joomla 등과 같은 다양한 웹 플랫폼에서 지원되기 때문에 위험 요소가 많은 웹사이트로 확장됩니다.

성공적인 SQL 공격의 결과

SQL 주입은 심각도가 높은 취약점으로 간주됩니다. 피해를 입힐 수 있는 정도는 오로지 공격자의 기술과 상상, 그리고 데이터베이스 서버에 대한 낮은 권한 연결과 같은 공격에 대비한 대응책의 존재에 맡길 수 있습니다.

일단 손상되면 데이터베이스에 숨겨져 있던 민감한 정보가 이제 공격자의 손에 넘어가게 됩니다. 결과적으로 공격자는 이제 데이터베이스에서 중요한 데이터를 훔치고, 데이터베이스에서 관리 작업(예:DBMS 종료)을 실행하고, DBMS 파일 시스템에 있는 지정된 파일의 내용을 복구하고, 경우에 따라 운영 체제를 제어할 수 있습니다. .

일반적으로 SQL 주입이 발생하면 다음과 같은 종류의 공격이 가능합니다.

  1. 공격자는 필요한 자격 증명을 제공하지 않고 잠재적으로 관리자 권한으로 애플리케이션에 로그온하기 위해 인증을 우회할 수 있습니다.
  2. 공격자는 데이터베이스 콘텐츠를 변경하거나 웹 페이지를 손상시키거나 다른 무해한 웹사이트에 악성 콘텐츠를 삽입하여 데이터 무결성을 구성할 수 있습니다.
  3. 공격자는 데이터베이스의 로그 또는 감사 정보를 삭제하여 데이터 가용성을 손상시킬 수 있습니다.
  4. 공격자는 데이터베이스를 통한 명령 실행을 통해 호스트 운영 체제의 운영을 위태롭게 할 수 있습니다.

SQL 주입 공격으로부터 사이트 보호

SQL 주입 공격은 전 세계적으로 웹 응용 프로그램에 영향을 미치는 가장 일반적인 응용 프로그램 계층 공격 중 하나이지만 코드에서 SQL 주입 취약점을 피하는 것은 매우 간단합니다.

기본 접근 방식은 사용자가 제공한 데이터의 유효성을 확인하는 것인데, 이는 화이트리스트 또는 블랙리스트에 추가하여 수행할 수 있습니다. 또한 SQL 공격으로부터 사이트를 보호하는 또 다른 접근 방식은 사용자 입력이 SQL 명령의 의미 논리를 변경할 수 없도록 SQL 문을 구성하는 것입니다.

  1. 입력 유효성 검사

입력 유효성 검사는 SQL 주입을 방어하기 위해 블랙리스트 지정이라는 두 가지 접근 방식을 사용합니다. 및 허용 . 블랙리스트에는 사용자 입력에서 알려진 악성 문자를 제거하거나 교체하는 작업이 포함됩니다. 이 방법이 널리 사용되지만 화이트리스팅만큼 효과적이지는 않습니다. 공격자는 필터를 우회하고 악성 SQL 문을 삽입할 수 있습니다. 반면에 화이트리스트는 사용자 입력의 모든 문자에 악성 콘텐츠가 있는지 검사하고 허용된 목록을 준수하는 모든 문자가 포함된 입력만 허용합니다.

2. 보안 SQL 문

엄격한 입력 유효성 검사 외에도 ASP.NET의 매개 변수화된 쿼리, Java의 준비된 명령문 또는 웹 응용 프로그램을 구성하는 다른 언어의 유사한 기술을 사용하는 것이 필수적입니다. 이러한 방식으로 SQL 문을 강화하면 SQL 문이 기본 데이터베이스 시스템으로 전달되기 전에 위험한 문자를 탈출할 수 있습니다.

3. 정기 감사

잠재적인 SQLi 취약점에 대해 정적 및 동적 테스트를 모두 사용하여 애플리케이션을 정기적으로 테스트하십시오.

SQL 주입(SQLi) 공격:알아야 할 모든 것

Astra가 SQL 주입으로부터 사용자를 보호하는 방법

Astra의 웹 애플리케이션 방화벽은 SQL 인젝션을 포함하여 일반적으로 발생하는 웹 애플리케이션 결함을 완화하기 위해 실시간으로 스캔합니다. 클라우드 기반 보안 플랫폼을 사용하면 애플리케이션 보안 프로그램을 관리하고 진행 상황을 손쉽게 추적할 수 있으며 e-러닝 자료를 통해 SQL 주입 및 기타 보안 결함을 방지하고 복구하는 방법에 대해 회사 직원을 교육할 수 있습니다.