PHP Tour de auditoría de código

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.6importante 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?

  1. Pruebas de Caja Negro: especificaciones de diseño funcionales conocidos productos pueden ser probados cada implementación de las funciones cumple con los requisitos.
  2. 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.
  3. 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.
    Aquí Insertar imagen Descripción
    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.6de 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

Aquí Insertar imagen Descripción
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:

  1. archivo de conjunto de funciones, por lo general nombrado incluido functionso commonpalabras 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.

  2. 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.
Aquí Insertar imagen Descripción
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.
Aquí Insertar imagen Descripción
La introducción de estos dos documentos, hay que prestar atención a la mencionada anteriormente también contienen commonpalabras clave del archivo, abierto common.inc.phpmirada
Aquí Insertar imagen Descripción
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.
Aquí Insertar imagen Descripción
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
Aquí Insertar imagen Descripción
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.
Aquí Insertar imagen Descripción
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_ideste 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.phpContiene el common.inc.phparchivo, por lo que entramos se escaparon las comillas simples y dobles, pero aquí en la instrucción SQL $ad_idno 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.phparchivos, 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
Aquí Insertar imagen Descripción

Volver a comprobar el archivo user.php también puede existir comprobación de vulnerabilidad de inyección SQL
Aquí Insertar imagen Descripción
También hay un único o doble comillas y sin filtro, debe ser capaz de mirar es cómo el parámetro $ id pasando
Aquí Insertar imagen Descripción
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源代码审计系统, ripsy 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.
Aquí Insertar imagen Descripción
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
Aquí Insertar imagen Descripción

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
Aquí Insertar imagen Descripción
para ver un $ _POST, a la vista de lo contenido
Aquí Insertar imagen Descripción

Hay una variable que puede ser utilizado $_POST['lit_pic']para rastrear lo que la variable se
Aquí Insertar imagen Descripción
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.phpla existencia de una vulnerabilidad de inyección SQL, ahora mira cómo explotar esta vulnerabilidad
Aquí Insertar imagen Descripción
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í Insertar imagen Descripción
aquí largo aliento sobre la razón ad_js.phppuede llamar a esta función, ya que contiene common.inc.php, pero common.inc.phpno 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.
Aquí Insertar imagen Descripción
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
Aquí Insertar imagen Descripción
usar la orden por cheque a cabo un total de ocho, a continuación, en la consulta de unión
Aquí Insertar imagen Descripció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
Aquí Insertar imagen Descripción
descubrimiento lit_picde 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:
Aquí Insertar imagen Descripción
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
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
esa página sólo para satisfacer esta necesidad de pasar parámetros (añade los parámetros necesarios) a
Aquí Insertar imagen Descripción
donde por primera vez para crear una prueba archivo text.txt
Aquí Insertar imagen Descripción
pruebas
Aquí Insertar imagen Descripción
miran text.txt, encontró que han sido eliminados
Aquí Insertar imagen Descripción

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.phpexisten en un reflectantes vulnerabilidades XSS, pero no se detecta la herramienta

En la página donde los usuarios pueden encontrar en el correo
Aquí Insertar imagen Descripción
un vistazo al código fuente encontró un poco de algo
Aquí Insertar imagen Descripción
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
Aquí Insertar imagen Descripción
por lo que esta vulnerabilidad es definitivamente disponible, biografía los parámetros necesarios pueden causar XSS de reflexión
Aquí Insertar imagen Descripció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 ">Aquí Insertar imagen Descripción
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!

el blog de referencia

sueño

Publicado 71 artículos originales · ganado elogios 80 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_43431158/article/details/104856198
Recomendado
Clasificación