¿Qué tipo de inyección de seguridad son estos rastros de, SQL, javascript o de otro tipo?

3

He intentado asegurar toda la información que va al servidor para asegurarme de que no haya inyecciones de SQL.

Sin embargo, hay nuevas carpetas en mi servidor con nombres extraños. Uno de nuestros servicios en línea es tal que con ciertas entradas, los directorios se hacen con ese nombre, pero solo después de usar mysql_real_escape_string .

Estos son los tipos de nombres de carpetas ahora en mi servidor:

<script>alert(42873)<

\'\"

%27

!(()

\r\n SomeCustomInjectedHeader:injected_by_wvs

&dirdir�\'

exec

%code%

¿Qué tipo de inyección estaba tratando de hacer el hacker? ¿Son el tipo de cosa que se puede esperar de las inyecciones de SQL? ¿O inyecciones de javascript?

Este es el código que estoy usando para crear carpetas:

$path = "designs_".$design->getDesignerType()."/product".$design->getProductID()."/template".$design->getTemplateID()."/".$design->getID();
if(!is_dir($path))
    { mkdir($path, 0777, TRUE); }

En realidad, estoy usando %code% , pero no para crear carpetas. Lo estoy usando para otras cosas, como crear archivos PDF utilizando un archivo fuente binario, como este:

 exec("prince /home/zeejfl6/public_html/printshop/".$filename.".html /home/zeejfl6/public_html/printshop/".$filename.".pdf");

y haciendo imágenes, como esta:

$cmdi = "convert -density 300 -resize $io /home/zeejfl6/public_html/printshop/$filename.pdf  -quality 100 -flatten /home/zeejfl6/public_html/printshop/$filename.jpg";
exec ($cmdi);
    
pregunta user961627 29.05.2013 - 12:56
fuente

2 respuestas

3

Veamos una explicación paso a paso de lo que el pirata informático Script kiddy intentaba hacer:

  1. <script>alert(42873)< : este es un ataque XSS .
  2. \'\" : probando si su sitio web es vulnerable a inyección SQL .
  3. %27 : esto está urlencoded, por lo que al decodificarlo se obtiene ' , que es la misma intención que en (2).
  4. !(() : igual que (2).
  5. \r\n SomeCustomInjectedHeader:injected_by_wvs : no estoy seguro de lo que está pasando aquí.
  6. NULLdir&dir : �\' significa mkdir() .
  7. 777 : Tonterías a menos que lo estés utilizando.
  8. 0777 : igual que (2).

Remarks:

  • Su código sobre la creación de directorios, lo está creando dinámicamente, lo cual es fácil para usted pero puede causar varios problemas de seguridad. Lo mejor sería almacenar en la base de datos el nombre de directorio proporcionado por el cliente y una versión de hash del mismo. La versión hash, la usarás para crear directorios. Así que utilizará su base de datos para "traducir" la entrada / salida.

  • Acerca de decimal : estás usando octal mientras que creo que quisiste decir chmod() , ten en cuenta que hay una gran diferencia ya que no es exec() sino $filename . Echa un vistazo a ";rm -rf ../../../../ y esta answer acerca de una posible falla de seguridad.

  • Acerca de %code% : este es un gran agujero de seguridad si %code% no está altamente controlado y seguro. Lo que significa que si un usuario llamó a su archivo algo como %code% , eso significaría que puede despedirse de su sistema operativo, por supuesto, esto es posible solo si PHP tiene suficientes privilegios.

Advice:

Como se indica por munkeyoto este ataque se realiza con una herramienta de piratería automática. También veo que últimamente está publicando varias veces sobre intentos de piratería que está experimentando. Le sugiero que contrate a un profesional para auditar y probar su sitio web (o incluso mejorar su seguridad). Si no puede o no quiere hacerlo, aprenda más sobre seguridad y mejores prácticas. Hay un montón de tutoriales, libros y cursos disponibles. Es un poco agotador para nosotros (y para usted) que esté publicando cada vez un intento de piratería fácil por parte de algunos skiddies que se puede evitar fácilmente como mencioné anteriormente.

    
respondido por el HamZa 29.05.2013 - 14:59
fuente
5

injected_by_wvs es utilizado por Acunetix Web (w) Vulnerability (v) Scanner (s) (wvs). Este es un (s) script (s) Cross (x) Site (s) - XSS - que se está insertando en un parámetro (generalmente un formulario: nombre, fecha, hora, edad, etc.). Las inyecciones basadas en SQL contendrán una parte de una declaración SQL (SELECT * FROM, INSERT INTO *), que están visibles la mayoría de las veces pero que pueden estar ofuscadas. Eso responde a qué tipo de ataque es este.

Es posible que desee estudiar el uso de escapeshellcmd () frente a exec () para evitar que alguien intente para insertar caracteres. No estoy de acuerdo con la declaración HamZa DzCyberDeV hecha con respecto a exec (). No es que es serio si te tomas el tiempo de sanear la entrada.

    
respondido por el munkeyoto 29.05.2013 - 14:31
fuente

Lea otras preguntas en las etiquetas