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;)
만약에
다른것도 탐지하고 싶다 그러면
결론=================
' or '모든 문자와 숫자'='모든 문자와 숫자'#
(sql injection 공격 ' 만 정규표현식에 탐지되도록)
url 인코딩을 하면
' => %27
%27 을 두개로나누면
% => \%
27 => [0-9]{2,2} 2자리만 올수있다
' = > \%[0-9]{2,2}
' 하나만입력을해줘도 탐지가됩니다.
칼리에서
vi snort-2.9.17/local.rules
alert tcp any any -> 192.168.1.24 80 (msg:"sql injection"; pcre:"/\%[0-9]{2,2}/"; sid:0001;)
(snort 룰)
이렇게해도 가능합니다.
snort -q -A console -c /root/snort-2.9.17/local.rules
(탐지)
=====================================
' or '1'='1'#
이걸 정규표현식으로 탐지하려면
=================================
정규표현식.
// 는 패턴의 시작과 끝
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주소로 해석
. 을 진짜 문자로 쓸떄 \ 랑같이 쓰는것입니다.
\%27\+or\+\%27[0-9a-zA-Z]{1,}\%27\%3D\%27[0-9a-zA-Z]{1,}\%27
'or'='1'='1'
' = \%27
= \+
or= or
1= [0-9a-zA-Z]{1,}
{1,} = 최소 1글자이상
= = \%3D
' or '1'='1'#, ' or '1'='1'--
\%27\+or\+\%27[0-9a-zA-Z]{1,}\%27\%3D\%27[0-9a-zA-Z]{1,}\%27(\%23|\-\-)
=========================================
<script>alert("a")</script>
< 3C >3E
%3Cscript 만 하는 이유 <script src 같은걸 못막음
nocase 는 <SCRipt 같은걸 못막기때문
alert tcp any any -> any 80 (msg:"xss"; content:"%3Cscript"; nocase; sid:0001;)
======================================
Onmouseover="alert(document.cookie)"
쿠키값을 따게만드는거 탐지
alert tcp any any -> any 80 (msg:"xss"; content:"document.cookie"; nocase; sid:0001;)
.은그대로들어감
'공격기법 및 탐지' 카테고리의 다른 글
xplico 설치 (0) | 2021.01.11 |
---|---|
sql injection 탐지 (0) | 2021.01.11 |
내부망 원격 접속시도 (0) | 2021.01.11 |
telnet 접속 탐지,bruteforce 공격 탐지(무작위대입공격), slow read dos 공격 탐지 (0) | 2021.01.08 |
snort 문법정리해서 다시해보기 (0) | 2021.01.08 |