sql injection 탐지

공격기법 및 탐지|2021. 1. 11. 10:31

 

 

beebox 1.6버전을 다운받고 vmware에 띄우고

 

 

 

 

bee-box 서버에 스노트를 설치합니다.

 

 

칼리리눅스가 이제 공격자가되는것입니다.

 

 

 

su

관리자 권한신행

bug

apt-get update

 

 

 

 

이곳의 공격을 할 탐지룰을 하나 만듭니다

 

 

 

 

 

칼리에서

 

 

vi snot-2.9.17/local.rules

 

alert tcp any any -> 192.168.1.24 80 (msg:"sql injection"; sid:0001;)

                             (beebox ip)

 

 

snort -q -A console -c /root/snort-2.9.17/local.rules

 

 

 

공격을시도한다

 

 

 

 

 

 

=========================================

 

 

vi snot-2.9.17/local.rules

 

alert tcp any any -> 192.168.1.24 80 (msg:"union sql injection"; content:"union+select"; nocase; sid:0001;)

 

snort -q -A console -c /root/snort-2.9.17/local.rules

 

 

 

 

 

union 공격을 탐지해보자

 

 

 

' union select 1,2,user(),4,5,6,7#

 

 

 

 

 

 

1. content:"union+select"; nocase; 룰을 우회하여 union sql injection 공격을 수행하시오

 

alert tcp any any -> 192.168.1.24 80 (msg:"union sql injection"; content:"union+select"; nocase; sid:0001;)

 

 

공격은

' union all select 1,2,user(),4,5,6,7#

 

all을 추가하여 한다.

 

 

2. 'or '1'='1'# 패턴을 차단할 수 있는 룰을 작성하시오

 

' or '1'='1'# 이것을 url 인코딩하여 

 

content:"     url인코딩한것         "

 

 

content:"%27+or+%271%27%3D%271%27%23"

 

특수문자만 바꿔주고 띄어쓰기는 바꿔주지않습니다.

 

 

 

 

 

또 

' or '2333'='2333'#이것을 탐지할려고하면

 

정규 표현식을 이용합니다.

 

' OR '[a-zA-Z]'='[a-zA-Z0-9]'#

 

or '문자와 순자'='문자와 숫자'#

 

문자와 숫자의 집합을 지정을 하는 것 입니다.

 

 

 

 

pcre:"\[a-zA-Z0-9]\" 로 시작한다.

 

 

 

 

모든 문자를 탐지하는 정규표현식.

alert tcp any any -> 192.168.1.24 80 (msg:"sql injection"; pcre:"\[a-zA-Z0-9]\"; sid:0001;)

 

 

 

 

=================================

 

정규표현식.

 

 

//                      는 패턴의 시작과 끝

 

i                         는 대소문자 구분 x

^[0-9a-zA-z]           ^는 시작을 뜻하며, 숫자또는 문자로 시작

[-_.]?                      -_. 이 있을수도 있고 없을수도 있다

 

([-_.]?[0-9a-zA-Z])*     는  최소 0번이상 존재

 

[a-zA-Z]{2,3}  알파벳이 최소2자리, 최대 3자리

 

 

 

^ 문자열 시작                  ^ab 는 ab로시작  또    [^ab] 는 a,b,ab를 제외한 문자열

 

$ 문자열 끝                 ab$ 는 ab로 끝나는 문자열

 

. 임의의 문자 1개           a.b$ 는  aCb 

 

| or 연산                              (a|b)c  는 ac, bc

 

?    0또는 1              abc? 는 abc, ab

 

*    0이상                   ab*c 는 ac,abc,abbc

 

+   1이상                   ab+c 는 abc,abbc

 

{}    범위                   ab{2} 는 abb, ab{2,} 는 abb ....       ab{2,4} 는 abb-abbbb

 

[]    문자집합               a[bc]d 는 abd, acd

 

\   excape(원래의미 /반대모양이다.키보드에없어서 저거씀)     0\.0\.0\.0 -> ip주소로 해석

댓글()