SQL 주입: 여전히 위협입니까? 어떻게 피할 수 있습니까?
게시 됨: 2020-03-07데이터 유출은 너무 흔해서 더 이상 놀라운 일이 아닙니다. 악의적인 행위자는 가능한 한 많은 데이터를 수집하는 것을 목표로 합니다. 로그인 자격 증명, 신용 카드 정보 또는 영업 비밀을 따릅니다. 그러한 데이터를 손에 넣으면 다크 웹에서 판매합니다.
그들이 지금까지 얼마나 많은 데이터를 훔쳤는지, 다크 웹에 얼마나 많이 버렸는지 파악할 수 없다면 걱정스러운 수치입니다. 작년에 범죄자들은 16개의 해킹된 웹사이트에서만 6억 2천만 개의 계정을 훔쳐 팔았습니다. 예, 16개의 웹사이트를 해킹하면 막대한 피해를 입을 수 있습니다. 하지만 더 나쁜 것이 무엇인지 아십니까? 매일 수천 개의 새로운 사이트가 해킹당합니다!
사이버 범죄자들은 매일 새로운 해킹 방법을 제시합니다. 그러나 그들이 SQL 인젝션과 같은 오래된 기술을 잊었다는 의미는 아닙니다. 여전히 실행하기 쉽고 유익한 결과를 제공하는 가장 일반적인 공격 벡터 중 하나입니다.
- SQL 주입이란 무엇이며 위험한 이유는 무엇입니까?
- SQL 주입은 어떻게 작동합니까?
- 인밴드 SQL 주입
- 블라인드 SQL 인젝션
- 대역 외 SQL 삽입
- 이 위협이 여전히 관련이 있습니까?
- 예방을 위한 보안 팁
- 마지막 말
SQL 주입이란 무엇이며 위험한 이유는 무엇입니까?

SQLi라고도 하는 SQL 주입은 해커가 SQL 문을 실행할 수 있도록 하는 주입 공격의 한 형태입니다. 주입 공격은 다양한 공격 벡터의 광범위한 범주입니다. 그러나 그들은 모두 악의적인 행위자가 위험한 입력을 수행하도록 허용합니다. 시스템 명령 역할을 한 다음 실행됩니다.
SQL 문은 다양한 데이터베이스에서 데이터를 추가하거나 검색하는 데 가장 일반적으로 사용됩니다. Microsoft SQL Server, Access 및 Oracle과 같은 많은 유명한 관리 시스템이 이러한 명령문을 사용합니다.
널리 사용되는 많은 데이터베이스 관리 시스템은 SQL 문을 사용하므로 해커는 SQL 삽입을 통해 이러한 시스템을 악용할 수 있습니다. 이는 범죄자가 데이터베이스에 저장된 민감한 데이터에 액세스하여 훔칠 수 있음을 의미합니다. 다음이 포함될 수 있습니다.
- 지적 재산권.
- 신용 카드 정보.
- 고객 정보.
- 구애.
- 회사 비밀.
추천: Chrome과 Firefox: 성능, 보안 및 개인정보 보호 비교!
SQL 주입은 어떻게 작동합니까?

