Prefacio:
Antes de hacer un montón de preguntas web de auditoría que hemos encontrado el código objeto, la ejecución del comando, cobertura y otras variables. Pero si el código se distribuye en un conjunto de código fuente (como CMS), tenemos que descubrir, encontrar y aprovechar, es necesario tener una cierta mirada y el uso de las ideas, esta prueba es BlueCMS1.6
importante no es reproducir esta vulnerabilidades CMS, mientras que mirada antes en todo el proceso de auditoría, así como la idea es una especie de cómo ejercer sus capacidades de auditoría. Puesto que soy más verduras, por lo que no es el lugar equivocado complacer a mi maestra correcta.
¿Qué es la caja blanca, un cuadro negro, pruebas de caja gris
Código de auditoría a menudo se encontrará con estos tres términos, que a su vez representa lo que es el significado de eso?
- Pruebas de Caja Negro: especificaciones de diseño funcionales conocidos productos pueden ser probados cada implementación de las funciones cumple con los requisitos.
- pruebas de caja blanca: el funcionamiento interno de los productos del procedimiento conocido se puede probar si cada uno de la operación se encuentran interna las especificaciones de diseño, si todos los componentes internos comprueban.
- pruebas de caja gris es más como una mezcla de las pruebas de caja negro y pruebas de caja blanca, en esta etapa no hay una definición más clara de la prueba de caja gris, pero más a menudo, tenemos que hacer es prueba de la prueba de caja gris, es decir, no sólo lo hacen negro pruebas de caja caja blanca va a hacer.
El otro también es muy sencillo de entender, para construir un sitio web, las pruebas de caja negro en el caso no se conoce el origen del sitio, cada prueba de funcionamiento para ver si hay problemas, y las pruebas de caja blanca es conocer el código fuente, disponible en el Código para ver si el código en cuestión, las pruebas de caja gris es la combinación de los dos juntos a prueba (comprensión personal, si es incorrecto, por favor, corríjanme maestro), y por supuesto hay una serie de conceptos más profundos de conocimiento, no se describe en detalle aquí.
De caja blanca proceso de prueba --BlueCMS1.6
A medida que la auditoría del código principiante, a través BlueCMS1.6
de la práctica, el enfoque aquí a escribir algunos de caja blanca pruebas de cómo analizar
0x00: La comprensión de la estructura de directorios
Para ver tantos, cómo empezar, la idea es cómo hacerlo? Ir directamente a las vulnerabilidades SQL, RCE y otra estima un poco difícil, porque hay demasiados documentos, he leído mucho del cocinero que son los primeros en mirar a toda la estructura de directorios, el directorio está en qué papel, incluyendo lo que se han encontrado contenidos archivos del núcleo, a continuación, empezar, va a limitar el alcance de la auditoría y ahorrará mucho tiempo.
├── admin 后台管理目录
├── install 网站的安装目录
├── api 接口文件目录
├── data 系统处理数据相关目录
├── include 用来包含的全局文件
└── template 模板
Ver también en cuenta las siguientes funciones:
-
archivo de conjunto de funciones, por lo general nombrado incluido
functions
ocommon
palabras clave como, estos documentos existen algunas funciones públicas, proporcionando llamada unificada a otros archivos, por lo que la mayoría de los archivos se incluyen a ellos en la cabecera del archivo, busque estos archivos en un muy fácil de usar el truco es abrir el archivo index.php o alguna funcionalidad en general se puede encontrar en la cabeza. -
archivo de configuración, por lo general llamado config que incluye la palabra clave, el archivo de configuración incluye información de configuración para el programa Web debe ejecutar un funcional opciones de configuración y la base de datos, lo que puede aprender de este documento una pequeña parte de la aplicación, otro vistazo a este archivo cuando se observe valores de los parámetros del perfil se envuelven entre comillas simples o dobles comillas, comillas dobles si lo es, entonces puede haber una gran cantidad de vulnerabilidad de ejecución de código.
Por supuesto, no es lo mismo CMS, tienen diferente estructura de directorios, pero la mayoría de los nombres y la carpeta de la función correspondiente no habrá cambiado mucho, que quiere en el desarrollo de un montón de caos del nombre de archivo, cuando su propia prueba tener un dolor de cabeza.
0x01: obtener información de Inicio
Comprender el directorio de archivos, a continuación, iniciar con el archivo index.php para empezar, index.php por lo general la entrada de todo el programa, se puede conocer el marco de procedimiento a través de archivos de índice, los procesos en ejecución, incluidos los archivos de configuración, que contienen y filtrar archivos que contienen el filtrado de seguridad archivo, entender el programa de lógica de negocio, es necesario partir de la página principal de.
Pero index.php tantas líneas, hay que fijarse en que no demasiado cansado, pero no sirve, porque la entrada del usuario index.php menudo no es necesario, a continuación, vamos a ver la introducción de este documento que los archivos, capa por capa progresiva.
La introducción de estos dos documentos, hay que prestar atención a la mencionada anteriormente también contienen common
palabras clave del archivo, abierto common.inc.php
mirada
en más de 30 líneas encontrado addslashes () función para la serie mundial POST, GET, galletas, solicitud se ha escapado por lo que si inyectamos SQL archivo que contiene los archivos necesarios para prestar atención a las comillas simples, comillas dobles, etc. será escapado.
Observaron prohibiría IP, se puede entender este documento fue escrito algún tipo de protección en general, otros documentos de referencia se puede utilizar
el archivo contiene varios archivos, si el encuentro no puede leer función de la espalda, la función puede ser seguido por su nombre éstas búsqueda de archivos, por lo que primero mirar estructura en bruto.
Por supuesto, no todos escriben aquí, sólo una lista un poco, pero al menos este nivel de relación, o la cantidad de puntos que reciben. incluyen archivos en el directorio son comunes, es hacer que el archivo referenciado a reducir código no deseado, mejorando así la eficiencia, a continuación, escribir otra página es equivalente a escribir solo, cuando se necesita hacer referencia a estos documentos, sólo la introducción a, siempre y cuando conocer estos archivos común, hay no comprenden la función de vista trazabilidad para comprender el uso de estas funciones cuando ve otros archivos, con el fin de continuar con la auditoría.
la vulnerabilidad de minas: 0x02
Pistas de las variables de entrada
Cuando ves un montón de código que tienen ese tipo de sentirse abrumado, puede que desee imaginar dónde colocar el sitio en general son lagunas en? Como la inyección SQL, XSS, RCE, etc. encontrarán una cosa en común, es decir, los usuarios pueden entrar , entrar en un lugar de la vulnerabilidad puede existir, por lo que se dirige, el rango del código, ir a buscar a los de la primera usuario puede controlar la entrada de código.
A partir del directorio raíz, de acuerdo con el orden, mira laad_js.php
$ad_id = !empty($_GET['ad_id']) ? trim($_GET['ad_id']) : '';
Encontró que ad_id
este parámetro es controlable, y luego mirar hacia abajo para encontrar la instrucción SQL
$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
ad_js.php
Contiene el common.inc.php
archivo, por lo que entramos se escaparon las comillas simples y dobles, pero aquí en la instrucción SQL $ad_id
no es una simple o doble envoltura, lo que no hay necesidad de prestar atención al filtro, es evidente que aquí hay una vulnerabilidad de inyección SQL, adquirir un pequeño libro sobre el registro, este archivo contiene una vulnerabilidad de inyección SQL.
Llegó de nuevo ann.php
, más de 90 líneas, pero sólo fuimos a la entrada del usuario local de lata
$ann_id = !empty($_REQUEST['ann_id']) ? intval($_REQUEST['ann_id']) : '';
$cid = !empty($_REQUEST['cid']) ? intval($_REQUEST['cid']) : 1;
Pero después de la función intval () después del tratamiento, no pueden llevar a cabo la inyección de SQL, y es reemplazado un archivo
Ver news_cat.php
archivos, comillas simples o dobles, pero no encuentra las variables ya que la función intval () no puede llevar a cabo la inyección de SQL
Volver a comprobar el archivo user.php también puede existir comprobación de vulnerabilidad de inyección SQL
También hay un único o doble comillas y sin filtro, debe ser capaz de mirar es cómo el parámetro $ id pasando
porque el intval procesamiento () por lo que esta función la inyección de SQL no puede utilizar el
El uso de herramientas para encontrar vulnerabilidades
código PHP de auditoría herramientas de uso común Seay源代码审计系统
, rips
y otras herramientas a veces encontrar algún lugar donde nos perdimos, así que a veces utilizar herramientas manuales y un uso más eficiente de las Seay源代码审计系统
herramientas que se encuentran tantas lagunas, pero sólo podría existir nota, y algunos no necesariamente ser utilizado.
O para encontrar al usuario introducir, después de todo, existe la vulnerabilidad general en la entrada local, esta herramienta cuando se necesita funciones de trazabilidad, búsqueda global para encontrar justo
Encontrar una función de riesgo
ejecución de comandos | sistema, shell_exec, tránsito, popen, proc_open |
---|---|
archivo contiene | requerir, incluyen, require_once, include_once |
la cobertura variable | parse_str, mb_parse_str |
la ejecución de código | eval, afirman, preg_replace |
Operaciones con archivos | file_get_contents, file_put_contents, move_uploaded_file, de desenlace y de eliminación |
Estas son algunas de las diversas lagunas en la función de riesgo correspondiente, encontramos vulnerabilidad no que ICE, SQL, archivo incluido y así sucesivamente, entonces encontramos directamente estas funciones para ver si estas funciones se pueden utilizar, no puede determinar si hay un lagunas correspondientes, tales como consultas acerca de la función de desvinculación
para ver un $ _POST, a la vista de lo contenido
Hay una variable que puede ser utilizado $_POST['lit_pic']
para rastrear lo que la variable se
encuentra, además de estos cuatro archivos contienen esta variable, el otro archivo de datos variables no contiene, además del principio del archivo que contiene el exterior escapado, donde otros filtros inútil, que puede tomar ventaja de esta variable de eliminar cualquier archivo en la web las operaciones de directorio raíz.
La vulnerabilidad de análisis: 0x03
inyección de consulta --UNION vulnerabilidad de inyección SQL
Sólo el seguimiento de las variables de entrada y se encontró ad_js.php
la existencia de una vulnerabilidad de inyección SQL, ahora mira cómo explotar esta vulnerabilidad
observar cuidadosamente el código y se encontró que no hay argumento es comillas simples y dobles, ir a buscar a la instrucción SQL contenida frente a getone función, echamos un vistazo a los parámetros de entrada no va a cambiar debido a esta función o lo que escapó, el seguimiento de la función getone, que se encuentra en la función de archivo mysql.class.php se utiliza para instrucción SQL encapsulado, y no hay filtración
aquí largo aliento sobre la razón ad_js.php
puede llamar a esta función, ya que contiene common.inc.php
, pero common.inc.php
no al comienzo de la introducción de este documento, pero sólo introducido en la línea 62, por lo que algunos pueden no introducido en el principio, utilizando las mejores herramientas para encontrar.
Entonces volvemos ad_js.php
, encontrar este código
echo "<!--\r\ndocument.write(\"".$ad_content."\");\r\n-->\r\n";
Contenido eco directamente, no es que CTF común investigación conjunta inyectarlo? Trate de
usar la orden por cheque a cabo un total de ocho, a continuación, en la consulta de unión
de la base de datos salió, bit 7 es el eco, que a su vez sigue investigación conjunta rutina continúan yendo en él, ya no está escrito en detalle
Cualquier vulnerabilidad de eliminación de archivos
Aquí se trata de la prueba de caja gris
En los parámetros controlables antes mencionados existen archivos user.php, ahora echar un vistazo más de cerca el
descubrimiento lit_pic
de este parámetro puede ser controlado y no incluye otras condiciones por correo, pero delante de un BLUE_ROOT, necesidad de conocer lo que significa que representa, al comienzo del archivo encontrado:
simplemente definir una constante, lo que no se filtra, se encuentra disponible, entonces el siguiente para ir con este parámetro, pero hay un problema directamente en el archivo de user.php PUBLICAR este parámetro? O echar un vistazo al código fuente en ella, continúan buscando este parámetro se encuentra en la información clasificada transmitida editado
esa página sólo para satisfacer esta necesidad de pasar parámetros (añade los parámetros necesarios) a
donde por primera vez para crear una prueba archivo text.txt
pruebas
miran text.txt, encontró que han sido eliminados
reflectante XSS
A veces, la herramienta no se puede detectar no quiere decir que no hay escapatoria, y algunos también tienen que revisar manualmente su propia, como guest_book.php
existen en un reflectantes vulnerabilidades XSS, pero no se detecta la herramienta
En la página donde los usuarios pueden encontrar en el correo
un vistazo al código fuente encontró un poco de algo
page_id se pasa directamente a través del poste, y la definición de esta función a la vista showmsg ni de los contenidos de cualquier tratamiento
por lo que esta vulnerabilidad es definitivamente disponible, biografía los parámetros necesarios pueden causar XSS de reflexión
de por qué convencional <script>alert(/xss/)</script>
no observar el código, queremos que la declaración de trabajo, tenemos que poner en el frente de <input>
la etiqueta para cerrar, ¿por qué agregaron ">
que no probó la herramienta, y no quiere decir que no hay escapatoria, o seguir ese principio, el usuario puede entrar en un lugar hay que ver
resumen:
Por supuesto que hay muchas otras vulnerabilidades, éste se debe principalmente a aprender algo de los pasos del proceso de auditoría de código, la siguiente auditoría será concentrarse en el código. Minería vulnerabilidades, explota!