본문 바로가기

SQL 인젝션(주입, 삽입) 공격 작동 방식 & 위협 방지 방법

((!#) 2022. 3. 14.

SQL 인젝션(주입, 삽입) 공격 작동 방식 & 위협 방지 방법

데이터 침해는 너무 흔해서 더 이상 놀랍지도 않습니다. 악의적인 행위자들은 가능한 많은 데이터를 수집하는 것을 목표로 합니다. 이들은 로그인 자격 증명, 신용카드 정보 또는 영업비밀을 추적합니다. 일단 그런 자료를 손에 넣게 되면 다크웹으로 팔게 됩니다.

 

목차

     

     

    그들이 지금까지 얼마나 많은 자료를 훔쳤는지, 그리고 얼마나 많은 자료를 다크웹에 버렸는지 알 수 없다면, 여기 걱정스러운 숫자가 있습니다. 지난해 16개 해킹사이트에서만 범죄자들이 6억2000만 개의 계정을 도용해 판매했습니다. 그렇다, 16개의 웹사이트를 해킹하는 것은 많은 피해를 초래할 수 있습니다. 하지만 뭐가 더 나쁜지 알아?매일 수천 개의 새로운 사이트들이 해킹당합니다!

    SQL 인젝션(주입, 삽입) 공격 작동 방식 & 위협 방지 방법, 사이버 범죄자들은 매일 새로운 해킹 방법을 생각해냅니다. 하지만 그들이 SQL 주입과 같은 오래된 기술을 잊어버린다는 것을 의미하지는 않습니다. 그것들은 여전히 실행이 간단하고 결실을 맺는 가장 흔한 공격 벡터 중 하나입니다.

    SQL 주입이란 무엇이며 왜 위험한가?

     

    SQLi라고도 하는 SQL Injection은 주입 공격의 한 형태로 해커가 SQL 문을 실행할 수 있게 합니다. 주입 공격은 다양한 공격 벡터의 광범위한 범주입니다. 하지만 그들은 모두 악의적인 배우들이 위험한 입력을 하도록 허용합니다. 그들은 시스템 명령의 역할을 하고, 그리고 나서 실행됩니다.

    SQL 문은 다양한 데이터베이스에서 데이터를 추가하거나 검색하는 데 가장 일반적으로 사용됩니다. Microsoft SQL Server, Access, Oracle과 같은 많은 유명한 관리 시스템에서는 이러한 문구를 사용합니다.

    널리 사용되는 많은 데이터베이스 관리 시스템이 SQL 문을 사용하기 때문에 해커들은 SQL 주입을 통해 이러한 시스템을 이용할 수 있습니다. 범죄자들이 데이터베이스에 저장된 민감한 데이터에 접근해 도용할 수 있다는 뜻입니다. 여기에는 다음이 포함될 수 있습니다.

    • 지적 재산.
    • 신용카드 정보
    • 고객 정보
    • 주소.
    • 회사 기밀

    SQL 주입은 민감한 데이터를 도용하는 결과를 초래합니다. 그것은 어떤 기업, 정부, 조직에도 파괴적인 결과를 가져올 수 있습니다. 이러한 사건은 회사의 운영과 명성을 손상시킬 수 있으며 데이터 보호 감독기관에 의해 부과되는 막대한 벌금을 가져올 수 있습니다.

    권장 사항: Chrome vs Firefox:성능, 보안 및 개인 정보 보호 비교!

    SQL 주입 작동 방식

    SQL 주입 공격을 실행하려면 해커가 웹 사이트나 회사 내부 애플리케이션 내에서 취약한 사용자 입력을 찾아야 합니다.

    예를 들어, 피해자는 그들의 웹사이트에 워드프레스를 사용합니다. 코드는 검사 없이 사용자 입력을 데이터베이스로 직접 전송하는 SQL 취약성을 가질 수 있습니다. 해커가 취약성을 찾으면 해당 데이터베이스로 명령을 전송할 수 있습니다. 그러면 데이터베이스 출력이 브라우저로 돌아가 해커가 다른 명령을 실행할 수 있게 됩니다. 이렇게 하면, 그들은 전체 데이터베이스를 다운로드하거나, 새로운 명령을 설정하거나, 사용자 계정을 수정하거나, 새로운 계정을 만들 수 있습니다.

    SQL 주입 공격에는 다음과 같은 세 가지 주요 형태가 있습니다.

    • 인밴드 SQL 주입:
      • 오류 기반 SQL 주입.
      • 유니언 기반 SQL 주입.
    • 블라인드 SQL 주입:
      • 부울
      • 시간 기반.
    • Out-of-Band SQL 주입.

    인밴드 SQL 주입

    인밴드 SQL 주입은 간단하고 효율적이기 때문에 가장 흔한 유형 중 하나입니다. 여기서 공격자는 동일한 통신 채널을 사용하여 공격을 실행하고 결과를 수집합니다. 두 가지 하위 변수인 오류 기반 SQL 주입과 유니온 기반 SQL 주입이 있습니다.

    • 오류 기반 SQL 주입은 해커가 데이터베이스가 오류 메시지를 생성하도록 할 수 있습니다. 그런 다음, 데이터베이스 자체에 대한 정보를 수집하기 위해 이러한 오류 메시지를 사용할 수 있습니다.
    • 유니온 기반 SQL 주입으로 범인이 유니온 SQL 운영자를 활용할 수 있게 됐습니다. 하나의 HTTP 응답을 얻기 위해 데이터베이스에 의해 제공되는 다른 문구를 결합합니다. 이런 대응에는 해커가 악용할 수 있는 데이터가 포함되는 경우가 많습니다.

    블라인드 SQL 주입

    SQL 인젝션(주입, 삽입) 공격 작동 방식 & 위협 방지 방법, 블라인드 SQL 주입은 서버의 동작 패턴에 의존합니다. 그들은 실행하는 것이 훨씬 더 느리입니다. 해커는 데이터 페이로드(payload)를 방출하고 서버의 대응을 점검해 구조를 분석합니다. 그들은 데이터가 해커들에게 직접 전달되지 않기 때문에 이것을 "블라인드"라고 부릅니다. 따라서 그들은 인밴드 내 착취에 대한 어떠한 정보도 볼 수 없습니다. 그것은 부울과 시간 기반이라는 두 가지 변형으로 나옵니다.

    • 부울 변동을 통해 해커는 SQL 쿼리를 보낼 수 있으며, 이 쿼리는 데이터베이스에 정보를 반환하라는 메시지를 표시합니다. HTTP 응답 내의 정보는 이전 결과에 따라 변경됩니다.
    • 시간 기반 변동은 악의적인 행위자가 SQL 질의를 데이터베이스로 직접 보낼 수 있게 하고, 이로 인해 데이터베이스가 반응하기 전에 기다려야 합니다. 공격자는 데이터베이스가 응답하는 데 필요한 시간을 알아채고 쿼리가 참인지 거짓인지를 결정합니다. 그 결과에 따라 HTTP 응답은 순간적이거나 지연됩니다.

    Out-of-Band SQL 주입.

    Out-of-Band SQL 주입은 데이터베이스 서버에서 특정 기능이 활성화된 경우에만 해커가 데이터베이스를 공격할 수 있도록 합니다. 가장 인기 없는 SQL 주입 방식입니다. 많은 해커들이 오류 기반 및 블라인드 SQL 주입의 대체품으로 사용합니다.

    이 특별한 공격은 해커가 동일한 매체를 사용하여 공격을 실행하고 정보를 수집할 수 없을 때 선택사항입니다. 또는 서버가 불안정하고 다른 두 주입 유형을 수행하기 위해 느릴 때 이 주입을 사용할 수 있습니다. 이 기술은 도난당한 데이터를 전달하기 위해 DNS와 HTTP 요청을 생성합니다.

    여러분은 다음과 같은 사이버 보안 위험 평가 및 중소기업 관리 팁을 좋아할 수 있습니다. 

    이 위협은 여전히 관련이 있는가?

    SQL 주입은 공격적인 사이버 공격의 가장 오래된 형태 중 하나입니다. 그러나 그것은 여전히 매우 관련이 있습니다. 오픈  애플리케이션 보안 프로젝트는 SQL 주입을 2년 전 가장 큰 위협으로 꼽았습니다. 클라우드 서비스 제공업체 아카마이가 2017년부터 2019년까지 전체 웹 기반 공격의 65%를 SQL 주입이 담당한 것으로 파악한 '인터넷 보고서'를 만들었습니다. 따라서 SQL 주입은 최근 몇 년간 웹 공격의 3분의 2에서 여전히 나타나고 있다고 말할 수 있습니다.

    SQL 인젝션(주입, 삽입) 공격 작동 방식 & 위협 방지 방법, 2017년 1/4분기에 이러한 벡터가 애플리케이션 계층 공격의 44%를 담당했습니다. 엎친 데 덮친 격으로 SQL 주입만큼 빠르게 성장하는 애플리케이션 공격 벡터는 없습니다. 2018년 11월, 또 다른 의미심장한 급상승이 있었습니다. SQL 주입 공격 시도는 3500만 건이 넘는 것으로 나타났습니다. 전문가들은 이 급상승의 주요 원인이 휴가철이라고 생각합니다. 이것은 모든 웹사이트 소유자들이 알아야 할 것이다 – 특히 그들이 소매업에 종사하는 경우.하지만 휴가철이 끝난 후에도 SQL 주입은 당신이 알아야 할 위협으로 남아있습니다.

    미국은 응용 계층 공격의 최고 대상입니다. 불과 17개월 만에 약 30억 건의 공격에 직면했습니다. 다른 인기 있는 피해자들로는 영국, 독일, 브라질, 인도, 일본, 캐나다, 호주, 이탈리아, 네덜란드 등이 있습니다. 그러므로, 그것은 여전히 큰 위협이며 모든 회사들이 광범위한 예방 조치를 취해야 한다고 가정해도 무방합니다.

    예방에 대한 보안 팁

     

    개발자들에게 가장 좋은 방법은 공격이 발생하지 않도록 예방 조치를 도입하는 것입니다. 가장 효과적인 예방책은 다음과 같습니다.

    • 입력 유효성 검사:입력 유효성 검사는 특정 사용자 입력이 허용되는지 여부를 검증합니다. 형식, 길이, 형식은 집단적으로 받아들여야 한다는 뜻입니다. 입력 문자열에 해커가 심는 명령어 격퇴에 도움이 됩니다.
    • 매개 변수화된 쿼리: 매개 변수화된 쿼리는 서로 다른 SQL 문을 미리 컴파일하는 방법입니다. 그런 다음 매개 변수를 저장하여 진술이 실행될 수 있도록 합니다. 데이터베이스는 코드를 인식하고 정규 입력 데이터와 구별할 수 있습니다.
    • 저장 프로시저:그들은 개발자들이 하나 또는 많은 SQL 문을 논리 단위로 클러스터링해야 합니다. 이름에서 알 수 있듯이 저장해 두었다가 나중에 저장해 둘 수 있는 형태의 코드입니다.
    • 탈출:개발자는 DBMS가 사용자 입력을 SQL 문과 혼동하지 않도록 문자 이스케이프 기능을 사용해야 합니다.
    • 웹 응용 프로그램 방화벽:SQL 주입 공격을 막는 가장 안전한 방법 중 하나입니다. 방화벽은 서버로 순환하는 트래픽을 감시합니다. 그것은 어떤 요청이 잠재적으로 해로울 수 있고 어떤 요청이 해롭지 않은지를 식별합니다. 이 해결책은 다른 많은 위업에도 충분하므로 항상 점잖입니다.
    • 관리 권한 회피: 개발자는 루트 액세스 권한이 있는 계정을 통해 자신의 앱을 데이터베이스에 연결해서는 안 됩니다. 그렇지 않으면 해커들이 전체 시스템에 접속해 돌이킬 수 없는 피해를 입힐 수 있습니다. 또한 개발자는 모든 데이터베이스가 제한된 자격 증명 집합을 가지고 있는지 확인해야 합니다.
    또한 다음을 좋아할 수 있습니다. 베스트셀러 인터넷 시큐리티 소프트웨어(안티바이러스 & 시큐리티) 10위권.

    파이널 워즈

    SQL 인젝션(주입, 삽입) 공격 작동 방식 & 위협 방지 방법, SQL 주입에 관심이 있는 사람이라면 다른 가능한 공격도 잊어서는 안 됩니다. 일반적인 사이버 보안 관행은 강력한 암호를 사용하고, 위협을 인식하는 방법을 배우고, 웹 사이트나 데이터베이스에 연결할 때마다 VPN을 켜는 등 적용됩니다. VPN이란 무엇이며 VPN의 기능은 무엇인가?그것은 당신이 온라인에 접속할 때마다 당신의 온라인 트래픽을 암호화합니다. 따라서, 만약 당신이 당신의 데이터베이스로 SQL 요청을 보내면, 오직 DB만이 그것을 해독할 수 있습니다. 만약 누군가가 문제의 데이터 패킷을 가로챈다면, 그들은 전혀 이해할 수 없을 것입니다. 당신이나 당신의 회사가 모든 종류의 위협에 대해 더 많은 준비를 할수록, 더 좋습니다.

    종합적인 예방 조치의 도입만이 SQL 주입이나 공격이 결코 성공하지 못하도록 보장합니다. 여러 가지 공훈과 싸우기 위한 적절한 도구가 있는지 확인하기 위해 많은 시간과 노력과 돈을 투자할 준비를 하라.

    댓글