SQL 주입
SQL injection시리즈의 일부 |
정보 보안 |
---|
관련 보안 카테고리 |
위협 |
|
방어. |
SQL 주입은 데이터 기반 응용 프로그램을 공격하기 위해 사용되는 코드 주입 기술로, 악의적인 SQL 문을 입력 필드에 삽입하여 실행합니다(예: 데이터베이스 내용을 [1][2]공격자에게 덤프합니다).SQL 주입은 SQL 문에 포함된 문자열 리터럴 이스케이프 문자에 대해 사용자 입력이 잘못 필터링되거나 사용자 입력이 강하게 입력되지 않고 예기치 않게 실행되는 경우 응용 프로그램 소프트웨어의 보안 취약성을 이용해야 합니다.SQL 주입은 대부분 웹 사이트의 공격 벡터로 알려져 있지만 모든 유형의 SQL 데이터베이스를 공격하는 데 사용할 수 있습니다.
SQL 주입 공격을 통해 공격자는 ID 스푸핑, 기존 데이터 조작, 트랜잭션 무효화 또는 잔액 변경 등의 거부 문제 발생, 시스템 상의 모든 데이터 완전 공개, 데이터 파괴 또는 사용 불가능 상태로 만들 수 있으며 데이터베이스 서버의 관리자가 됩니다.
2012년 조사에서는 평균적인 웹 애플리케이션은 월 4건의 공격 캠페인을 받았으며 소매업체는 다른 [3]산업보다 2배 더 많은 공격을 받은 것으로 관찰되었습니다.
역사
SQL 주입에 대한 첫 번째 공개 토론은 [4]1998년 무렵에 시작되었습니다. 예를 들어 1998년 Prack [5]Magazine 기사입니다.
형태
SQL Injection(SQLI; SQL 주입)은 [6]Open Web Application Security Project에 의해 2007년과 2010년의 10대 웹 애플리케이션 취약성 중 하나로 간주되었습니다.2013년 SQLI는 OWASP 상위 [7]10개 공격 1위로 평가되었습니다.SQL 주입에는 4개의 주요 서브 클래스가 있습니다.
- 클래식 SQ리
- 블라인드 또는 추론 SQL 주입
- 데이터베이스 관리 시스템 고유의 SQ리
- 복합 SQ리
Storm Worm은 Compounded SQLI의 [12]1가지 표현입니다.
이 분류는 SQLI의 상태를 나타내며, 2010년까지의 진화를 고려하여 더욱 세분화가 [13]진행되고 있다.
기술 구현
잘못 구성된 SQL 문
이 형식의 주입은 SQL 문이 SQL 문이 사용하는 데이터와 SQL 문이 실행되는 방법을 제어하는 명령으로 구성된다는 사실에 의존합니다.예를 들어 SQL 문에서select * from person where name = 'susan' and age = 2
스트링 'susan
는 데이터와 fragment입니다.and age = 2
명령어(값)의 예시입니다.2
이 예에서는 데이터이기도 합니다).
SQL 주입은 특수하게 조작된 사용자 입력이 데이터 컨텍스트를 종료하고 명령 컨텍스트를 입력할 수 있도록 수신 프로그램에 의해 처리될 때 발생합니다.이를 통해 공격자는 실행되는 SQL 문의 구조를 변경할 수 있습니다.
단순한 예로서 데이터가susan
위의 문장은 사용자 입력에 의해 제공되었습니다.사용자가 문자열 '을 입력했습니다.susan
웹 폼 텍스트 입력 필드의 '(아포스트로피 없음) 및 프로그램은 문자열 연결 문을 사용하여 3개의 fragment에서 위의 SQL 문을 형성했습니다.select * from person where name='
, 의 사용자 입력.susan
' 및' and age = 2
.
이제 '에 들어가는 대신 '에 들어가는 것을 상상해보세요.susan
공격자가 입력했습니다.' or 1=1; --
.
프로그램은 3개의 fragment와 같은 문자열 연결 접근법을 사용합니다.select * from person where name='
, 사용자 입력' or 1=1; --
,그리고.' and age = 2
스테이트먼트를 작성한다.select * from person where name='' or 1=1; -- and age = 2
. 많은 데이터베이스는 '--' 문자열 뒤에 있는 텍스트를 무시합니다.이것은 코멘트를 나타내기 때문입니다.SQL 명령어의 구조는 다음과 같습니다.select * from person where name='' or 1=1;
그리고 이것은 2살이 되는 '남자'라는 이름의 행이 아닌 모든 사람의 행이 선택됩니다.공격자는 데이터 컨텍스트를 벗어나 명령 컨텍스트에 들어가는 데이터 문자열을 조작하는 데 성공했습니다.
이제 좀 더 복잡한 예를 제시하겠습니다.
프로그램이 다음 문자열 할당 명령을 사용하여 SQL 문을 생성한다고 가정합니다.
var statement = "SELECT * FROM users WHERE name = '" + userName + "'";
이 SQL 코드는 지정된 사용자 이름의 레코드를 사용자 테이블에서 풀하도록 설계되어 있습니다.그러나 "userName" 변수가 악의적인 사용자에 의해 특정 방식으로 조작된 경우 SQL 문이 코드 작성자가 의도한 것보다 더 많은 작업을 수행할 수 있습니다.예를 들어, "userName" 변수를 다음과 같이 설정합니다.
'OR '1'='1
또는 주석을 사용하여 나머지 쿼리를 차단할 수도 있습니다(SQL[14] 댓글에는 세 가지 유형이 있습니다).세 줄 모두 끝에 공백이 있습니다.
'OR '1'='1' -- 'OR '1'='1' {'OR '1'='1' /*
는 부모 언어별로 다음 SQL 문 중 하나를 렌더링합니다.
선택한다. * 부터 사용자 어디에 이름. = '' 또는 '1'='1';
선택한다. * 부터 사용자 어디에 이름. = '' 또는 '1'='1' -- ';
이 코드를 인증 절차에서 사용하는 경우, '1'='1'의 평가는 항상 참이기 때문에 이 예를 사용하여 코더의 의도대로 특정 사용자 이름에서가 아니라 모든 사용자로부터 모든 데이터 필드(*)를 선택할 수 있습니다.
다음 스테이트먼트의 "userName" 값은 여러 스테이트먼트를 허용하는 API를 사용하여 "users" 테이블 삭제 및 "userinfo" 테이블에서 모든 데이터 선택(본질적으로 모든 사용자의 정보를 표시함)을 발생시킵니다.
a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't
이 입력은 다음과 같이 최종 SQL 문을 렌더링하고 지정합니다.
선택한다. * 부터 사용자 어디에 이름. = 'a';떨어지다 테이블 사용자; 선택한다. * 부터 사용자 정보 어디에 't' = 't';
대부분의 SQL Server 구현에서는 한 번의 호출로 여러 문을 실행할 수 있지만 PHP와 같은 일부 SQL API는mysql_query()
보안상의 이유로 이 기능을 사용할 수 없습니다.이렇게 하면 공격자가 완전히 다른 쿼리를 주입하는 것은 방지되지만 쿼리를 수정하는 것은 막지 않습니다.
블라인드 SQL 주입
블라인드 SQL 주입은 웹 응용 프로그램이 SQL 주입에 취약하지만 주입 결과가 공격자에게 표시되지 않을 때 사용됩니다.취약성이 있는 페이지는 데이터를 표시하는 페이지는 아니지만 해당 페이지를 호출하는 정규 SQL 문에 삽입된 논리문의 결과에 따라 다르게 표시됩니다.이러한 유형의 공격은 복구된 각 비트에 대해 새로운 스테이트먼트를 작성해야 하고 그 구조에 따라서는 다수의 실패한 요청으로 구성될 수 있기 때문에 기존에는 시간이 많이 걸리는 것으로 여겨져 왔습니다.최근의 진보로 인해 각 요청은 실패한 요청 없이 여러 비트를 복구할 수 있게 되어 더욱 일관되고 효율적으로 [15]추출할 수 있게 되었습니다.취약성의 위치와 대상 정보가 [16]확인되면 이러한 공격을 자동화할 수 있는 몇 가지 도구가 있습니다.
조건부 응답
블라인드 SQL 주입의 한 가지 유형은 데이터베이스가 일반 응용 프로그램 화면에서 논리문을 평가하도록 강제합니다.예를 들어, 서평 웹사이트는 조회 문자열을 사용하여 표시할 서평을 결정합니다.그래서 URL은 https://books.example.com/review?id=5
서버가 쿼리를 실행합니다.
선택한다. * 부터 서평 어디에 아이디 = '5';
검토 페이지를 ID 5의 검토 데이터로 채우고 표 북리뷰에 저장한다.쿼리는 서버에서 완전히 실행됩니다.사용자는 데이터베이스, 테이블 또는 필드의 이름을 알 수 없으며 쿼리 문자열도 알 수 없습니다.사용자는 위의 URL이 서평을 반환하는 것만 볼 수 있습니다.해커는 URL을 로드할 수 있습니다.
그리고.https://books.example.com/review?id=5 OR 1=1
이 경우 쿼리가 발생할 수 있습니다.https://books.example.com/review?id=5 AND 1=2
선택한다. * 부터 서평 어디에 아이디 = '5' 또는 '1'='1'; 선택한다. * 부터 서평 어디에 아이디 = '5' 그리고. '1'='2';
각각 다음과 같다.원본 검토가 "1=1" URL과 함께 로드되고 "1=2" URL에서 공백 또는 오류 페이지가 반환되며 사용자에게 입력이 잘못되었음을 경고하기 위해 반환된 페이지가 생성되지 않았거나 입력 테스트 스크립트에 의해 탐지된 경우 쿼리가 전달되었을 가능성이 높으므로 사이트가 SQL 주입 공격에 취약할 수 있습니다.h는 두 경우 모두 성공합니다.해커는 서버에서 실행 중인 MySQL 버전 번호를 표시하도록 설계된 다음 쿼리 문자열을 사용할 수 있습니다.
MySQL 4를 실행하고 있는 서버에서의 서평과 그렇지 않은 경우 공백 또는 오류 페이지가 표시됩니다.해커는 계속해서 쿼리 문자열 내의 코드를 사용하여 직접 목표를 달성하거나 다른 [17][18]공격 방법을 찾기 위해 서버에서 더 많은 정보를 수집할 수 있습니다. https://books.example.com/review?id=5 AND substring(@@version, 1, INSTR(@@version, '.') - 1)=4
2차 SQL 주입
2차 SQL 주입은 제출된 값에 즉시 실행되지 않고 저장된 악의적인 명령이 포함되어 있을 때 발생합니다.경우에 따라서는 응용 프로그램이 SQL 문을 올바르게 인코딩하여 유효한 SQL로 저장할 수 있습니다.그러면 SQL 주입으로부터 보호하는 제어가 없는 응용 프로그램의 다른 부분에서 저장된 SQL 문이 실행될 수 있습니다.이 공격에는 나중에 송신된 값이 어떻게 사용되는지에 대한 지식이 필요합니다.자동화된 웹 응용 프로그램 보안 스캐너는 이러한 유형의 SQL 주입을 쉽게 탐지하지 못하고 시도 중인 증거를 확인하는 위치를 수동으로 지시해야 할 수 있습니다.
경감
SQL 주입은 잘 알려진 공격이며 간단한 방법으로 쉽게 예방할 수 있습니다.2015년 Talk에 대한 SQL 주입 공격 이후 보안 전문가들은 이러한 대기업이 [19]Talk에 취약할 것이라는 사실에 놀라움을 금치 못했다고 BBC는 전했다.
오브젝트 관계 맵
개발자는 Hibernate 등의[20] ORM 프레임워크를 사용하여 안전하고 개발자 친화적인 방법으로 데이터베이스 쿼리를 작성할 수 있습니다.데이터베이스 쿼리는 더 이상 문자열로 구성되지 않으므로 주입 [21]취약성의 위험이 없습니다.
웹 응용 프로그램 방화벽
ModSecurity CRS[22] 등의 WAF 제품은 SQL 주입 취약성이 코드베이스에 침입하는 것을 막을 수 없지만 공격자에게 검출과 부정 이용은 훨씬 더 어려워질 수 있습니다.
파라미터화된 스테이트먼트
대부분의 개발 플랫폼에서는 파라미터로 동작하는 파라미터화된 스테이트먼트를 스테이트먼트에 사용자 입력을 삽입하는 대신 사용할 수 있습니다(플레이스 홀더 또는 바인드 변수라고도 불립니다).자리 표시자는 지정된 유형의 값만 저장할 수 있으며 임의 SQL 조각은 저장할 수 없습니다.따라서 SQL 주입은 단순히 이상한(아마도 유효하지 않은) 파라미터 값으로 취급됩니다.대부분의 경우 SQL 문은 고정되어 있으며 각 파라미터는 테이블이 아닌 스칼라입니다.그런 다음 사용자 입력이 [23]파라미터에 할당(바운드)됩니다.
쉽게 말해 파라미터화된 쿼리를 사용하면 SQL 주입을 확실하게 방지할 수 있습니다.이는 주로 변수가 임의의 SQL 입력을 받아들이는 쿼리 문자열이 아님을 의미하지만 특정 유형의 일부 매개 변수는 반드시 필요합니다.매개 변수화된 쿼리를 사용하려면 개발자가 모든 코드를 정의해야 합니다.따라서 매개 변수화된 쿼리가 없으면 누구나 필드에 SQL 코드를 입력하고 데이터베이스를 지울 수 있습니다.단, 파라미터가 '@username'으로 설정되어 있는 경우 사용자는 [24]코드 없이 사용자 이름만 입력할 수 있습니다.
코딩 레벨에서의 실시
객체 관계 매핑 라이브러리를 사용하면 SQL 코드를 작성할 필요가 없습니다.실제로 ORM 라이브러리는 객체 지향 코드에서 매개 변수화된 SQL 문을 생성합니다.
이스케이프
오류가 발생하기 쉽지만 결국 주입을 방지하는 방법은 SQL에서 특별한 의미를 가진 모든 문자를 이스케이프하는 것입니다.SQL DBMS 매뉴얼에서는 어떤 문자가 특별한 의미를 가지는지 설명하므로 번역이 필요한 문자의 포괄적인 블랙리스트를 작성할 수 있습니다.예를 들어, 한 개의 인용문이 나올 때마다 ('
파라미터의 )는 2개의 작은 따옴표로 대체해야 합니다( ).''
를 사용하여 유효한 SQL 문자열 리터럴을 형성합니다.예를 들어 PHP에서는 함수를 사용하여 파라미터를 이스케이프하는 것이 일반적입니다.mysqli_real_escape_string();
SQL 쿼리를 전송하기 전에 다음을 수행합니다.
$mysqli = 신규 mysqli('호스트명', 'db_module', 'db_password', 'db_name'); $140 = 스프린트("SELECT * FROM 'Users' WHERE UserName=s' AND Password=s", $mysqli->real_module_string($140), $mysqli->real_module_string($password(비밀번호))); $mysqli->질문하다($140);
이 함수는 백슬래시 앞에 다음 문자를 추가합니다.\x00
,\n
,\r
,\
,'
,"
그리고.\x1a
이 함수는 보통 MySQL에 [25]쿼리를 보내기 전에 데이터를 안전하게 하기 위해 사용합니다.
PHP에는 Postgre용 pg_escape_string()과 같은 다른 데이터베이스 시스템용 함수가 있습니다.SQL. 함수addslashes(string $str)
는 이스케이프 문자에 대해 작동하며, 특히 PHP에 이스케이프 기능이 없는 데이터베이스에 대한 쿼리에 사용됩니다.데이터베이스 쿼리 등에서 이스케이프해야 하는 문자 앞에 백슬래시가 있는 문자열을 반환합니다.이러한 문자는 작은따옴표('), 큰따옴표("), 백슬래시(\) 및 NUL(NULL 바이트)[26]입니다.
특정 문자열을 이스케이프하는 것을 잊기 쉽기 때문에 이스케이프된 문자열을 SQL에 정기적으로 전달하면 오류가 발생하기 쉽습니다.입력을 보호하기 위해 투명 레이어를 작성하면 완전히 [27]제거하지는 않더라도 이러한 오류의 영향을 줄일 수 있습니다.
패턴체크
정수, 부동 또는 부울, 문자열 매개 변수 값이 지정된 유형에 대해 유효한 표현인 경우 해당 매개 변수를 확인할 수 있습니다.엄밀한 패턴(날짜, UUID, 영숫자 전용 등)을 따를 필요가 있는 문자열은, 이 패턴과 일치하는 경우에 체크할 수 있습니다.
데이터베이스 권한
웹 응용 프로그램이 사용하는 데이터베이스 로그인 권한을 필요한 만큼만 제한하면 웹 응용 프로그램의 버그를 악용하는 SQL 주입 공격의 효과를 줄일 수 있습니다.
예를 들어 Microsoft SQL Server에서는 데이터베이스 로그인이 일부 시스템 테이블에서 선택되지 않도록 제한될 수 있습니다.이 경우 데이터베이스의 모든 텍스트 열에 JavaScript를 삽입하려는 공격이 제한됩니다.
거부하다 선택한다. 에 시스템.시스템 로. 웹 데이터베이스; 거부하다 선택한다. 에 시스템.물건들 로. 웹 데이터베이스; 거부하다 선택한다. 에 시스템.테이블 로. 웹 데이터베이스; 거부하다 선택한다. 에 시스템.견해 로. 웹 데이터베이스; 거부하다 선택한다. 에 시스템.패키지 로. 웹 데이터베이스;
예
- 2002년 2월 Jeremia Jacks는 Guess.com가 SQL 주입 공격에 취약하다는 것을 알게 되었습니다.이것에 의해, 사이트의 고객 [28]데이타베이스내의 200,000이상의 이름, 신용카드 번호, 및 유효기간을 풀다운 할 수 있는 적절한 URL을 작성할 수 있는 사람은 누구라도 있을 것입니다.
- 2005년 11월 1일, 10대 해커가 SQL 주입을 사용하여 Tech Target 그룹의 대만 정보 보안 잡지 사이트에 침입하여 고객의 정보를 [29]훔쳤습니다.
- 2006년 1월 13일, 러시아 컴퓨터 범죄자들이 로드 아일랜드 정부 웹사이트에 침입하여 주정부 [30]기관과 온라인으로 거래한 개인들로부터 신용카드 데이터를 훔쳤다고 한다.
- 2006년 3월 29일 한 해커가 인도 정부의 공식 관광 [31]사이트에서 SQL 주입 결함을 발견했습니다.
- 2007년 6월 29일, 한 컴퓨터 범죄자가 SQL [32][33]주입을 사용하여 Microsoft UK 웹사이트를 훼손했습니다.영국 웹사이트 The Register는 마이크로소프트 대변인의 말을 인용해 이 문제를 인정했다.
- 2007년 9월 19일 및 2009년 1월 26일 터키 해커 그룹 m0sted는 SQL 주입을 사용하여 Microsoft의 SQL Server를 이용하여 McAlester Army Army Contunition Plant와 미국 육군 엔지니어단에 속한 웹 서버를 각각 [34]해킹했습니다.
- 2008년 1월에는 Microsoft SQL Server를 데이터베이스 [35]스토어로 사용하는 애플리케이션 코드의 취약성을 부정 이용하는 SQL 주입 자동 공격에 의해 수만 대의 PC가 감염되었습니다.
- 2008년 7월, Kaspersky의 말레이시아 사이트는 SQL 주입을 사용한 "m0sted" 해커 그룹에 의해 해킹되었습니다.
- 2008년 4월 13일 오클라호마 성범죄자 등록소는 성범죄자의 사회보장번호 10,597개가 SQL 주입[36] 공격을 통해 다운로드되었다는 통지를 받고 "정기적 유지"를 위해 웹사이트를 폐쇄했다.
- 2008년 5월 중국의 한 서버 팜에서는 구글 검색 엔진에 대한 자동 쿼리를 사용하여 자동화된 SQL 주입 [35][37]툴의 공격에 취약한 SQL 서버 웹 사이트를 식별했습니다.
- 적어도 2008년 4월부터 8월까지 Microsoft의 IIS 웹 서버와 SQL Server 데이터베이스 서버의 SQL 주입 취약성을 부정 이용하는 공격이 대량으로 발생했습니다.이 공격에서는 테이블 또는 컬럼의 이름을 추측할 필요가 없으며 단일 [38]요청으로 모든 테이블의 모든 텍스트 열이 손상됩니다.멀웨어 JavaScript 파일을 참조하는 HTML 문자열이 각 값에 추가됩니다.이 데이터베이스 값이 나중에 웹 사이트 방문자에게 표시될 때 스크립트는 방문자의 시스템을 제어하기 위한 몇 가지 방법을 시도합니다.악용된 웹 페이지 수는 500,[39]000개로 추산됩니다.
- 2009년 8월 17일, 미국 법무부는 미국 시민인 Albert Gonzalez와 익명의 러시아인 2명을 SQL 주입 공격을 사용하여 1억 3천만 개의 신용카드 번호를 도용한 혐의로 기소했습니다.보도에 따르면, "미국 역사상 가장 큰 신분 도용 사건"에서, 그 남자는 많은 기업 피해자들의 결제 처리 시스템을 연구한 후 그들의 카드를 훔쳤다.피해를 입은 회사들 중에는 신용카드 프로세서인 하트랜드 결제 시스템, 편의점 체인 세븐일레븐, 슈퍼마켓 체인 한나포드 [40]브라더스 등이 있었다.
- 2009년 12월 공격자는 SQL 주입 [41]공격을 사용하여 약 3200만 사용자의 암호화되지 않은 사용자 이름과 비밀번호를 포함하는 RockYou 평문 데이터베이스를 침해했습니다.
- 2010년 7월, 「Ch Russo」라고 하는 핸들을 사용하고 있는 남미 시큐러티 연구원이, 인기 사이트 「The Pirate Bay」로부터 기밀 유저 정보를 입수했습니다.그는 사이트의 관리 제어판에 액세스하여 SQL 주입 취약성을 이용하여 IP 주소, MD5 비밀번호 해시 및 개별 사용자가 [42]업로드한 레코드 등의 사용자 계정 정보를 수집할 수 있었습니다.
- 2010년 7월 24일부터 26일까지 일본과 중국의 공격자는 대형 온라인 슈퍼마켓 사이트를 운영하는 오사카 소재 기업 Neo Beat에서 고객의 신용카드 데이터에 액세스하기 위해 SQL 주입을 사용했습니다.이 공격은, 슈퍼마켓 체인인 이즈미야, 마루에츠, 류큐 주스코 등 7개 협력사에도 영향을 미쳤다.데이터 도난은 보고된 12,191명의 고객에게 영향을 미쳤습니다.2010년 8월 14일 현재, 중국에서 제삼자가 상품이나 서비스를 구입하기 위해서 사용하고 있는 신용카드 정보는 300건 이상이라고 보고되고 있다.
- 2010년 9월 19일 스웨덴 총선에서는 유권자가 기입 [43]투표의 일환으로 SQL 명령어를 손으로 써서 코드 주입을 시도했습니다.
- 2010년 11월 8일 Royal Navy 웹사이트는 TinKode라는 이름의 루마니아 [44][45]해커가 SQL 주입을 사용하여 해킹을 당했습니다.
- 2011년 2월 5일, 테크놀로지 시큐러티 기업 HBGary는, CMS가 주도하는[46] Web 사이트에서 SQL 주입을 사용해 LulzSec에 침입당했습니다.
- 2011년 3월 27일 MySQL 공식 홈페이지인 www.mysql.com가 SQL[47] 블라인드 주입을 사용한 해커에 의해 해킹당했습니다.
- 2011년 4월 11일 Barracuda Networks는 SQL 주입 결함으로 인해 손상되었습니다.취득한 [48]정보에는, 종업원의 E-메일 주소와 유저명도 포함되어 있습니다.
- 2011년 4월 27일 4시간 동안 Broadband Reports 웹사이트에서 SQL 자동 주입 공격이 발생했습니다.이 공격은 사용자 이름과 비밀번호 쌍의 8%를 추출할 수 있었습니다.즉, 9,000개의 액티브계정과 90,000개의 오래된 [49][50][51]계정 또는 비활성계정의 랜덤계정입니다.
- 2011년 6월 1일, 그룹 LulzSec의 "핵티비스트"들은 SQLI를 사용하여 소니의 웹사이트에서 보통 텍스트로 저장된 쿠폰, 키 및 비밀번호를 훔치고 백만 [52]명의 사용자의 개인 정보에 액세스한 혐의로 기소되었다.
- 2011년 6월, PBS는 LulzSec에 의해 해킹당했습니다.대부분 SQL 주입을 사용한 것으로 생각됩니다.해커가 SQL 주입을 실행하기 위해 사용한 모든 프로세스에 대해서는 이 Imperva [53]블로그에 기재되어 있습니다.
- 2012년 5월 대규모 멀티플레이어 온라인 게임인 Wurm Online의 웹사이트는 사이트 업데이트 [54]중에 SQL 주입으로 폐쇄되었습니다.
- 2012년 7월, 해커 그룹이 Yahoo!로부터 45만개의 로그인 자격 정보를 훔쳤다고 보고되었습니다.로그인은 일반 텍스트로 저장됐으며 야후 서브도메인 야후에서 가져온 것으로 알려졌다. 목소리.이 그룹은 "연합 기반 SQL 주입 기술"[55][56]을 사용하여 야후의 보안을 침해했다.
- 2012년 10월 1일, "팀 고스트셸"이라고 불리는 해커 그룹은 하버드, 프린스턴, 스탠포드, 코넬, 존스 홉킨스, 취리히 대학교를 포함한 53개 대학의 학생, 교직원, 직원 그리고 졸업생들의 개인 기록을 pastebin.com에 게시했습니다.해커들은 유럽의 교육법 변화와 미국의 [57]등록금 인상을 한탄하며 "오늘날의 교육 변화에 대한 경각심을 높이려 하고 있다"고 주장했다.
- 2013년 2월에는 몰디브 해커들이 SQL Injection을 이용해 'UN-Maldives'라는 웹사이트를 해킹했다.
- 2013년 6월 27일 해커 그룹 "RedHack"이 이스탄불 관리 사이트에 [58]침입했습니다.그들은 사람들이 수도, 가스, 인터넷, 전기, 전화 회사에 진 빚을 없앨 수 있었다고 주장했다.또한 다른 시민이 이른 아침에 로그인하여 빚을 청산할 수 있도록 관리자 사용자 이름과 비밀번호를 공개했습니다.그들은 트위터에서 [59]그 소식을 알렸다.
- 2013년 11월 4일 해킹조직 랩터스웍은 중국국제상업회의소에 대한 SQL 주입 공격을 통해 71개의 중국 정부 데이터베이스를 해킹한 혐의를 받고 있다.유출된 데이터는 [60]Anonymous와 협력하여 공개적으로 게시되었다.
- 2014년 2월 2일 AVS TV는 @deletesec이라는 해킹 그룹에 의해 40,000개의 계정이 유출되었습니다.
- 2014년 2월 21일, 유엔 인터넷 거버넌스 포럼에서는 3,215개의 계정 정보가 유출되었습니다.[62]
- 2014년 2월 21일, @deletesec이라는 단체의 해커들은 보안 취약점을 보고한 해커들을 체포하겠다고 위협한 후 Spirol International을 해킹했다.이 [63]충돌로 인해 7만 명의 사용자 세부 정보가 노출되었습니다.
- 2014년 3월 7일, 존스 홉킨스 대학 관계자들은 자사의 바이오메디컬 엔지니어링 서버가 해커 "Hooky"가 실행한 SQL 주입 공격의 희생양이 되어 해킹 전문가 그룹 "RaptorSwag"와 제휴했다고 발표했습니다.해커들은 878명의 학생과 교직원의 신상정보를 유출해 보도자료와 유출된 자료를 [64]인터넷에 올렸다.
- 2014년 8월 밀워키에 본사를 둔 컴퓨터 보안 회사 Hold Security는 SQL [65]주입을 통해 42만 개에 가까운 웹사이트에서 기밀 정보가 도난당한 사실을 밝혀냈습니다.뉴욕타임스는 이 주장을 확인하기 위해 [66]보안 전문가를 고용해 이 같은 사실을 확인했다.
- 2015년 10월 SQL 주입 공격이 영국 통신사 Talk의 서버에서 156,959명의 고객 개인정보를 도용하여 레거시 웹 [67]포털의 취약성을 이용했습니다.
- 2020년 8월, 학부생인 Ishan [68]Gandhi에 의해 캠퍼스 내에 설립된 스타트업 Link의 데이터 삭제 기준이 불안정하기 때문에 많은 스탠포드 학생들의 연애 관심사에 대한 정보에 액세스하기 위해 SQL 주입 공격이 사용되었습니다.
- 2021년 초 극우 웹사이트 Gab에서 SQL 주입 공격을 통해 70기가바이트의 데이터가 유출되었습니다.이 취약성은 Gab의 [69]CTO인 Fosco Marotto에 의해 Gab 코드베이스에 도입되었습니다.다음 주 첫 번째 공격에서 훔친 [70]OAuth2 토큰을 사용하여 Gab에 대한 두 번째 공격이 시작되었습니다.
대중문화에서
- 2007년 xkcd 만화에는 Robert'; DROP TABLE 학생; SQL 주입을 수행하기 위해 이름이 붙여졌습니다.이 카툰에서는 SQL 주입을 비공식적으로 "Bobby Tables"[71][72]라고 부르기도 합니다.
- SQL 주입에 의한 웹 사이트에 대한 무단 로그인은 J.K.의 서브플롯 중 하나의 기반이 됩니다. 롤링의 2012년 소설 '캐주얼 빈자리'
- 2014년 폴란드의 한 개인은 합법적으로 Dariusz Jakubowski x'; DROP TABLE 사용자; 스팸 발송자 하베스팅 [73]봇의 작동을 방해하기 위해 SELECT '1'로 사업명을 변경했다.
- 2015년 게임 Hacknet에는 SQL_MemCorrupt라는 해킹 프로그램이 있습니다.SQL 데이터베이스에 파손 오류를 일으키는 테이블엔트리를 삽입한 후 해당 테이블을 쿼리하여 SQL 데이터베이스 크래시 및 코어 덤프를 발생시키는 것으로 설명됩니다.
- 2019년 스타트렉: 디스커버리 에피소드 If Memory Services Commander Airam은 우주왕복선 중 하나에 있는 데이터 저장소를 공격한 탐사선이 여러 개의 SQL 주입을 했지만 손상된 파일을 찾을 수 없다는 것을 발견했다.
「 」를 참조해 주세요.
- 코드 주입
- 사이트 간 스크립팅
- 메타스플로이트 프로젝트
- OWASP 오픈 웹 애플리케이션 보안 프로젝트
- SGML 엔티티
- 제어되지 않는 형식 문자열
- w3af
- 웹 응용 프로그램 보안
레퍼런스
- ^ Microsoft. "SQL Injection". Archived from the original on August 2, 2013. Retrieved August 4, 2013.
SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. Any procedure that constructs SQL statements should be reviewed for injection vulnerabilities because SQLi Server will execute all syntactically valid queries that it receives. Even parameterized data can be manipulated by a skilled and determined attacker.
- ^ Zhuo, Z.; Cai, T.; Zhang, X.; Lv, F. (March 12, 2021). "Long short‐term memory on abstract syntax tree for SQL injection detection". IET Software. 15 (2): 188–197. doi:10.1049/sfw2.12018. ISSN 1751-8806.
- ^ Imperva (July 2012). "Imperva Web Application Attack Report" (PDF). Archived (PDF) from the original on September 7, 2013. Retrieved August 4, 2013.
Retailers suffer 2x as many SQL injection attacks as other industries. / While most web applications receive 4 or more web attack campaigns per month, some websites are constantly under attack. / One observed website was under attack 176 out of 180 days, or 98% of the time.
- ^ Sean Michael Kerner (November 25, 2013). "How Was SQL Injection Discovered? The researcher once known as Rain Forrest Puppy explains how he discovered the first SQL injection more than 15 years ago". Archived from the original on March 18, 2014.
- ^ Jeff Forristal (signing as rain.forest.puppy) (December 25, 1998). "NT Web Technology Vulnerabilities". Phrack Magazine. 8 (54 (article 8)). Archived from the original on March 19, 2014.
- ^ "Category:OWASP Top Ten Project". OWASP. Archived from the original on May 19, 2011. Retrieved June 3, 2011.
- ^ "Category:OWASP Top Ten Project". OWASP. Archived from the original on October 9, 2013. Retrieved August 13, 2013.
- ^ "WHID 2007-60: The blog of a Cambridge University security team hacked". Xiom. Archived from the original on June 19, 2011. Retrieved June 3, 2011.
- ^ "WHID 2009-1: Gaza conflict cyber war". Xiom. Archived from the original on October 7, 2011. Retrieved June 3, 2011.
- ^ "List of Web Hacking Incidents: DNS Hijacking". Xiom. Archived from the original on June 18, 2009.
- ^ "Third Wave of Web Attacks Not the Last". Dark Reading. Retrieved July 29, 2012.
- ^ Danchev, Dancho (January 23, 2007). "Mind Streams of Information Security Knowledge: Social Engineering and Malware". Ddanchev.blogspot.com. Archived from the original on July 21, 2011. Retrieved June 3, 2011.
- ^ Deltchev, Krassen. "New Web 2.0 Attacks". B.Sc. Thesis. Ruhr-University Bochum. Archived from the original on April 2, 2012. Retrieved February 18, 2010.
- ^ "How to Enter SQL Comments" (PDF), IBM Informix Guide to SQL: Syntax, IBM, pp. 13–14, retrieved June 4, 2018
- ^ "Extracting Multiple Bits Per Request From Full-blind SQL Injection Vulnerabilities". Hack All The Things. Archived from the original on July 8, 2016. Retrieved July 8, 2016.
- ^ "Using SQLBrute to brute force data from a blind SQL injection point". Justin Clarke. Archived from the original on June 14, 2008. Retrieved October 18, 2008.
- ^ macd3v. "Blind SQL Injection tutorial". Archived from the original on December 14, 2012. Retrieved December 6, 2012.
- ^ Andrey Rassokhin; Dmitry Oleksyuk. "TDSS botnet: full disclosure". Archived from the original on December 9, 2012. Retrieved December 6, 2012.
- ^ "Questions for TalkTalk - BBC News". BBC News. October 26, 2015. Archived from the original on October 26, 2015. Retrieved October 26, 2015.
- ^ "Hibernate". hibernate.org. Retrieved February 24, 2021.
- ^ "SQL Injection Attacks & Prevention: Complete Guide". appsecmonkey.com. February 13, 2021. Retrieved February 24, 2021.
- ^ "ModSecurity: Rules". modsecurity.org. Retrieved February 24, 2021.
- ^ "SQL Injection Prevention Cheat Sheet". Open Web Application Security Project. Archived from the original on January 20, 2012. Retrieved March 3, 2012.
- ^ Security, Penta (May 26, 2016). "What is SQL injection and how can you prevent it from happening?". Penta Security Systems Inc. Retrieved August 8, 2019.
- ^ "mysqli->real_escape_string - PHP Manual". PHP.net. Retrieved October 11, 2013.
- ^ "Addslashes - PHP Manual". PHP.net. Archived from the original on September 5, 2011.
- ^ "Transparent query layer for MySQL". Robert Eisele. November 8, 2010. Archived from the original on November 11, 2010.
- ^ "Guesswork Plagues Web Hole Reporting". SecurityFocus. March 6, 2002. Archived from the original on July 9, 2012.
- ^ "WHID 2005-46: Teen uses SQL injection to break to a security magazine web site". Web Application Security Consortium. November 1, 2005. Archived from the original on January 17, 2010. Retrieved December 1, 2009.
- ^ "WHID 2006-3: Russian hackers broke into a RI GOV website". Web Application Security Consortium. January 13, 2006. Archived from the original on February 13, 2011. Retrieved May 16, 2008.
- ^ "WHID 2006-27: SQL Injection in incredibleindia.org". Web Application Security Consortium. March 29, 2006. Archived from the original on July 1, 2009. Retrieved March 12, 2010.
- ^ Robert (June 29, 2007). "Hacker Defaces Microsoft U.K. Web Page". cgisecurity.net. Retrieved May 16, 2008.
- ^ Keith Ward (June 29, 2007). "Hacker Defaces Microsoft UK Web Page". Redmond Channel Partner Online. Archived from the original on December 23, 2007. Retrieved May 16, 2008.
- ^ "Anti-U.S. Hackers Infiltrate Army Servers". Information Week. May 29, 2009. Archived from the original on December 20, 2016. Retrieved December 17, 2016.
- ^ a b Sumner Lemon, IDG News Service (May 19, 2008). "Mass SQL Injection Attack Targets Chinese Web Sites". PCWorld. Retrieved May 27, 2008.[영구 데드링크]
- ^ Alex Papadimoulis (April 15, 2008). "Oklahoma Leaks Tens of Thousands of Social Security Numbers, Other Sensitive Data". The Daily WTF. Archived from the original on May 10, 2008. Retrieved May 16, 2008.
- ^ Michael Zino (May 1, 2008). "ASCII Encoded/Binary String Automated SQL Injection Attack". Archived from the original on June 1, 2008.
- ^ Giorgio Maone (April 26, 2008). "Mass Attack FAQ". Archived from the original on September 14, 2008.
- ^ Gregg Keizer (April 25, 2008). "Huge Web hack attack infects 500,000 pages". Archived from the original on October 19, 2015. Retrieved October 16, 2015.
- ^ "US man 'stole 130m card numbers'". BBC. August 17, 2009. Archived from the original on August 18, 2009. Retrieved August 17, 2009.
- ^ O'Dell, Jolie (December 16, 2009). "RockYou Hacker - 30% of Sites Store Plain Text Passwords". New York Times. Retrieved May 23, 2010.
- ^ "The pirate bay attack". July 7, 2010. Archived from the original on August 24, 2010.
- ^ "Did Little Bobby Tables migrate to Sweden?". Alicebobandmallory.com. Archived from the original on July 1, 2012. Retrieved June 3, 2011.
- ^ 루마니아 해커의 공격을 받은 영국 해군 웹사이트 2010년 11월 9일 Wayback Machine BBC News, 8-11-10, 2010년 11월 접속
- ^ Sam Kiley (November 25, 2010). "Super Virus A Target For Cyber Terrorists". Archived from the original on November 28, 2010. Retrieved November 25, 2010.
- ^ "We Are Anonymous: Inside the Hacker World of LulzSec" (PDF). Little, Brown and Company. Archived from the original (PDF) on July 18, 2012.
- ^ "MySQL.com compromised". sucuri. Archived from the original on March 31, 2011.
- ^ "Hacker breaks into Barracuda Networks database". Archived from the original on July 27, 2011.
- ^ "site user password intrusion info". Dslreports.com. Archived from the original on October 18, 2012. Retrieved June 3, 2011.
- ^ "DSLReports says member information stolen". Cnet News. April 28, 2011. Archived from the original on March 21, 2012. Retrieved April 29, 2011.
- ^ "DSLReports.com breach exposed more than 100,000 accounts". The Tech Herald. April 29, 2011. Archived from the original on April 30, 2011. Retrieved April 29, 2011.
- ^ "LulzSec hacks Sony Pictures, reveals 1m passwords unguarded", electronista.com, June 2, 2011, archived from the original on June 6, 2011, retrieved June 3, 2011
- ^ "Imperva.com: PBS Hacked - How Hackers Probably Did It". Archived from the original on June 29, 2011. Retrieved July 1, 2011.
- ^ "Wurm Online is Restructuring". May 11, 2012. Archived from the original on May 22, 2012.
- ^ 첸다 응악.야후가 해킹했다고 합니다. 고객님의 계정은 안전한가요?"2012년 7월 14일, CBS 뉴스 Wayback Machine에서 보관.2012년 7월 12일2012년 7월 16일 취득.
- ^ Yap, Jamie (July 12, 2012). "450,000 user passwords leaked in Yahoo breach". ZDNet. Archived from the original on July 2, 2014. Retrieved February 18, 2017.
- ^ Perlroth, Nicole (October 3, 2012). "Hackers Breach 53 Universities and Dump Thousands of Personal Records Online". New York Times. Archived from the original on October 5, 2012.
- ^ "RedHack Breaches Istanbul Administration Site, Hackers Claim to Have Erased Debts". Archived from the original on June 29, 2013.
- ^ @RedHack_EN (June 27, 2013). "Open to public hacking. One of Governor of Istanbul's site User: 'or=' Pass: 'or=' Site:ioi.gov.tr/fatura/login.php pic.twitter.com/ZEHBFJLVfT" (Tweet). Archived from the original on August 12, 2016 – via Twitter.
- ^ Kovacs, Eduard (November 4, 2013). "Hackers Leak Data Allegedly Stolen from Chinese Chamber of Commerce Website". Softpedia News. Archived from the original on March 2, 2014. Retrieved February 27, 2014.
- ^ "40,000 AVS TV Accounts Leaked". Maurihackers. Archived from the original on February 19, 2015. Retrieved February 19, 2015.
- ^ "United Nations Internet Governance Forum Breached". February 21, 2014. Archived from the original on February 19, 2015. Retrieved February 19, 2015.
- ^ Kovacs, Eduard (February 21, 2014). "Details of 70,000 Users Leaked by Hackers from Systems of SPIROL International". Softpedia News. Archived from the original on February 19, 2015. Retrieved February 19, 2015.
- ^ Dance, Scott (March 7, 2014). "Hacker breaches Hopkins server, but officials say identity theft not a concern". The Baltimore Sun. Archived from the original on April 14, 2014. Retrieved April 14, 2014.
- ^ 데이먼 푸터.'Close-Knit' 러시아 해커 Gang Hoards, 2017년 7월 14일 PC Magazine, Wayback Machine, 2014년 8월 5일 아카이브 완료
- ^ 니콜 펄로스.러시아 갱 아마스 10억 개가 넘는 인터넷 패스워드가 2017년 2월 27일 뉴욕타임스, 2014년 8월 5일 웨이백 머신에 보관되었습니다.
- ^ "TalkTalk gets record £400,000 fine for failing to prevent October 2015 attack". October 5, 2016. Archived from the original on October 24, 2016. Retrieved October 23, 2016.
- ^ Catania, Sam (August 13, 2020). "Vulnerability in 'Link' website may have exposed data on Stanford students' crushes". The Stanfort Daily. Retrieved September 5, 2020.
- ^ Goodin, Dan (March 2, 2021). "Rookie coding mistake prior to Gab hack came from site's CTO". Ars Technica.
- ^ Goodin, Dan (March 8, 2021). "Gab, a haven for pro-Trump conspiracy theories, has been hacked again". Ars Technica.
- ^ Munroe, Randall. "XKCD: Exploits of a Mom". Archived from the original on February 25, 2013. Retrieved February 26, 2013.
- ^ "The Bobby Tables Guide to SQL Injection". Archived from the original on November 7, 2017. Retrieved October 30, 2017.
- ^ "Jego firma ma w nazwie SQL injection. Nie zazdrościmy tym, którzy będą go fakturowali ;)". Niebezpiecznik (in Polish). September 11, 2014. Archived from the original on September 24, 2014. Retrieved September 26, 2014.
외부 링크
- Websec별 SQL Injection Knowledge Base 。
- WASC 위협 분류 - Web Application Security Consortium에 의한 SQL 주입 엔트리.
- Stuart Thomas에 의해 2012년 11월 9일 Wayback Machine에서 SQL Injection이 사라지지 않는 이유 아카이브되었습니다.
- SDL Bala Neerumalla의 SQL 주입에 대한 빠른 보안 참조.
- 보안 결함 구조: SQL 주입