정보보안(구버전)/DVWA 2019. 3. 10. 11:59

DVWA - 04. SQL Injection 공격 패턴 분석 및 스노트 룰 설정

 

 

본 내용은 DVWA를 이용한 OWASP Top10 취약점 진단 및 웹-해킹 내용이 아니라, Snort를 이용한 DVWA 취약점 및 공격 패턴을 진단하는 실습 환경입니다.

 

 

1. Injection

 

 - OWASP Top10 A1 - 악의적인 명령 삽입
 - 서버로 전송되는 요청 정보에 악의적인 명령을 삽입하여 불필요한 동작을 실시하거나, 서버/시스템/DB 중요 정보를

   획득할 수 있는 취약점이다.
 - Ex) HTML 인젝션, SQL 인젝션, PHP 인젝션, XML 인젝션

 

 

 

2. SQL

 

 - SQL : structured query language

 - 데이터베이스에 접근할 수 있는 데이터베이스 언어

 - 종류 : mysql, mssql, oracle...


 

 

3. SQL Injection

 

  - DB 접근 입력값을 검증하지 않을 경우, 악의적인 SQL 쿼리문을 인젝션하여 DB 정보 탈취 및 인증 우회 하는 내용이다.


 

 

4. SQL Injection 공격 패턴 분석

 

4-0. SQL Injection.log

4-1. SQL Injection 공격 패턴.txt

 

 

 

5. Snort 룰 설정

 

4-2. SQL Injection 스노트 설정.txt

 

root@kim-virtual-machine:~# cd /etc/nsm/rules
root@kim-virtual-machine:/etc/nsm/rules#
root@kim-virtual-machine:/etc/nsm/rules# vi local.rules

# 4. SQL Injection
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"4. SQL Injection UNION SELECT"; flow:established,to_server; content:"UNION"; nocase; http_uri; content:"SELECT"; nocase; http_uri; pcre:"/UNION.

+SELECT/Ui"; sid:3000041; rev:1;)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"4. SQL Injection USER in URI"; flow:established,to_server; content:"SELECT"; nocase; http_uri; content:"USER"; nocase; http_uri; pcre:"/SELECT[^a-z].+USER/Ui"; sid:3000042; rev:1;)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"4. SQL Injection SLEEP"; flow:established,to_server; content:"SELECT"; nocase; http_uri; content:"SLEEP|28|"; nocase; http_uri; pcre:"/\bSELECT.*?

\bSLEEP\x28/Ui"; sid:3000043; rev:1;)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"4. SQL Injection INFOMATION SCHEMA"; flow:established,to_server; content:"information_schema"; nocase; http_uri; sid:3000044; rev:1;)
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"4. SQL Injection SELECT FROM"; flow:established,to_server; content:"SELECT"; nocase; http_uri; content:"FROM"; nocase; http_uri; pcre:"/SELECT

\b.*FROM/Ui"; sid:3000045; rev:1;)

 

:wq! 

 

 

인코딩 내용

 문자열 

 ASCII 16진수

 (

 28

 

 

pcre 내용

pcre 

내용 

 UNION.+SELECT

  UNION 한번 이상 모든 문자열 반복 SELECT

 

 

pcre 내용

 pcre

내용 

 SELECT[^a-z].+USER 

 SELECT 다음에 a~z를 제외한 나머지 문자열, 한번 이상 모든 문자열 반복 USER

 [^a-z]

 a~z 제외하고 나머지 전체

 .+

 한번 이상 모든 문자열 반복

 

 

pcre 내용

 pcre

 내용

 \bSELECT.*?\bSLEEP\x28

SELECT SLEEP(

SELECT     SLEEP(

 SELECTaaa SLEEP(    

SELECT aaa SLEEP(

 SELECT   aaa   SLEEP(

 \b

 문자의 경계 공백

 .*?

 게으른 수량자

 \x28

 (

 

 

pcre 내용

 pcre

 내용

 SELECT\b.*FROM

SELECT FROM

SELECT     FROM

SELECT aaaFROM

SELECT aaa FROM

SELECT aaa aaaFROM 

 \b

 문자의 경계 공백

 .* 

 ANY

 

 

root@kim-virtual-machine:/etc/nsm/rules# rule-update

 

 

'rule-update' 에러가 발생하면, 'local.rules' 파일을 수정한 이후 실시함

root@kim-virtual-machine:/etc/nsm/rules# nsm --sensor --restart --only-snort-alert 


 

 

6. DVWA 'SQL Injection' 취약점 진단 실시

 

 

vulnerabilities 우클릭 -> 공격 -> 'Active Scan' 클릭

 

 

 

Policy 선택 -> 'Start Scan' 버튼 클릭

 

 

 

7. Snort 탐지 결과 확인 및 분석

 

 

Snort -> 'Show Packet Data' & 'Show Rule'를 체크하여 스노트 탐지 분석 실시

 

 

 

 

8. Snort 룰 삭제 또는 주석 처리 실시

 

 

[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)

 

DVWA - 04. SQL Injection 공격 패턴 분석 및 스노트 룰 설정   https://youtu.be/s6PAzBq1Z8A

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q