session_start();
//print_r($_SERVER);
$sCadena = $_SERVER['PHP_SELF'];
$sCadena2 = $_SERVER['REQUEST_URI'];
$sCadena3 = $_SERVER['QUERY_STRING'];
$sCadena4 = $_SERVER['PATH_INFO'];
//AGENTE
$agente_atacante=$_SERVER["HTTP_USER_AGENT"];
if(strpos("-".$agente_atacante,"sqlmap")) exit;
//++++++++++++++CONTROL HACKING++++++++++/
$array_inyecciones=array("(\b|^[a-z])union(\b|^[a-z])",
"(\b|^[a-z])having(\b|^[a-z])",
"(\b|^[a-z])and(\b|^[a-z])",
"(\b|^[a-z])drop(\b|^[a-z])",
"(\b|^[a-z])delete(\b|^[a-z])",
"(\b|^[a-z])from(\b|^[a-z])",
"(\b|^[a-z])count(\b|^[a-z])",
"(\b|^[a-z])length(\b|^[a-z])",
"(\b|^[a-z])password(\b|^[a-z])",
"(\b|^[a-z])ascii(\b|^[a-z])",
"(\b|^[a-z])substring(\b|^[a-z])",
"(\b|^[a-z])group(\b|^[a-z])",
"(\b|^[a-z])shadow(\b|^[a-z])",
"(\b|\(|^[a-z])select(\b|^[a-z])",
"(\b|\(|^[a-z])script(\b|^[a-z])",
"\(",
"<",
">",
"'",
"%",
"\"",
"\[",
"\]",
"\|",
"\)");
$inyecciones="";
$cadena_hackeada="";
foreach($array_inyecciones as $inyeccion){
$inyecciones.=$inyeccion."|";
}
$inyecciones=substr($inyecciones,0,strlen($inyecciones)-1);
$expreg = "/(?:".$inyecciones.")/i";
if (preg_match_all($expreg,urldecode($sCadena),$encontrado)) {
$hacking=true; // Email al webmaster + Banear al usuario
$cadena_hackeada=$sCadena;
}
else if(preg_match_all($expreg,urldecode($sCadena2),$encontrado)) {
$hacking=true; // Email al webmaster + Banear al usuario
$cadena_hackeada=$sCadena;
}
else if(preg_match_all($expreg,urldecode($sCadena3),$encontrado)) {
$hacking=true; // Email al webmaster + Banear al usuario
$cadena_hackeada=$sCadena3;
}
else if(preg_match_all($expreg,urldecode($sCadena4),$encontrado)) {
$hacking=true; // Email al webmaster + Banear al usuario
$cadena_hackeada=$sCadena4;
}
if($hacking) {
$servidor=$_SERVER["SERVER_NAME"];
$ip_atacante=$_SERVER["REMOTE_ADDR"];
$host_atacante=$_SERVER["REMOTE_HOST"];
$puerto_atacante=$_SERVER["REMOTE_PORT"];
$datosAtaque="\n".date("d:m:Y H:i:s")."\n".
"Servidor: ".$servidor."\n".
"Ip Atacante: ".$ip_atacante."\n".
"Servidor Atacante: ".$host_atacante."\n".
"Puerto Atacante: ".$puerto_atacante."\n".
"Agente Atacante: ".$agente_atacante."\n".
"Cadena: ".$cadena_hackeada;
$resource=fopen("registro_ataques","a+");
fwrite($resource,$datosAtaque);
fclose($resource);
///CORREO EL PRIMER ATAQUE
if(!isset($_SESSION["IP_ATACANTE"])){
$_SESSION["IP_ATACANTE"]=$ip_atacante;
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Contacto desde ".$servidor." <".EMAIL_CONTACTO.">\n";
//mail("ataques@iteasoluciones.es","Intento de Hackeo ".$servidor,str_replace("\n","
",$datosAtaque),$headers);
}//DETECTO EL PRIMERO DE LOS ATAQUES
exit;
}
?>
include ("comunes/inc/session_vars.php");
//CONFIGURACION WEB
include ("configuracion_web.php");
//CLASES PARAR GESTIONAR DATOS
include ("comunes/class/BbddClass.php");
include ("comunes/class/conexionclass.php");
include ("comunes/class/preferenciasclass.php");
include ("comunes/class/listadoobjclass.php");
include ("comunes/class/objetoclass.php");
include ("comunes/class/recordsetclass.php");
//CLASE DE CONFIGURACION Y COMUNES
include ("comunes/class/configuracion.php");
include ("comunes/inc/friendlylinks.php"); //clase con los friendlylinks
include ("comunes/inc/control_ids.php");//control de acceso con ids falsos
include ("comunes/class/redimensionimgclass.php"); //clase que redimensiona las imagenes
include ("comunes/inc/funciones.php");
//MODULO BASE
include ("modulo_base/class/menuclass.php"); //clase para sacar el menu
include ("modulo_base/inc/datos_empresa.php");//funciones para pintar logo y datos de la empresa
include ("modulo_base/inc/modulo_base.php"); //funciones para pintar funciones del modulo base imagen_seccion()
include ("modulo_base/inc/buscador.php"); //funciones para pintar funciones de buscador pinta_busqueda()
include ("modulo_base/inc/destacados.php"); //funciones para pintar los objetos destacados de portada()
include ("modulo_base/class/contenidosclass.php"); //clase para sacar los contenidos
//PHPMAILER
include("phpmailer/class.phpmailer.php");
include("phpmailer/class.smtp.php");
//NUBE DE TAGS
include ("modulo_base/includes/aplicaciones/nube/inc/nube.php");
//VERSION PARA MOVIL
include ("movil/inc/funciones_movil.php"); //funciones para redireccionar a la version movil
//RSS
include ("rss/class/lastRSS.php");
include ("rss/inc/rss.php");
//IDIOMAS
include ("modulo_base/includes/idiomas/traducciones.php"); //definiciones de los textos
//RESUMEN HAN COMPRADO
include("modulo_base/includes/aplicaciones/resumenes/inc/han_comprado.php");
?>
//OBTENGO TODAS LAS SECCIONES ABIERTAS
$conexion=new ConexionClass;
$SeccionesAbiertas=new RecordsetClass;
$sql="SELECT id FROM secciones WHERE asociado='0' AND visible='1'";
$SeccionesAbiertas->abrir($conexion,$sql);
$A_SeccionesAbiertas=array();
while (!$SeccionesAbiertas->final){
$A_SeccionesAbiertas[]=$SeccionesAbiertas->campo(1);
$SeccionesAbiertas->siguiente();
}
//COMPRUEBO SI ESTA VALIDADO
if($_SESSION["SES_USER_ID"]){
//Obtengo los perfiles que tiene este usuario
$perfiles=new RecordsetClass;
$sql_perfiles="SELECT id_perfil FROM perfiles_socios WHERE id_socio='".$_SESSION["SES_USER_ID"]."'";
$perfiles->abrir($conexion,$sql_perfiles);
if($perfiles->numRegistros()>0){
$cadena="";
while (!$perfiles->final){
$cadena.=$perfiles->campo(1).",";
$perfiles->siguiente();
}
$cadena = substr($cadena, 0, -1);
$A_SeccionesUsuario=array();
$sql="SELECT s.id FROM secciones s, permisos p WHERE s.id=p.id_seccion AND s.asociado='1' AND s.visible='1' AND p.id_tipo IN (".$cadena.")";
$SeccionesAbiertas->abrir($conexion,$sql);
while (!$SeccionesAbiertas->final){
$A_SeccionesUsuario[]=$SeccionesAbiertas->campo(1);
$SeccionesAbiertas->siguiente();
}
$A_SeccionesAbiertas=array_merge($A_SeccionesAbiertas,$A_SeccionesUsuario);
}
}//SI HAY SESION
/************CONTROL ACCESO CONTENIDOS***********/
//CONTROL PARA QUE NO SE PUEDA ENTRAR EN UN CONTENIDO QUE PERTENECE ÚNICAMENTE A SECCIONES PRIVADAS SI NO SE TIENEN PERMISOS
if(isset($objeto)){
$contenidoPermisoVisualizar=false;
//OBTENGO LAS SECCIONES OCULTAS EN LAS QUE ESTÉ EL CONTENIDO
$O_ConsultaObjeto=new C_Bbdd;
$O_ConsultaObjeto->M_Conectar();
//ESTAS SON LAS SECCIONES PRIVADAS EN LAS QUE SALE EL OBJETO
$sql="SELECT DISTINCT(s.id) FROM objetos_elementos oe, listados_elementos le, secciones s WHERE s.id=le.id_elemento AND le.id_listado=oe.id_elemento AND s.asociado=1 AND s.visible='1' AND oe.id_objeto=".$objeto;
$O_ConsultaObjeto->M_Consulta($sql);
if(!$O_ConsultaObjeto->V_NumRegistros){
$contenidoPermisoVisualizar=true;
}//si no está en ninguna privada SE PUEDE VER
else{
//print_r($O_ConsultaObjeto->A_ResultadoConsulta);
//guardo las secciones privadas en las que está
$A_privadasObjeto=array();
foreach($O_ConsultaObjeto->A_ResultadoConsulta as $SeccionPrivada){
$A_privadasObjeto[]=$SeccionPrivada["ID"];
}//cargo el array de las privadas
//COMPRUEBO SI ESTÁ EN ALGUNA PUBLICA
$sql="SELECT DISTINCT(s.id) FROM objetos_elementos oe, listados_elementos le, secciones s WHERE s.id=le.id_elemento AND le.id_listado=oe.id_elemento AND s.asociado=0 AND s.visible='1' AND oe.id_objeto=".$objeto;
$O_ConsultaObjeto->M_Consulta($sql);
if(!$O_ConsultaObjeto->V_NumRegistros){
if($_SESSION["SES_USER_ID"]){
//print_r($A_privadasObjeto);
//print_r($A_SeccionesUsuario);
$A_inteseccionObjeto=array_intersect($A_privadasObjeto,$A_SeccionesUsuario);
if(count($A_inteseccionObjeto)){
$contenidoPermisoVisualizar=true;
}//tiene acceso a alguna de las privadas donde está POR ESO PUEDO VERLO
else{
$contenidoPermisoVisualizar=false;
}//DEFINITIVAMENTE NO SE PUEDE VER
}//si está validado compruebo si sus secciones privadas coinciden alguna con las secciones privadas donde está el objeto
else{
$contenidoPermisoVisualizar=false;
}//si no está validado ENTONCES NO PUEDE ENTRAR EN LAS PRIVADAS Y POR LO TANTO NO PUEDE VERLO
}//si no está en ninguna pública HAY QUE COMPROBAR SI TIENE ACCESO A LAS PRIVADAS OBTENIDAS ANTES
else{
$contenidoPermisoVisualizar=true;
}//si está en una pública SE PUEDE VER
}//si está en una privada hay que comprobar si tiene acceso
}//si se está intentado entrar en un objeto
//OBTENER LAS MARCAS CON CONTENIDOS VINCULADOS
$MarcasAbiertas=new RecordsetClass;
$sql="SELECT distinct(o.id_marca) FROM objetos o WHERE o.visible='1' AND o.id_marca!='0'";
$MarcasAbiertas->abrir($conexion,$sql);
$A_MarcasAbiertas=array();
if($MarcasAbiertas->numRegistros()){
while (!$MarcasAbiertas->final){
$A_MarcasAbiertas[]=$MarcasAbiertas->campo(1);
$MarcasAbiertas->siguiente();
}
}
//OBTENER LAS CATEGORIAS CON CONTENIDOS VINCULADOS
$CategoriasAbiertas=new RecordsetClass;
//PARA EL PORTAL GENERAL
$sql="SELECT distinct(c.id) FROM objetos_categorias oc, objetos o, categorias c WHERE c.id=oc.id_categoria AND o.id=oc.id_objeto";
$CategoriasAbiertas->abrir($conexion,$sql);
$A_CategoriasAbiertas=array();
if($CategoriasAbiertas->numRegistros()){
while (!$CategoriasAbiertas->final){
$A_CategoriasAbiertas[]=$CategoriasAbiertas->campo(1);
$CategoriasAbiertas->siguiente();
}
}
/************ FIN CONTROL ACCESO CONTENIDOS***********/
/*echo count($A_SeccionesAbiertas);
echo "
".count($A_SeccionesUsuario);
echo "
".count($A_SeccionesAbiertas);*/
//print_r($A_SeccionesAbiertas);
?>