Foros del Web » Programando para Internet » ASP Clásico »

Blind SQL injection

Estas en el tema de Blind SQL injection en el foro de ASP Clásico en Foros del Web. Hola, esta funcion hace una llamada a otra página para obtener un valor y cargar datos en un combobox pero resulta que es vulnerable a ...
  #1 (permalink)  
Antiguo 28/08/2007, 07:23
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 18 años, 10 meses
Puntos: 0
Blind SQL injection

Hola, esta funcion hace una llamada a otra página para obtener un valor y cargar datos en un combobox pero resulta que es vulnerable a blind sql injections soy poco nobato en asp y ajax y no entiendo mucho hay alguna forma de asegurar al codigo o hacerlo de otra forma??

************************************************** ************************
function cargaComunas() {
var valor= document.getElementById("cmb_region").options[document.getElementById("cmb_region").selectedInde x].value;

if(valor==0) {

combo=document.getElementById("cmb_comuna");
combo.length=0;
var nuevaOpcion=document.createElement("option");
nuevaOpcion.value=0;
nuevaOpcion.innerHTML="Selecciona region...";
combo.appendChild(nuevaOpcion);
combo.disabled=true;

} else {
ajax=nuevoAjax();
ajax.open("GET", "cargar_comunas.asp?codRegion="+valor, true);
ajax.onreadystatechange=function() {

if (ajax.readyState==1) {

combo=document.getElementById("cmb_comuna");
combo.length=0;
var nuevaOpcion=document.createElement("option");
nuevaOpcion.value=0;
nuevaOpcion.innerHTML="Cargando...";
combo.appendChild(nuevaOpcion);
combo.disabled=true;
}


if (ajax.readyState==4){
document.getElementById("comunas").innerHTML=unesc ape(ajax.responseText);
}
}

ajax.send(null);
}
}
  #2 (permalink)  
Antiguo 28/08/2007, 10:38
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: Blind SQL injection

Pues... habría que ver el código de cargar_comunas.asp para poder responderte.
__________________
...___...
  #3 (permalink)  
Antiguo 28/08/2007, 12:05
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Blind SQL injection

Este es cargar_comunas.asp

************************************************** ***************

<!--#include file="../include/funciones.asp"-->
<!--#include file="../include/configuracion.asp"-->
<!--#include file="../include/conn.asp" -->


<%

Function filtra(String)
on Error resume next
String = Replace(String, CHR(13), "")
String = Replace(String, CHR(10), "")
String = Replace(String, "|", "")
String = Replace(String, "=", "")
String = Replace(String, "&", "")
String = Replace(String, ";", "")
String = Replace(String, "$", "")
String = Replace(String, "%", "")
String = Replace(String, "@", "")
String = Replace(String, "'", "")
String = Replace(String, "<", "")
String = Replace(String, ">", "")
String = Replace(String, "(", "")
String = Replace(String, ")", "")
String = Replace(String, "\", "")
String = Replace(String, ",", "")
String = Replace(String, """", "")
String = Replace(String, "\""", "")
String = Replace(String, "\'", "")
String = Replace(String, "+", "")
filtra = String
End Function

codRegion = filtra(CleanUserData(Request.QueryString("codRegio n")))


If not IsNumeric(codRegion) Then
codRegion=0
End if

strSql = "SELECT * FROM "&tabla&"_comunas "_
&"WHERE codRegion ="&codRegion _
&"ORDER BY comuna ASC "


Set rs = Server.CreateObject( "ADODB.Recordset" )
On Error Resume Next
rs.Open strSql, MM_conn_STRING, 1, 2

If Err.Number Then
despliegaError Err.Number, Err.Description
End If

%>


<SELECT class=texto id="cmb_comuna" name="cmb_comuna" style="font-family: Arial; font-size: 11; background-color: rgb(224,231,235); border: medium" >
<option value="0" selected>SELECCIONE</option>

<% Do While Not rs.EOF %>
<option value="<%=rs("codComuna") %>"><%=Escape(rs("comuna")) %></option>

<%
rs.movenext
Loop
if rs.status=1 then rs.close
set rs=nothing
%>


</SELECT>
  #4 (permalink)  
Antiguo 28/08/2007, 12:14
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Blind SQL injection

Creo que es una vulnerabilidad por las variables cmb_comuna y cmb_region por lo menos eso dice el scan :(
  #5 (permalink)  
Antiguo 28/08/2007, 12:53
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Blind SQL injection

Código:
strSql = "SELECT * FROM "&tabla&"_comunas "_
&"WHERE codRegion ="&codRegion _
&"ORDER BY comuna ASC "
Siempre que hagas una selección de ese tipo, la consulta es vulnerable, habría que ver más bien como se forma tabla y codRegion, hacerles unos replace antes de formar la consulta, busca en la librería de funciones una que adaptaron para eliminar caracteres usados en la inyección de SQL. En otras ocasiones te diría que parametrizaras tu consulta, pero como en realidad es bastante dinámica tu consulta, no se podría hacer de la manera cotidiana. Además de hacer los replace, tendrás también que revisar los permisos de tu usuario sobre de Internet sobre la base de datos, y como manejas las excepciones en tu script, es decir, no querrás regresar el error explicítamente pues eso supone otra puerta abierta, son muchas cosas a considerar.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 29/08/2007, 07:31
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 18 años, 4 meses
Puntos: 8
Re: Blind SQL injection

Protección contra las técnicas de Blind SQL Injection (I de IV)

Protección contra las técnicas de Blind SQL Injection (II de IV)


Protección contra las técnicas de Blind SQL Injection (III de IV)

Protección contra las técnicas de Blind SQL Injection (IV de IV)

espero te sirva
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #7 (permalink)  
Antiguo 29/08/2007, 07:37
 
Fecha de Ingreso: agosto-2007
Ubicación: Montevideo
Mensajes: 40
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Blind SQL injection

Yo le filtraria cada entrada de request.form/querystring por medio de Regular Expressions (Regexp)
  #8 (permalink)  
Antiguo 29/08/2007, 08:07
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Blind SQL injection

Qué buen aporte, yo había visto muchos contenidos acerca del tema solo en inglés, lectura obligada.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 29/08/2007, 10:21
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Blind SQL injection

Creo que el problema esta aca:


ajax.open("GET", "cargar_comunas.asp?codRegion="+valor, true);
  #10 (permalink)  
Antiguo 30/08/2007, 09:58
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 18 años, 4 meses
Puntos: 8
Re: Blind SQL injection

Cita:
Iniciado por vehiuel Ver Mensaje
Creo que el problema esta aca:


ajax.open("GET", "cargar_comunas.asp?codRegion="+valor, true);
podrias decir el porque??
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:31.