BoZoN
BoZoN copied to clipboard
Je me suis fait hacker le bozon
auto_restrict ne fonctionne pas. Je ne sais pas où est la faille, je n'ai pas pu tester encore mais mon bozon est down. Merci à ducon Anoir Elfachtali.
C'est le fichier auto_restrict_users.php qui est en cause. Voici le code enregistré suite au hack :
# user : Apparition
$auto_restrict["users"]["Apparition"]["login"]='Apparition';
$auto_restrict["users"]["Apparition"]["encryption_key"]='9a06a5ded495f80d3d1d69eafe3dcb4c';
$auto_restrict["users"]["Apparition"]["salt"] = '<2n(?zpez|oh-$$MOn$`3}v4ZEA^1*>Vy%jX6{?`s_PnB@O9qgJ\'kP(fX+BHBOA(%axHgcvpVQ0J/B5_*rHt=yLp5:sS,X}qE`+7+:23}\\@`V&z~u~kA)@H0;Xk61G0^5`FOyTgA5}[gA5raaOV2b+(E{+OqHlHeAV{KdHR.^~,u+6+Oq.4gs[/^n=[I5YT9oV`D&zf6LxFlwckUAY,QFDK/[iSfR@ezt\\TNMu;Z))uLDK4t$TRr\\F;w/\\/+Qywf|~P~+ui#TC9&Of+{$u[&eY%H#Jyo6kCQAVn&GS/\\oPs^%@l$E&&$/&Z*uYt:taH\\_-|zxSpA4CpKq18mI}PJhKbks+ZkIj>st%uoCGGbwFoOm-R}Sfv\'qW)BS^8N8+}`&5oel~Ez,;Dac0E>Y-\'S:h%1HUJwo`r9dMMk@~K_w7sY6M%/,Eztuirb8&p?UCB<Fv;Uj(=-|NLksng1MZcv=L#8AA|a,o5w\'9D[EJPU5Dnf8p1$8#<i^alI/f#Xuv8E';
$auto_restrict["users"]["Apparition"]["pass"] = '2cee74c895c17895749face57ae841529e95fa791cdda9e2db0a870831b074a5156725c8f68dbea350497392d43d05bc6bb45bf510154d58c24d08b5328a85c7';
$auto_restrict["users"]["Apparition"]["status"]='user';
$auto_restrict["users"]["Apparition"]["lang"]='en';
# user : "];$PWN=echo "Hacked By Anoir Elfachtali";////"
$auto_restrict["users"][""];$PWN=echo "Hacked By Anoir Elfachtali";////""]["login"]='"];$PWN=echo "Hacked By Anoir Elfachtali";////"';
$auto_restrict["users"][""];$PWN=echo "Hacked By Anoir Elfachtali";////""]["encryption_key"]='a343b3b5baedfe816610302ea4d83bf8';
$auto_restrict["users"][""];$PWN=echo "Hacked By Anoir Elfachtali";////""]["salt"] = 'R&7,Wd4vqZUkADfcarv9\'bU\'(rsKp9B]R3LM;bLM`[JOQf+Pntk)\'ts(qxQ>EALbTuh9k}YeB`(w5\\^&zy<m65v$[S_QHytC.m[FAIPK%{N}z(Q`pz7Ma4;caG/tpKz{ARnyh[m>E%\\c7,[cWeFFV}>~`o{WV52GhA5kq\\|}E.q+#tXbN7xbC<\\cO6$:G,\\q*a~r}]0j`6I%d<b&jv<@B*N?mJ.`-B-MvpU*n@e5<XMfRT6O<=907<>]bXcw:58},{Ne>J%+(K[H~Ea@z<%Y%F/<4N]v6=Ai9Qf8*Uj~@GGGbTdvmm\'A3Sd}C&\'[<\'s<mjk;,-e]Fe3]M%}QeUmUz,}wOyWsp&w?w;m|v9XAa*sWZg&q#CW`K-@`tBX-?|)/kVYWHv3C/b-aDtrLD/qISj7E$iJCPTTN|?49a]g^y)^A}df8?-KRIp&\\Xfed]rOAv1wu(1f[jS=>tSZ|-2\\j\\U+~lCb%FU`t_~)$NePZ=##O;IV|4L@6Pa}GnG/M[S*H';
$auto_restrict["users"][""];$PWN=echo "Hacked By Anoir Elfachtali";////""]["pass"] = 'cf2c3704a65a8b6d5f1a126f24cea5773c89e31d941e9458619f08375908800831c29bb71abb9638db35d89e82359ed7908abe72eed8da23e164f606fc9e7923';
$auto_restrict["users"][""];$PWN=echo "Hacked By Anoir Elfachtali";////""]["status"]='';
$auto_restrict["users"][""];$PWN=echo "Hacked By Anoir Elfachtali";////""]["lang"]='en';
`
Il faudrait dans auto_restrict empêcher l'utilisation des quotes (simples et doubles), des virgules, points-virgules, slaches, antislashes à partir de la ligne 138 d'auto_restrict.php
Outch !
Joli...
Je patche de suite: merci !! :-)
Le 26/01/2017 à 18:31, jerrywham a écrit :
faudrait dans auto_restrict empêcher l'utilisation des quotes (simples et doubles), des virgules, points-virgules, slaches, antislashes à partir de la ligne 138 d'auto_restrict.php
Petite fonction à ajouter et à utiliser ligne 141 sur $_POST['login']
function secure_post($string) {
return str_replace(array('/','\\','[',']','{','}',',',';',':','$','='),'',htmlentities(strip_tags($string), ENT_QUOTES));
}
Je ne sais pas si ça suffira car je ne sais pas comment il a fait pour créer des comptes...
Avec un truc du genre
function unHack($data){
if (is_string($data)){
$data=strip_tags($data);
$data=str_replace(array('"',"'",',',';','/','\\'),'',$data);
return $data;
}
if (is_array($data)){
return array_map('unHack',$data);
}
}
utilisé à la ligne du strip_tags sur le post (l 80)
if ($auto_restrict['POST_striptags']){
$_POST=array_map('unHack',$_POST);
}
if ($auto_restrict['GET_striptags']){
$_GET=array_map('unHack',$_GET);
}
Ha posts croisés ^^ J'adapte
Je vais hâter la v3, la sauvegarde des fichiers sensibles est différente...
function unHack($data){
if (is_string($data)){
$data=strip_tags($data);
$data=str_replace(array('/','\\','[',']','{','}',',',';',':','$','='),'',htmlentities(strip_tags($data), ENT_QUOTES));
return $data;
}
if (is_array($data)){
return array_map('unHack',$data);
}
}
Peut-être assurer davantage le .htaccess ?
Bon, on va voir comme ça ^^ On peut le remercier s'il n'a pas foutu la merde sur ton serveur: il a révélé une faille ^^
Ceci dit, le mien ne fonctionnait plus non plus et je ne l'avais pas vu ^^ ça va avec le hack de mon pluXML il y a un moment...
J'aimerais bien savoir comment il a fait :-)
En tout cas, va falloir du unHack partout ;-)
J'ai changé également la génération de salt pour que les caractères incriminés en soient exclus...
Pour raccourcir ta fonction :
function unHack($data){
if (is_string($data)){
return str_replace(array('/','\\','[',']','{','}',',',';',':','$','='),'',htmlentities(strip_tags($data), ENT_QUOTES));
}
if (is_array($data)){
return array_map('unHack',$data);
}
}
et au niveau de l'ajout d'un nouvel utilisateur, environ ligne 138:
$login=unHack($_POST['login']);
Il faut également supprimer du tableau $auto_restrict['users'] les index vides, dans la fonction save_user :
function save_users(){
global $auto_restrict;
$ret="\n";$data='<?php'.$ret;
if (!isset($auto_restrict['users'])){return false;}
foreach ($auto_restrict['users'] as $key=>$user){
if ($key != '') {
$data.= $ret.'# user : '.$user['login'].$ret
.'$auto_restrict["users"]["'.$user['login'].'"]["login"]='.var_export($user['login'],true).';'.$ret
.'$auto_restrict["users"]["'.$user['login'].'"]["encryption_key"]='.var_export($user['encryption_key'],true).';'.$ret
.'$auto_restrict["users"]["'.$user['login'].'"]["salt"] = '.var_export($user['salt'],true).';'.$ret
.'$auto_restrict["users"]["'.$user['login'].'"]["pass"] = '.var_export($user['pass'],true).';'.$ret
.'$auto_restrict["users"]["'.$user['login'].'"]["status"]='.var_export($user['status'],true).';'.$ret
.'$auto_restrict["users"]["'.$user['login'].'"]["lang"]='.var_export($user['lang'],true).';'.$ret;
} else {
unset($auto_restrict['users'][$key]);
}
}
$data.=$ret.'?>';
$r=file_put_contents($auto_restrict['path_to_files'].'/auto_restrict_users.php', $data);
if (!$r){return false;}else{return $auto_restrict['users'];}
}
ça va avec le hack de mon pluXML il y a un moment...
J'ai tout simplement écrit un script php permettant de bruteforce des dossiers et sous-noms de domaines, j'ai eu la "chance" de tomber sur un formulaire d'upload non protégé À partir de là j'ai eu accès à php et je me suis permis de t'en informer de la sorte, donc c'était bien plus que PluXML Par contre depuis j'ai trouvé un second point d'entrée, penses à protéger tes projets privés ou en cours de développement sinon des personnes avec de moins bonnes intentions pourraient en prendre avantage
Désolé de "pourrir" l'issue github au passage PS: Le coup du bozon c'est pas moi par contre et je me demande aussi comment il s'y prend
Ok ! En tout cas, merci ;-) Je vais m'atteler à ça aujourd'hui ^^
D'ailleurs, si tu peux me filer quelques conseils, je suis preneur (broncoATwarriordudimanche.net ;-) )
@inaccessibIe : et tu pourrais nous le partager ce script (en l'envoyant à Bronco qui nous l'enverra) ? Je pense que El Fumier a dû utiliser le même principe et du coup ça serait bien de tester pour voir ce que ça donne...
Ou via un zerobin, si tu préfères ;-) http://zerobin.warriordudimanche.net
Ah oui, pas bête...