Algunas notas
Un ataque de inyección SQL es cuando se inserta algo inesperado en una base de datos. Los tipos de inyecciones dependen de las vulnerabilidades del sistema.
Inyección de consultas SQL
Si la base de datos no tiene los permisos adecuados, lo que significa que el usuario web tiene control total sobre la base de datos, entonces pueden hacer cosas como reemplazar todos los registros, eliminar tablas y agregar sus propias tablas.
Un ejemplo podría ser una inyección en una edición donde el sitio espera que el usuario edite su propio registro, pero en su lugar, actualiza todo en el servidor.
\' or where 1=1;
Si tienen acceso de solo lectura a la base de datos, pueden aumentar sus privilegios y obtener más información de la que deberían. Este ejemplo estaría en un servidor que está devolviendo dos registros, el usuario luego agrega la tabla del usuario como su resultado.
\' UNION ALL SELECT username,password from USERS;
inyección de PHP
Muchas de las características de las últimas versiones de PHP se han reforzado para solucionar problemas con la ejecución del código, sin embargo, algunos desarrolladores usan cosas como exec()
para realizar acciones en el código extraído de una base de datos. Algunas versiones anteriores de PHP todavía son vulnerables a los ataques.
Los desarrolladores son la primera línea de defensa cuando se trata de escribir un sitio web. Digamos que tiene un CMS corporativo y los desarrolladores crearon una tabla editable por el usuario en el CMS para modificar algo como anuncios gráficos.
El atacante podría ingresar phpinfo();
y ver toda la base de datos sobre el servidor, o ejecutar códigos de línea de comando (según el acceso de la cuenta de usuario del sitio web en el servidor web), o agregar su propia puerta trasera al sitio ( escribir o reescribir archivos). Esto podría permitir al usuario redirigir todo el tráfico fuera del sitio por completo.
inyección de script
Si bien el PHP del sitio puede ser menos vulnerable a un ataque, un usuario todavía puede inyectar cosas como iframes que contienen códigos maliciosos, javascripts que contienen códigos maliciosos o applets de JAVA que les permiten robar cookies de usuarios. Dado que javascript puede ejecutar AJAX y enviar solicitudes a un servidor web diferente sin previo aviso, es probable que esto no se vea en la interfaz a pesar de que pueda suceder.
<script type='text/javascript'>
window.location('http://someotherwebsite.com');
</script>
Pruebas
Las ramificaciones legales de las pruebas en el buzón de otra persona son diferentes según el país en el que se encuentre y el país en el que se hospeda el servidor. Dicho esto, hay muchas versiones gratuitas de sistemas operativos como FreeBSD y varios tipos de Linux (algunos más seguros que otros) donde puede instalar un sistema operativo, un servidor web y un servidor MySQL en un servidor virtual Máquina bajo algo como Virtual Box y vaya a la ciudad sin tener que alojar su máquina de producción.
Algunas de las otras respuestas dadas por otros carteles también son excelentes en este hilo.