윤리적 해킹-SQL 주입

SQL 주입은 웹 응용 프로그램과 연결된 데이터베이스에서 원하는 응답을 검색하기 위해 URL 문자열 또는 데이터 구조에 배치되는 SQL 명령 집합입니다. 이러한 유형의 공격은 일반적으로 PHP 또는 ASP.NET을 사용하여 개발 된 웹 페이지에서 발생합니다.

SQL 주입 공격은 다음과 같은 의도로 수행 할 수 있습니다.

  • 시스템의 전체 데이터베이스를 덤프하려면

  • 데이터베이스의 내용을 수정하려면 또는

  • 응용 프로그램에서 허용하지 않는 다른 쿼리를 수행합니다.

이러한 유형의 공격은 애플리케이션이 입력을 SQL 문으로 전달하기 전에 입력을 제대로 검증하지 않을 때 작동합니다. 삽입은 일반적으로 주소 표시 줄, 검색 필드 또는 데이터 필드에 배치됩니다.

웹 애플리케이션이 SQL 인젝션 공격에 취약한 지 감지하는 가장 쉬운 방법은 문자열에 " '"문자를 사용하여 오류가 발생하는지 확인하는 것입니다.

예 1

몇 가지 예를 사용하여이 개념을 이해해 보겠습니다. 다음 스크린 샷에 표시된대로 이름 필드에 " '"문자를 사용했습니다.

이제 Login단추. 다음 응답을 생성해야합니다.

이는“이름”필드가 SQL 주입에 취약하다는 것을 의미합니다.

예 2

이 URL이 있습니다. http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php

그리고 "page"변수를 테스트하고 싶지만 문자열 URL에 " '"문자를 어떻게 삽입했는지 관찰합니다.

Enter를 누르면 오류가있는 다음과 같은 결과가 생성됩니다.

SQLMAP

SQLMAP는 SQL 주입을 감지하는 데 사용할 수있는 최고의 도구 중 하나입니다. 다음에서 다운로드 할 수 있습니다.http://sqlmap.org/

Kali 배포판에 미리 컴파일되어 제공됩니다. -응용 프로그램 → 데이터베이스 평가 → Sqlmap에서 찾을 수 있습니다.

SQLMAP을 연 후 SQL 삽입이있는 페이지로 이동하여 헤더 요청을받습니다. 헤더에서 SQL에서 다음 명령을 실행합니다.

./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0) 
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3

SQLMAP는 모든 변수를 테스트하고 결과는 다음 스크린 샷과 같이 매개 변수 "id"가 취약하다는 것을 보여줍니다.

SQLNinja

SQLNinja는 Kali 배포판에서 사용할 수있는 또 다른 SQL 주입 도구입니다.

JSQL 주입

JSQL Injection은 Java에 있으며 자동화 된 SQL 삽입을 수행합니다.

빠른 팁

SQL 인젝션 공격으로부터 웹 애플리케이션을 방지하려면 다음 사항에 유의해야합니다.

  • 체크되지 않은 데이터베이스에 대한 사용자 입력은 애플리케이션 GUI를 통과 할 수 없습니다.

  • 응용 프로그램에 전달되는 모든 변수는 삭제되고 유효성을 검사해야합니다.

  • 데이터베이스로 전달되는 사용자 입력은 인용되어야합니다.