SQL 인젝션 공격을 실행하기 위해 해커는 회사의 웹사이트 또는 내부 애플리케이션 내에서 취약한 사용자 입력을 찾아야 합니다.
예를 들어 피해자는 웹 사이트에 WordPress를 사용합니다. 이 코드에는 삭제 없이 사용자 입력을 데이터베이스로 직접 보내는 SQL 취약점이 있을 수 있습니다. 해커가 해당 취약점을 찾으면 해당 데이터베이스에 명령을 보낼 수 있습니다. 그런 다음 데이터베이스 출력이 브라우저로 돌아가고 해커가 다른 명령을 실행할 수 있습니다. 이렇게 하면 전체 데이터베이스를 다운로드하고 새 명령을 설정하고 사용자 계정을 수정하거나 새 계정을 만들 수 있습니다.
SQL 주입 공격에는 세 가지 주요 형태가 있습니다.
- 인밴드 SQL 삽입:
- 오류 기반 SQL 삽입.
- 유니온 기반 SQL 인젝션.
- 블라인드 SQL 인젝션:
- 부울.
- 시간 기반.
- 대역 외 SQL 삽입.
인밴드 SQL 주입
In-band SQL 주입은 간단하고 효율적이기 때문에 가장 일반적인 유형 중 하나입니다. 여기서 공격자는 동일한 통신 채널을 사용하여 공격을 실행하고 결과를 수집합니다. 오류 기반 및 통합 기반 SQL 주입의 두 가지 하위 변형이 있습니다.
- 오류 기반 SQL 삽입을 통해 해커는 데이터베이스에서 오류 메시지를 생성하도록 할 수 있습니다. 그런 다음 이러한 오류 메시지를 사용하여 데이터베이스 자체에 대한 정보를 수집할 수 있습니다.
- 유니온 기반 SQL 인젝션을 통해 범인은 UNION SQL 연산자를 이용할 수 있습니다. 하나의 HTTP 응답을 얻기 위해 데이터베이스에서 제공하는 여러 명령문을 결합합니다. 이러한 응답에는 종종 해커가 악용할 수 있는 데이터가 포함됩니다.
블라인드 SQL 인젝션
블라인드 SQL 인젝션은 서버의 동작 패턴에 의존합니다. 실행 속도가 훨씬 느립니다. 해커는 데이터 페이로드를 방출하고 서버의 응답을 검사하여 구조를 분석합니다. 데이터가 해커에게 직접 전달되지 않기 때문에 그들은 이것을 "블라인드"라고 부릅니다. 따라서 대역 내 익스플로잇에 대한 정보를 볼 수 없습니다. 부울과 시간 기반의 두 가지 변형이 있습니다.

- 부울 변형을 통해 해커는 데이터베이스에서 정보를 반환하도록 프롬프트하는 SQL 쿼리를 보낼 수 있습니다. HTTP 응답 내의 정보는 이전 결과에 따라 변경됩니다.
- 시간 기반 변형을 통해 악의적인 행위자는 데이터베이스에 직접 SQL 쿼리를 보낼 수 있으므로 데이터베이스가 반응하기 전에 기다려야 합니다. 공격자는 데이터베이스가 응답하는 데 필요한 시간을 확인하고 쿼리가 참인지 거짓인지 결정합니다. 결과에 따라 HTTP 응답이 즉시 또는 지연됩니다.
대역 외 SQL 삽입
대역 외 SQL 삽입을 통해 해커는 데이터베이스 서버에서 특정 기능이 활성화된 경우에만 데이터베이스를 공격할 수 있습니다. 가장 인기가 없는 SQL 인젝션 방법입니다. 많은 해커가 이를 오류 기반 및 블라인드 SQL 삽입 대신 사용합니다.
이 특정 공격은 해커가 동일한 매체를 사용하여 공격을 실행하고 정보를 수집할 수 없을 때 선택 사항입니다. 또는 서버가 불안정하고 다른 두 가지 주입 유형을 수행하기 위해 느린 경우 이 주입을 사용할 수 있습니다. 이 기술은 훔친 데이터를 전달하기 위해 DNS 및 HTTP 요청을 생성합니다.
당신은 좋아할지도 모릅니다: 소기업을 위한 사이버 보안 위험 평가 및 관리 팁.
이 위협이 여전히 관련이 있습니까?

SQL 인젝션은 공격적인 사이버 공격의 가장 오래된 형태 중 하나입니다. 그러나 그것은 여전히 매우 관련이 있습니다. Open Web Application Security Project는 2년 전에 SQL 인젝션을 최고의 위협으로 꼽았습니다. 클라우드 서비스 제공업체 Akamai는 인터넷 현황 보고서를 작성하여 2017년부터 2019년까지 모든 웹 기반 공격의 65%가 SQL 주입에 의한 것으로 나타났습니다. 따라서 여전히 웹 공격의 2/3에서 SQL 주입이 나타난다고 말할 수 있습니다. 최근 몇 년 동안.
2017년 1분기에 이러한 벡터는 애플리케이션 계층 공격의 44%를 담당했습니다. 설상가상으로 다른 형태의 애플리케이션 공격 벡터는 SQL 삽입만큼 빠르게 성장하지 않습니다. 2018년 11월에 또 한 번의 상당한 급증이 있었습니다. 3,500만 회 이상의 SQL 삽입 공격 시도가 있었던 것으로 나타났습니다. 전문가들은 이번 폭증의 주원인이 연말연시라고 보고 있다. 모든 웹사이트 소유자가 알아야 할 사항입니다. 특히 소매업에 종사하는 경우 더욱 그렇습니다. 그러나 휴가철이 끝난 후에도 SQL 인젝션은 주의해야 할 위협으로 남아 있습니다.
미국은 애플리케이션 계층 공격의 최고 대상입니다. 불과 17개월 만에 약 30억 건의 공격에 직면했습니다. 다른 인기 있는 피해자로는 영국, 독일, 브라질, 인도, 일본, 캐나다, 호주, 이탈리아, 네덜란드가 있습니다. 따라서 여전히 큰 위협이며 모든 회사가 광범위한 예방 조치를 취해야 한다고 가정하는 것이 안전합니다.
예방을 위한 보안 팁

