Título: Múltiples vulnerabilidades en SqliteAdmin 1.2.0 Publicado por: WHK en 12 Julio 2009, 06:10 am Bueno, encontré multiples vulnerabilidades en Sqliteadmin las cuales son las siguientes:
Remote Execution Hay ejecución remota cuando vas a la sección de bases de datos y le haces click en cualqueir función, entonces editas una función y al guardarla ya se estará ejecutando el código automáticamente: (http://www.jccharry.com/archivos_publicos/sqliteadmin1.png) Conversado con una persona me decía que esto no es arbitrario ya que el sistema deja por defecto crear funciones, pero .... normalmente no debería ejecutarse todo código que se escriba, normalmente debería quedar encerrado en una clase publica de forma que si hay una ejecución forzada no debería ejecutarse hasta que la función realmente sea llamada o necesitada y no cargar todo en memoria como se hace actualmente dejando desprotegido el sistema, a mucho debería tener un input para dictar el nombre de la función y un filtro que verifique que todas las llaves están correctamente cerradas para evitar el escape hacia fuera de la función. Debería?... nop, no debería. PoC: Código Fijarse que en win los slash son dobles "\\" porque uno solo es escape de carácter, es como decir "^<" en batch. CSRF Citar http://censurado/sqlitemanager/main.php?dbsel=1 No hay un token de verificación ni nada que impida la ejecución arbitraria de lo que al atacante se le antoje.POST /sqlitemanager/main.php?dbsel=1 HTTP/1.1 Host: requetecensurado :p User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3, Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://censurado/sqlitemanager/main.php?dbsel=1&function=IF&action=modify Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxx Content-Type: application/x-www-form-urlencoded Content-Length: 332 FunctName=IF&FunctType=1&FunctCode=echo+%27test%27%3B%0D%0Afunction+sqliteIf%28%24compare%2C+%24good%2C+%24bad%29%7B%0D%0A++++if+%28%24compare%29+%7B%0D%0A++++++++return+%24good%3B%0D%0A++++%7D+else+%7B+%0D%0A++++++++return+%24bad%3B%0D%0A++++%7D%0D%0A%7D&FunctFinalCode=&FunctNumArgs=3&FunctAttribAll=1&function=IF&id=1&action=save Path Disclosure Puedes dar una ejecución arbitraria con error forzado y te arrojará un path disclosure: (http://www.jccharry.com/archivos_publicos/sqliteadmin2.png) La solución sería nunca mostrar error_reporting(E_ALL) en un sistema publicado. Falta de Autificación Como no hay un login de autentificación por defecto en este sistema pasa lo que pasa. Consecuencias (http://www.jccharry.com/archivos_publicos/sqliteadmin3.png) Recomendaciones Poner en un lugar mas inaccesible este sistema para que no pueda ser manipulado de forma externa y agregarle un login de seguridad como por ejemplo un auth de apache con htaccess. Saludos. Título: Re: Múltiples vulnerabilidades en SqliteAdmin 1.2.0 Publicado por: kamsky en 12 Julio 2009, 13:56 pm muy bueno, te felicito
|