Authentication Bypass - обход аутентификации

Критическая уязвимость. Максимальный уровень угрозы.

Authentication Bypass (обход аутентификации) - доступ к закрытым разделам сайта в обход проверки подлинности пользователя.

Authentication Bypass является максимальной угрозой для любого сайта, веб-приложения, информационной системы.


Authentication Bypass (обход аутентификации) для сайтов и веб-приложений - это несанкционированный доступ к административному разделу или разделам сайта и скриптам обеспечивающим прямое взаимодействие с базой данных и файловой системой сервера.

Authentication Bypass может быть выполнен эксплуатируя уязвимости кода сайта, ошибки публикации ресурса, а так же из-за ошибок в настройках и уязвимостями программного обеспечения сервера.

Возможность обхода аунтификации (Authentication Bypass) на сайте всегда приводит к его взлому, так как:

  • Атакующий проходит в административный раздел сайта с максимальным уровнем доступа
  • Атакующий получает доступ к закрытым разделам сайта, или файлам, напрямую взаимодействующим с базой данных или файловой системой сервера

Несколько примеров Authentication Bypass:


SQL injection Authentication Bypass

Обход аутентификации с помощью SQL инъекции

  • Атакующий изменяет запрос, нарушая логику его выполнения
  • Запрос возвратит все строки таблицы пользователей сайта, вне зависимости от условия валидации парольной пары
  • Атакующий получает доступ к административному разделу сайта
  • Сайт взломан


XPath injection Authentication Bypass

Обход аутентификации с помощью XPath инъекции

Аналогично SQL инъекции:

Часть кода XML базы данных пользователей сайта: base.xml
<?xml version='1.0' encoding='ISO-8859-1'?> <users>
<user>
<id>1</id>
<username>admin</username>
<password>adminpass</password>
</user>
<user> <id>2</id>
<username>user</username>
<password>userpass</password>
</user>
...
</users>

Код аутентификации пользователей / администраторов сайта
String username = req.getParameter("username');
String password = req.getParameter("password');
XPathFactory factory = XPathFactory.newInstance();
Xpath xpath = factory.newXPath();
File file = new File("/usr/webappdata/users.xml');
InputSource src = new InputSource(new FileInputStream(file));
XPathExpression expr = xpath.compile("//users[username/text()=' " + username + " ' and password/text()=' " + password + ' ']/id/text()');
String id = expr.evaluate(src);

Легальный XPath запрос на аутентификацию пользователя:
users[username/text()='admin' and password/text()='adminpass'] /id/text()

XPath инъекция:
' or '1'='1'

Измененный в результате эксплуатации XPath инъекции запрос:
users[username/text()='admin' and password/text()='' or '1'='1' ]/id/text()

Результат:
Аутентификация атакующего на сайте
Запрос вернет ID для пользователя admin с пустым паролем при условии 1=1 является истиной.



Ошибки разграничения прав доступа к БД

Критические ошибки разработки сайта, при определенных условиях, могут приравнять обычных пользователей сайта к их администраторам или контент менеджерам.
В нашей практике случались обращения клиентов с взломанными сайтами из-за такого рода ошибок.
Такой взлом сайта реализуется крайне просто. Атакующий регистрируется на сайте (или форуме) как обычный пользователь, а затем, используя свою учетную запись проходит в административный раздел сайта.



Защита от Authentication Bypass

Ограничение доступа к административному разделу сайта по IP.
Кроме этого, можно рассмотреть вариант с установкой дополнительной парольной пары на системные директории сайта.
В случаях, когда нельзя использовать вышеописанные варианты защиты, следует исключить эксплуатацию любых уязвимостей, т.к. получение несанкционированного доступа к административному разделу это не только SQL и XPath инъекции но и сотни вариаций самых разнообразных атак, таких как XSS и им подобных.

Надо понимать, что защита административно раздела по IP никаким образом не гарантирует безопасность Вашего сайта.
Конечная цель взлома сайта - это размещение шеллов, бэкдоров или врезок в код сайта, позволяющий хакеру контролировать взломанный сайт.
Способов и методик получения шелла на атакуемом сайте множество, и доступ к административной панели чаще всего не нужен.
Получивший несанкционированный доступ к административной панели злоумышленник, в 90% случаев будет рассматривать его как промежуточный этап взлома для размещения своих шеллов на атакуемом сервере.



Сканер уязвимостей сайтов онлайн Проверьте, наколько устойчив к взлому Ваш сайт