IT

정보보안 IPS 차단 - SQL Injection

귀차니즘 극복 2020. 6. 11. 16:34
728x90
반응형

얼마전에 정보보안 팀으로 부터 아래와 같은 메세지를 받았습니다.

 

소스 아이피는 러시아 시키들에서 들어왔고 DMZ에 있는 웹서버로 SQL 인젝션에 대한 시도가 있었습니다.

 

IPS는 아래와 같이 탐지해서 차단을 했습니다.

※ IPS(Intrusion Prevention System) 침입방지시스템

   : 네트워크에서 공격 서명을 찾아내여 자동으로 조치를 취함으로 비정상적인 트래픽을 중단시키는 보안 솔루션

 

크게 String Function 과 UNION 두가지 이벤트가 있었고, String Function은 허용되고, UNION은 차단이 된거 같습니다.

(로그를 보니 동시 수행되는거 같은데..UNION은 차단되어 웹서버 로그에 안나오는 것일 수 있고..)

 

정보보안솔루션 업체에 확인해 보면 String Function을 차단할 경우 시스템 상 문제가 될 수 있어 권고하지 않는다고 합니다.

 

그래서 웹서버에는 어떻게 들어왔는지 로그를 찾아 봅니다.

 

침입IP - - [10/Jun/2020:02:26:24 +0900] "GET /aa/0000000?totalPage=00&searchText=%EC%9B%90%ED%94%BC%EC%8A%A4&selectOption=&nowPage=11111111111111%20UNION%20SELECT%20CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45),CHAR(45,120,50,50,45,81,45),CHAR(45,120,50,51,45,81,45),CHAR(45,120,50,52,45,81,45),CHAR(45,120,50,53,45,81,45),CHAR(45,120,50,54,45,81,45),CHAR(45,120,50,55,45,81,45),CHAR(45,120,50,56,45,81,45),CHAR(45,120,50,57,45,81,45),CHAR(45,120,51,48,45,81,45),CHAR(45,120,51,49,45,81,45),CHAR(45,120,51,50,45,81,45),CHAR(45,120,51,51,45,81,45),CHAR(45,120,51,52,45,81,45),CHAR(45,120,51,53,45,81,45),CHAR(45,120,51,54,45,81,45),CHAR(45,120,51,55,45,81,45),CHAR(45,120,51,56,45,81,45),CHAR(45,120,51,57,45,81,45),CHAR(45,120,52,48,45,81,45),CHAR(45,120,52,49,45,81,45),CHAR(45,120,52,50,45,81,45),CHAR(45,120,52,51,45,81,45),CHAR(45,120,52,52,45,81,45),CHAR(45,120,52,53,45,81,45),CHAR(45,120,52,54,45,81,45),CHAR(45,120,52,55,45,81,45),CHAR(45,120,52,56,45,81,45),CHAR(45,120,52,57,45," 408 162

 

위에서 딱 봐도 nowPage뒤에 %20UNION%20SELECT%20CHAR(어쩌고 저쩌고)... 이렇게 들어왔습니다.

 

"%20"은 스페이스문자이며 이를 깔끔하게 정리하면!!

 

"UNION SELECT CHAR(45,120,49,45,81,45)...." 형식으로 붙여서 들어왔습니다.

 

 ASCII코드로 맵핑을 해보면, "-x1-Q-"가 되는군요.

 

그런데 이게 뭥미??

 

SQL INJECTION인건 알겠는데, 저 뒤에 붙은 내역이 무엇을 의미하는지 잘 이해가 안가서 구글링을 해봤습니다.

 

"This is just a test for injection. If an attacker can see xQs in the output then they'll know injection is possible.

  There is no "risk" from this particular query.

  A developer should pay no attention to whatever injection mechanisms, formats or meanings - these are none of his business."

 

해석해 보면,

 

"이건 인젝션 테스트를 한거다. 만약 공격자가 xQ같은 문자를 ouput으로 볼 수 있으면 injection이 가능하다는 것을 알 수 있다

  이 쿼리만으로는 리스크가 없다"

  그 뒤에건 필요 없는 문장인거 같고..

 

웹서버에 위와 같이 SQL 인젝션 문구를 넣어 request를 하고,

 

CHAR()에 해당하는 문자들이 나오면 SQL 인젝션 공격이 가능한 상태로 추가적인 SQL 인젝션 공격으로 이어질 수 있다는 것 같습니다.

 

 

위와 같은 검색을 해보니 구글링이 잘 되지 않아 내역을 자체적으로 작성해 봤습니다.

 

잘못된 부분이 있으면 댓글 주세요.

728x90
반응형