개발자를 위한 최선의 조치는 공격이 발생하지 않도록 예방 조치를 도입하는 것입니다. 다음은 가장 효과적인 예방 조치입니다.
- 입력 유효성 검사: 입력 유효성 검사는 특정 사용자 입력이 허용되는지 여부를 확인합니다. 이는 형식, 길이 및 유형이 집합적으로 허용되어야 함을 의미합니다. 입력 문자열에 해커가 심은 명령과 싸우는 데 도움이 됩니다.
- 매개변수화된 쿼리: 매개변수화된 쿼리는 다양한 SQL 문을 미리 컴파일하는 방법입니다. 그런 다음 명령문을 실행할 수 있도록 매개변수를 비축합니다. 이를 통해 데이터베이스는 코드를 인식하고 일반 입력 데이터와 구별할 수 있습니다.
- 저장 프로시저: 개발자가 하나 이상의 SQL 문을 논리적 단위로 클러스터링해야 합니다. 이름에서 알 수 있듯이 저장하고 나중에 저장할 수 있는 코드 형식입니다.
- 이스케이프: 개발자는 문자 이스케이프 기능을 사용하여 DBMS가 사용자 입력을 SQL 문과 혼동하지 않도록 해야 합니다.
- 웹 애플리케이션 방화벽: SQL 주입 공격을 방지하는 가장 안전한 방법 중 하나입니다. 방화벽은 서버에서 순환하는 트래픽을 모니터링합니다. 잠재적으로 유해한 요청과 그렇지 않은 요청을 식별합니다. 이 솔루션은 다른 많은 악용에 충분하므로 항상 괜찮습니다.
- 관리 권한 회피: 개발자는 절대 루트 액세스 권한이 있는 계정을 통해 앱을 데이터베이스에 연결해서는 안 됩니다. 그렇지 않으면 해커가 전체 시스템에 액세스하여 복구할 수 없는 피해를 입힐 수 있습니다. 또한 개발자는 모든 데이터베이스에 제한된 자격 증명 집합이 있는지 확인해야 합니다.
당신은 또한 좋아할지도 모릅니다: Top 10 Best Selling Internet Security Software (Antivirus & Security).
마지막 말

SQL 인젝션에 대해 우려하는 사람이라면 다른 가능한 공격도 잊지 말아야 합니다. 일반적인 사이버 보안 관행이 적용됩니다. 강력한 암호 사용, 위협 인식 방법 배우기, 웹사이트나 데이터베이스에 연결할 때마다 VPN 켜기 등. VPN이란 무엇이며 어떤 기능을 하나요? 온라인에 접속할 때마다 온라인 트래픽을 암호화합니다. 따라서 데이터베이스에 SQL 요청을 보내면 DB만 해독할 수 있습니다. 누군가 문제의 데이터 패킷을 가로채면 아무런 의미가 없습니다. 귀하 또는 귀하의 회사가 모든 종류의 위협에 대비할수록 좋습니다.
포괄적인 예방 조치를 도입해야만 SQL 삽입 또는 공격이 성공하지 못합니다. 다양한 익스플로잇에 맞서 싸울 수 있는 적절한 도구가 있는지 확인하기 위해 많은 시간, 노력 및 비용을 투자할 준비를 하십시오.
