Hospedagem de sites ilimitada superdomínios Anuncie Aqui
Posted by : Rogi terça-feira, 13 de junho de 2017

A BrainCMS vem com um bug, que aceita comandos SQL e SCRIPTS na área de notícias, tanto nos comentários, como na criação da notícia no painel administrativo.



Para resolver:

Crie um arquivo PHP com o nome sanitize.php na pasta
system/app/classes/

E cole esse código:


<?php
/**
 * Classe que contem os métodos que iram
 * filtrar as entradas enviadas via GET e POST
 *
 * @filesource
 * @author      Pedro Elsner <pedro.elsner@gmail.com>
 * @license    http://creativecommons.org/licenses/by/3.0/br/ Creative Commons 3.0
 * @abstract
 * @version    1.0
 */
abstract class Sanitize {
/**
 * Filter
 * 
 * @param  mixed $value
 * @param  array $modes
 * @return mixed
 * @static
 * @since  1.0
 */
    static public function filter($value, $modes = array('sql', 'html')) {
        if (!is_array($modes)) {
            $modes = array($modes);
        }
        if (is_string($value)) {
            foreach ($modes as $type) {
              $value = self::_doFilter($value, $type);
            }
            return $value;
        }
        foreach ($value as $key => $toSanatize) {
            if (is_array($toSanatize)) {
                $value[$key]= self::filter($toSanatize, $modes);
            } else {
                foreach ($modes as $type) {
                  $value[$key] = self::_doFilter($toSanatize, $type);
                }
            }
        }
        return $value;
    }
/**
 * DoFilter
 * 
 * @param  mixed $value
 * @param  array $modes
 * @return mixed
 * @static
 * @since  1.0
 */
    static protected function _doFilter($value, $mode) {
        switch ($mode) {
            case 'html':
                $value = strip_tags($value);
                $value = addslashes($value);
                $value = htmlspecialchars($value);
                break;
        
            case 'sql':
                $value = preg_replace(sql_regcase('/(from|select|insert|delete|where|drop table|show tables|#|\*| |\\\\)/'),'',$value);
                $value = trim($value);
                break;
        }
        return $value;
    }
}


Agora, abra o arquivo  class.admin.php

Caminho: system/app/classes/class.admin.php

Agora importe a classe colocando:

require_once('sanitize.php');

Após <?php

Nesse mesmo arquivo (class.admin.php) procure por:

function EditNews
e
 PostNews()

E após a  em cima do global

Cole isso: 

$_GET = Sanitize::filter($_GET);
$_POST = Sanitize::filter($_POST);


Pronto, salve o arquivo e já esta corrigido o bug.
Créditos:


Leave a Reply

Subscribe to Posts | Subscribe to Comments

Hospedagem de site ilimitada superdomínios

- Copyright © Fazendo Seu Habbo - Blogger Templates - Powered by Blogger - Designed by Johanes Djogan -