en primer lugar, escanee su sitio web para
Vulnerabilidades. los más comunes
Las vulnerabilidades son sqli, xss, dnn, sqli string
- ¿Cuáles son algunas cosas básicas necesarias para ser un hacker profesional?
- ¿Cómo puedo hackear mi contraseña olvidada?
- ¿Cuál es el mejor para hackear Linux: Backtrack, Kali u otra cosa?
- ¿Cómo comprometen los hackers un sistema protegido por contraseña cuando la velocidad a la que el sistema puede procesar los intentos de inicio de sesión es mucho más lenta que la velocidad a la que se pueden generar combinaciones de contraseña?
- Hackers: Sin ningún software, ¿cómo saber si su sistema está siendo pirateado?
vulnrelbilty base, rfi, lfi etc.
puede usar la herramienta Acunetix WVS para escanear su
sitio web.
Comprueba tu sitio web si el hacker todavía tiene
acceso.
compruebe si hay algún shell de php
subido Hay un shell php llamado “404”.
Cuando lo abra, puede ver un
mensaje de que no se encontró la página. A
identificarlo, abrir la página presionar ctrl + a. Ahora
debes ver un texto aria. Si lo encuentras ve
a su panel de control elimine el archivo.
Shell es como una puerta trasera para un hacker, si
el sitio web se desgrana, el hacker puede acceder, eliminar,
editar o agregar datos en su sitio web, no
importa que haya cambiado su contraseña de cpanel o
cambió la url.
Actualiza tus códigos, scripts.
Si la entrada del usuario se inserta sin modificación
en una consulta SQL, luego la aplicación
se vuelve vulnerable a la inyección SQL, vea
el siguiente script:
$ unsafe_variable = $ _POST
[‘entrada del usuario’];
mysql_query (“INSERT INTO` table`
(`columna`) VALORES
(‘$ unsafe_variable’) “);
Eso es porque el usuario puede inyectar cualquier dato
valor similar ‘); Tabla DROP TABLE; – y
la consulta se convierte en:
INSERTAR EN `tabla` (` columna`)
VALORES (‘valor’); MESA PLEGABLE
mesa;-‘)
el desarrollador puede resistir por encima de la vulnerabilidad con
Actualización simple en la base de datos sqli:
Estas son declaraciones SQL que se envían
y analizado por el servidor de bases de datos
por separado de cualquier parámetro. De esta manera
es imposible para un hacker inyectar malicioso
SQL
Hay 2 formas de lograr esto:
1. Usando PDO (para cualquier base de datos compatible
manejar
$ stmt = $ pdo-> prepare (‘SELECCIONAR *
empleados DONDE nombre =: nombre ‘);
$ stmt-> execute (array (‘nombre’ =>
$ nombre));
foreach ($ stmt como $ row) {
// hacer algo con $ row
}
2. Usando MySQLi (para MySQL):
$ stmt = $ dbConnection-> prepare
(‘SELECCIONAR * DE los empleados DONDE n
=? ‘);
$ stmt-> bind_param (‘s’, $ nombre);
$ stmt-> execute ();
$ resultado = $ stmt-> get_result ();
while ($ row = $ result-> fetch_ass
()) {
// hacer algo con $ row
}
Si está utilizando una base de datos que no sea
MySQL, hay un segundo controlador específico
opción a la que puede hacer referencia (p. ej. pg_prepare
() y
pg_execute () para PostgreSQL). PDO es el
opción universal. Configurar correctamente el
conexión Tenga en cuenta que cuando se utiliza PDO para
acceder a una base de datos MySQL real preparada
las declaraciones no se usan por defecto. Arreglar
esto necesita deshabilitar la emulación de
declaraciones preparadas Ejemplo de
crear una conexión usando PDO es:
$ dbConnection = nueva PDO
(‘mysql: dbname = dbtest; host = 127.0.0.1
‘contraseña de usuario’);
$ dbConnection-> setAttribute
(DOP :: ATTR_EMULATE_PREPARES, falso);
$ dbConnection-> setAttribute
(DOP :: ATTR_ERRMODE,
PDO :: ERRMODE_EXCEPTION);
En el ejemplo anterior, el modo de error no es
estrictamente necesario, pero se recomienda
agréguelo. De esta manera, el script no se detendrá con
un error fatal cuando algo sale mal.
Y le da al desarrollador la oportunidad de
detectar cualquier error que se arroje n como
PDOExceptions.
Sin embargo, lo que es obligatorio es el primero.
línea setAttribute (), que le dice a PDO que
deshabilitar las declaraciones preparadas emuladas y
use declaraciones preparadas reales. Se asegura
que la declaración y los valores no son
analizado por PHP antes de enviarlo al
Servidor MySQL (dando un
posible hacker no hay posibilidad de inyectar
SQL malicioso).
Sin embargo, puede configurar el juego de caracteres en el
opciones del constructor, es importante
tenga en cuenta que las versiones ‘anteriores’ de PHP (<5.3.6)
silenciosamente ignoró el parámetro charset en el
DSN. Explicación Lo que sucede es que el
La instrucción SQL que pasa para preparar es
analizado y compilado por el servidor de bases de datos.
Especificando parámetros
(ya sea un? o un parámetro con nombre como: nombre
en el ejemplo anterior) el desarrollador da
comando al motor de base de datos donde
quiere filtrar. Entonces cuando llamas
ejecutar, la declaración preparada se combina
con los valores de los parámetros que especifique. los
Lo importante aquí es que el parámetro
los valores se combinan con el compilado
declaración, no una cadena SQL. inyección SQL
funciona engañando al guión para que incluya
cadenas maliciosas cuando crea SQL para
enviar a la base de datos. Entonces enviando el
SQL real por separado de los parámetros,
limita el riesgo de terminar con
algo que no pretendías.
Cualquier parámetro que envíe cuando use un
declaración preparada solo será tratada como
instrumentos de cuerda
(sin embargo, el motor de la base de datos puede hacer algo
de optimización para que los parámetros puedan terminar
como números también, por supuesto). En el ejemplo
arriba, si la variable $ name contiene
‘Sarah’;
ELIMINAR DE los estudiantes el resultado sería
simplemente sea una búsqueda de la cadena “‘Sarah’;
BORRAR DE los estudiantes “, y no
terminar con una mesa vacía. Otro beneficio
con el uso de declaraciones preparadas es que si usted
ejecutar la misma declaración más veces en
la misma sesión solo se analizará y
compilado una vez, dándote algunas ganancias de velocidad.
preguntaste sobre cómo hacerlo
un inserto, aquí hay un ejemplo (usando PDO):
$ readyStatement = $ db-> prepare
(‘INSERTAR EN LA tabla (columna) VALORES
(:columna)’);
$ readyStatement-> execute (array
(‘column’ => $ unsafeValue));
¿Se pueden usar las declaraciones preparadas para
Consultas dinámicas?
Mientras que el desarrollador todavía puede usar preparado
declaraciones para los parámetros de consulta, el
estructura de la consulta dinámica en sí no puede
ser parametrizado y ciertas características de consulta
No se puede parametrizar.
Para estos escenarios específicos, la mejor acción
tomar es usar un filtro de lista blanca que restringe
Lo posible
valores.
// Lista blanca de valores
// $ dir solo puede ser ‘DESC’ o ‘ASC
$ dir =! empty ($ dirección)?
‘DESC’: ‘ASC’ ;.
si no tienes control sobre el sitio web
desarrollo, entonces será difícil para ti.
Mejor, llame a un experto para solucionar su problema.
también debes leerlo:
https://www.quora.com/What-are-s…
Si no tienes suficiente dinero para contratar a un
experto, luego encuéntrame en facebook, te ayudaré a
arregla tus problemas
Espero haberte ayudado.
cualquier duda no dude en preguntar!