Outils d'utilisateurs

Outils du Site


zenk_roulettes:zenk_roulette_5

Zenk Roulette 5 : Cacti 0.8.7g

Date : Mercredi 8 novembre 2010 de 19h à 23h00.

Application auditée : Cacti 0.8.7g http://www.cacti.net/

Description : Outils de monitoring

Pad : http://piratepad.net/u0DUksN8kV


Défauts de sécurité :


Fichier : auth_changepassword.php

ligne : 57

header("Location: " . $_POST["ref"]); break;

Faille de redirection

ligne : 40

Multiple Http splitting dans le switch

Toutes les fonction form_save() sont vulnérables à des SQLi. Certaines injections SQL sont protégées par un addslashes, mais avec un charset et quelques tours de magies, cela saute. Ce n'est pas une protection suffisante.


Fichier : auth_changepassword.php

<input type="hidden" name="ref" value="<?php print $_REQUEST["ref"];?>">

Faille XSS


Fichier : auth_login.php

ligne : 195

if (isset($_SERVER["HTTP_REFERER"])) {
    $referer = $_SERVER["HTTP_REFERER"];
    if (basename($referer) == "logout.php") {
        $referer = "index.php";
    }    
} else if (isset($_SERVER["REQUEST_URI"])) {
    $referer = $_SERVER["REQUEST_URI"];
    if (basename($referer) == "logout.php") {
         $referer = "index.php";
    }
    } else {
         $referer = "index.php";
    }
    header("Location: " . $referer);

Faille HTTP splitting

ligne : 265

<form name="login" method="post" action="<?php print basename($_SERVER["PHP_SELF"]);?>">

Redirection possible vers un site malicieux pour récupérer le login et le pass d'un user.


Fichier : cdef.php

ligne : 50

case 'item_movedown':
    item_movedown();
    header("Location: cdef.php?action=edit&id=" . $_GET["cdef_id"]);
    break;
case 'item_moveup':
    item_moveup();
    header("Location: cdef.php?action=edit&id=" . $_GET["cdef_id"]);
    break;
case 'item_remove':
    item_remove();
    header("Location: cdef.php?action=edit&id=" . $_GET["cdef_id"]);

Faille HTTP Splitting

ligne : 125

header("Location: cdef.php?action=edit&id=" . (empty($cdef_id) ? $_POST["id"] : $cdef_id));

ligne : 147

header("Location: cdef.php?action=item_edit&cdef_id=" . $_POST["cdef_id"] . "&id=" . (empty($cdef_item_id) ? $_POST["id"] : $cdef_item_id));
header("Location: cdef.php?action=edit&id=" . $_POST["cdef_id"]);

ligne : 112 & 130

$save["hash"] = get_hash_cdef($_POST["id"]);

Faille HTTP Splitting


Fichier : lib/functions.php

function get_hash_cdef($cdef_id, $sub_type = "cdef") {
    $hash = db_fetch_cell("select hash from cdef where id=$cdef_id");
}

ligne : 127

$sequence = get_sequence($_POST["id"], "sequence", "cdef_items", "cdef_id=" . $_POST["cdef_id"]);

ligne : 116 & 137

$cdef_id = sql_save($save, "cdef");

Fichier : database.php

ligne : 325

$replace_result = $db_conn->Replace($table_name, $array_items, $key_cols, FALSE, $autoinc);
_adodb_replace($this, $table, $fieldArray, $keyCol, $autoQuote, $has_autoinc);

Voir la fonction pour plus d'info, mais autoQuote est passé à faux là.

ligne : 175

duplicate_cdef($selected_items[$i], $_POST["title_format"]);

Car dans le Fichier : lib/utility.php ligne : 521

$cdef["name"] = str_replace("<cdef_title>", $cdef["name"], $cdef_title);
sql_save($save, "cdef_items");

ligne : 536

ORDER BY " . get_request_var_request("sort_column") . " " . get_request_var_request("sort_direction") .

sanitize_search_string est inneficace dans ce cas là.

ligne : 239

<input type='hidden' name='drp_action' value='" . $_POST["drp_action"] . "'>

Faille XSS

ligne : 503

<input type="text" name="filter" size="40" value="<?php print htmlspecialchars(get_request_var_request("filter"));?>">

Faille XSS possible avec un bon vector, à vérifier.

—————————–

Fichier : color.php

ligne : 62

$save["id"] = $_POST["id"];
$color_id = sql_save($save, "colors");

Une SQL injection


Fichier : data_input.php

ligne : 88

$save["name"] = form_input_validate($_POST["name"], "name", "", false, 3);
$save["input_string"] = form_input_validate($_POST["input_string"], "input_string", "", true, 3);
$save["type_id"] = form_input_validate($_POST["type_id"], "type_id", "", true, 3);
$data_input_id = sql_save($save, "data_input");

La même avec la ligne : 119

ligne : 555

ORDER BY " . get_request_var_request('sort_column') . " " . get_request_var_request('sort_direction') . "

ligne : 220

<input type='hidden' name='drp_action' value='" . $_POST["drp_action"] . "'>

Faille XSS


Fichier : data_queries.php

header("Location: data_queries.php?action=item_edit&id=" . $_GET["snmp_query_graph_id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]);
    break;
    case 'item_movedown_dssv':
        data_query_item_movedown_dssv();
        header("Location: data_queries.php?action=item_edit&id=" . $_GET["snmp_query_graph_id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]);
        break;
    case 'item_remove_dssv':
        data_query_item_remove_dssv();
        header("Location: data_queries.php?action=item_edit&id=" . $_GET["snmp_query_graph_id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]);
        break;
    case 'item_moveup_gsv':
        data_query_item_moveup_gsv();
header("Location: data_queries.php?action=item_edit&id=" . $_GET["snmp_query_graph_id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]);
        break;
    case 'item_movedown_gsv':
        data_query_item_movedown_gsv();
        header("Location: data_queries.php?action=item_edit&id=" . $_GET["snmp_query_graph_id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]);
        break;
    case 'item_remove_gsv':
        data_query_item_remove_gsv();
        header("Location: data_queries.php?action=item_edit&id=" . $_GET["snmp_query_graph_id"] . "&snmp_query_id=" . $_GET["snmp_query_id"]);
        break;
    case 'item_remove':
        data_query_item_remove();
        header("Location: data_queries.php?action=edit&id=" . $_GET["snmp_query_id"]);

Faille HTTP Splitting

Code “pourave” :

function sql_sanitize($value) {
    //$value = str_replace("'", "''", $value);
    $value = str_replace(";", "\;", $value);
    return $value;
}
if (empty($regexp_match)) { $regexp_match = ".*"; }
    if ((!ereg($regexp_match, $field_value) || (($allow_nulls == false) && ($field_value == "")))) {
        raise_message($custom_message);
}

Voila !

Au bout de quelques heures on a commencé a abandonner car il serait plus rapide de refaire toutes l'application plutot que d'essayer de patcher :D

Donc, il doit rester plein de failles etc.. mais on n'a pas eu le courage de continuer ! ;)

En tout cas merci aux personnes présentes : K1wy, Essandre et Barbch.

zenk_roulettes/zenk_roulette_5.txt · Dernière modification: 2017/04/09 15:33 (modification externe)