SQL injection 기반의 악성코드를 막는 법에 대해서는 이미 http://swbae.egloos.com/1754343 와 댓글에서 말씀드린 바 있습니다. 해당 글을 참고해 근본적인 대처 방안을 수립하시는게 바람직합니다.
ASP.NET 환경에서는 서버 설정이나 간단한 코드를 통해서 악성 Request 를 막기 쉽게 되어 있지만, ASP 환경에서는 LogParser 를 이용해 해커의 Request 를 분석한 후, 공격당하는 페이지에 validation 기능을 추가해주어야 하는 어려움이 있습니다.
사실 하루, 이틀 정도면 할 수 있는 일지만, 개발자가 없는 회사에서는 쉬운 일이 아니기 때문에, 간단한 편법을 올려드립니다.
SQL injection 공격을 하는 IP 를 Block 하는 ASP 예제 코드입니다.
<%
'''''''''''''''''''''''''''''''
' Block the IP addresses that do the SQL injection
'''''''''''''''''''''''''''''''
Dim UserIP
Dim BlockedIParray(12)
'assign our blocked IP addresses to our array
BlockedIParray(0) = "61.190.32.226"
BlockedIParray(1) = "121.63.32.14"
BlockedIParray(2) = "221.130.201.37"
BlockedIParray(3) = "60.217.74.25"
BlockedIParray(4) = "121.52.209.6"
BlockedIParray(5) = "208.77.46.11"
BlockedIParray(6) = "59.46.225.62"
BlockedIParray(7) = "218.75.249.71"
BlockedIParray(8) = "195.8.182.79"
BlockedIParray(9) = "222.168.227.54"
BlockedIParray(10) = "218.75.100.174"
BlockedIParray(11) = "59.40.10.199"
'retrieve the visitors IP address
UserIP = Request.ServerVariables("REMOTE_ADDR")
'loop through the Blocked IPs
For i = 0 to UBound(BlockedIParray)
If UserIP = BlockedIParray(i) Then
' redirect to predifined error page
' Response.Redirect "noaccess.asp"
' show 403 forbidden page
Response.Status = "403 Access Forbidden"
Response.Write Response.Status
Response.End
End If
Next
%>
위의 예제 코드는 Blocked IP 리스트에 들어있는 IP 가 요청을 보내면 '403 Frobidden' 에러를 보여주거나, 미리 지정된 noaccess.asp 라는 페이지로 리다이렉션 시키는 예제 코드입니다. Block 할 IP 리스트는 '손님'이라는 아이디 사용자께서 익명으로 올려주신 것을 사용하였습니다. 감사드립니다.
# 주의 사항 : 실환경에서 테스트한 코드가 아니므로, 반드시 사전에 테스트를 거친 후 사용하세요. 위의 코드의 사용으로 인한 피해에 대해 책임을 질 수 없습니다.
위의 코드를 Global.asa 에 삽입하거나, 매 페이지마다 include 하면 어느 정도 막을 수 있습니다.
저는 컨설팅할 때 편법을 알려드리는 것을 싫어합니다.
편법은
1. 매우 손쉽게 우회 가능하다.
2. 문제의 근본 원인을 제거하지 못하면서, 증상은 가리기 때문에 상황을 더욱 악화시킨다.
라는 심각한 부작용이 있기 때문입니다.
예를 들어 병에 비유해보자면, 당뇨병 치료에 있어서 합병증은 심각한 문제입니다.
숙련된 의사라면 일단 시급한 합병증을 치료하려 하겠지만, 근본 원인인 당뇨병 치료를 위한 노력을 게을리하지 않을 겁니다.
돌팔이 의사는 합병증만 치료하겠죠. 그러면 환자는 계속되는 합병증 발병으로 인해 상태가 악화됩니다. 병원이야 돈을 벌겠죠.
이와 마찬가지로 위에서 알려드린 편법도 몇 가지 문제가 있습니다.
1. 이미 공격이 발생한 다음에 IP 주소를 파악하여 Block 하는 방법이기 때문에, 공격자가 IP 주소를 바꾸면 또 당하게 된다.
2. IP 주소 리스트가 너무 길어지면 사이트 전체의 속도가 저하된다.
3. IP 주소 리스트를 계속 관리해줘야 한다.
4. 이번 대랑 삽입 공격은 막을 수 있을지 몰라도, 다음에 해커가 수작업으로 공격하거나 하면 또 당하게 된다.
위의 예제 코드는 SQL injection 취약점을 제거하는 것이 아니기 때문에, 여러분 사이트를 보호하는데 한계가 있습니다만, 당장 발등의 불이 급한 분들께는 조금이나마 도움이 되지 않을까 합니다.
일단 급한 불을 끄고나서 한숨돌리시면 꼭 근본 원인을 제거하시길 바랍니다.
이글루스 가든 - professional secur...
ASP.NET 환경에서는 서버 설정이나 간단한 코드를 통해서 악성 Request 를 막기 쉽게 되어 있지만, ASP 환경에서는 LogParser 를 이용해 해커의 Request 를 분석한 후, 공격당하는 페이지에 validation 기능을 추가해주어야 하는 어려움이 있습니다.
사실 하루, 이틀 정도면 할 수 있는 일지만, 개발자가 없는 회사에서는 쉬운 일이 아니기 때문에, 간단한 편법을 올려드립니다.
SQL injection 공격을 하는 IP 를 Block 하는 ASP 예제 코드입니다.
<%
'''''''''''''''''''''''''''''''
' Block the IP addresses that do the SQL injection
'''''''''''''''''''''''''''''''
Dim UserIP
Dim BlockedIParray(12)
'assign our blocked IP addresses to our array
BlockedIParray(0) = "61.190.32.226"
BlockedIParray(1) = "121.63.32.14"
BlockedIParray(2) = "221.130.201.37"
BlockedIParray(3) = "60.217.74.25"
BlockedIParray(4) = "121.52.209.6"
BlockedIParray(5) = "208.77.46.11"
BlockedIParray(6) = "59.46.225.62"
BlockedIParray(7) = "218.75.249.71"
BlockedIParray(8) = "195.8.182.79"
BlockedIParray(9) = "222.168.227.54"
BlockedIParray(10) = "218.75.100.174"
BlockedIParray(11) = "59.40.10.199"
'retrieve the visitors IP address
UserIP = Request.ServerVariables("REMOTE_ADDR")
'loop through the Blocked IPs
For i = 0 to UBound(BlockedIParray)
If UserIP = BlockedIParray(i) Then
' redirect to predifined error page
' Response.Redirect "noaccess.asp"
' show 403 forbidden page
Response.Status = "403 Access Forbidden"
Response.Write Response.Status
Response.End
End If
Next
%>
위의 예제 코드는 Blocked IP 리스트에 들어있는 IP 가 요청을 보내면 '403 Frobidden' 에러를 보여주거나, 미리 지정된 noaccess.asp 라는 페이지로 리다이렉션 시키는 예제 코드입니다. Block 할 IP 리스트는 '손님'이라는 아이디 사용자께서 익명으로 올려주신 것을 사용하였습니다. 감사드립니다.
# 주의 사항 : 실환경에서 테스트한 코드가 아니므로, 반드시 사전에 테스트를 거친 후 사용하세요. 위의 코드의 사용으로 인한 피해에 대해 책임을 질 수 없습니다.
위의 코드를 Global.asa 에 삽입하거나, 매 페이지마다 include 하면 어느 정도 막을 수 있습니다.
저는 컨설팅할 때 편법을 알려드리는 것을 싫어합니다.
편법은
1. 매우 손쉽게 우회 가능하다.
2. 문제의 근본 원인을 제거하지 못하면서, 증상은 가리기 때문에 상황을 더욱 악화시킨다.
라는 심각한 부작용이 있기 때문입니다.
예를 들어 병에 비유해보자면, 당뇨병 치료에 있어서 합병증은 심각한 문제입니다.
숙련된 의사라면 일단 시급한 합병증을 치료하려 하겠지만, 근본 원인인 당뇨병 치료를 위한 노력을 게을리하지 않을 겁니다.
돌팔이 의사는 합병증만 치료하겠죠. 그러면 환자는 계속되는 합병증 발병으로 인해 상태가 악화됩니다. 병원이야 돈을 벌겠죠.
이와 마찬가지로 위에서 알려드린 편법도 몇 가지 문제가 있습니다.
1. 이미 공격이 발생한 다음에 IP 주소를 파악하여 Block 하는 방법이기 때문에, 공격자가 IP 주소를 바꾸면 또 당하게 된다.
2. IP 주소 리스트가 너무 길어지면 사이트 전체의 속도가 저하된다.
3. IP 주소 리스트를 계속 관리해줘야 한다.
4. 이번 대랑 삽입 공격은 막을 수 있을지 몰라도, 다음에 해커가 수작업으로 공격하거나 하면 또 당하게 된다.
위의 예제 코드는 SQL injection 취약점을 제거하는 것이 아니기 때문에, 여러분 사이트를 보호하는데 한계가 있습니다만, 당장 발등의 불이 급한 분들께는 조금이나마 도움이 되지 않을까 합니다.
일단 급한 불을 끄고나서 한숨돌리시면 꼭 근본 원인을 제거하시길 바랍니다.
이글루스 가든 - professional secur...



덧글