[ PHP-FPM+Nginx ] Почти .htaccess

Discussion in 'Этичный хакинг или пентестинг' started by crlf, 2 Feb 2018.

  1. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    В ходе исследований описанных в этом топике, к своему стыду, только сейчас обнаружил интересную фичу в этой связке:

    Code:
    [pid  6514] open("/proc/sys/kernel/ngroups_max", O_RDONLY) = 5
    [pid  6514] open("/etc/group", O_RDONLY|O_CLOEXEC) = 5
    [pid  6513] lstat("/home/www/1/2/3/4/5/6/index.php", {st_mode=S_IFREG|0755, st_size=28, ...}) = 0
    [pid  6513] lstat("/home/www/1/2/3/4/5/6", {st_mode=S_IFDIR|0775, st_size=100, ...}) = 0
    [pid  6513] lstat("/home/www/1/2/3/4/5", {st_mode=S_IFDIR|0775, st_size=60, ...}) = 0
    [pid  6513] lstat("/home/www/1/2/3/4", {st_mode=S_IFDIR|0775, st_size=60, ...}) = 0
    [pid  6513] lstat("/home/www/1/2/3", {st_mode=S_IFDIR|0775, st_size=60, ...}) = 0
    [pid  6513] lstat("/home/www/1/2", {st_mode=S_IFDIR|0775, st_size=60, ...}) = 0
    [pid  6513] lstat("/home/www/1", {st_mode=S_IFDIR|0775, st_size=60, ...}) = 0
    [pid  6513] lstat("/home/www", {st_mode=S_IFDIR|0777, st_size=360, ...}) = 0
    [pid  6513] lstat("/home", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4220, ...}) = 0
    [pid  6513] stat("/home/www/.user.ini", 0x7ffcc2015030) = -1 ENOENT (No such file or directory)
    [pid  6513] stat("/home/www/1/.user.ini", 0x7ffcc2015030) = -1 ENOENT (No such file or directory)
    [pid  6513] stat("/home/www/1/2/.user.ini", 0x7ffcc2015030) = -1 ENOENT (No such file or directory)
    [pid  6513] stat("/home/www/1/2/3/.user.ini", 0x7ffcc2015030) = -1 ENOENT (No such file or directory)
    [pid  6513] stat("/home/www/1/2/3/4/.user.ini", 0x7ffcc2015030) = -1 ENOENT (No such file or directory)
    [pid  6513] stat("/home/www/1/2/3/4/5/.user.ini", 0x7ffcc2015030) = -1 ENOENT (No such file or directory)
    [pid  6513] stat("/home/www/1/2/3/4/5/6/.user.ini", {st_mode=S_IFREG|0755, st_size=26, ...}) = 0
    [pid  6513] open("/home/www/1/2/3/4/5/6/.user.ini", O_RDONLY) = 6
    [pid  6513] open("/home/www/1/2/3/4/5/6/index.php", O_RDONLY) = 6
    
    Какой такой .user.ini? Шиндоус тебя покусал...

    А вот какой:

    Что это даёт? Честно сказать, в уме, применение смоделировать удалось только одно.

    Допустим, приложение фильтрует загрузки по чёрному списку, супер-пупер регулярка, которая не пускает php и любые другие производные типа phtml и pht. А остальные расширения прогружаются, тогда, при наличии пустого индексного пхп файла:

    PHP:
    <?php
    // Silence is golden.
    можно загрузить 1.jpg с полезной нагрузкой и попутно залить .user.ini с содержимым:

    Code:
    auto_prepend_file = 1.jpg
    
    и получить профит.

    Пусть хоть и сильно притянуто за уши, но имеет право на существование.

    Что ещё? Не все директивы PHP можно изменять с помощью этого файла, только PHP_INI_PERDIR и PHP_INI_USER, но исходя из ситуации описанной выше, достаточно и этого.

    Полный список директив, можно посмотреть здесь.

    И не судите строго, возможно это баян, но для себя, в очередной раз, сделал вывод - RTFM||GTFO. Чего и вам, искренне, желаю :)
     
    #1 crlf, 2 Feb 2018
    Last edited: 23 Jun 2021
    BabaDook, l1ght, dmax0fw and 10 others like this.
  2. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    828
    Likes Received:
    815
    Reputations:
    90
    в отдельную бы статью оформить и про то как php связан с остальными парнями(apache->mod_php,cgi,fastcgi,fpm), было бы очень круто :)
     
    _________________________
    madik likes this.