IBM Net.Data - наиболее полный и простой в использовании язык сценариев, позволяющий вам создавать WEB приложения. Уязвимость защиты в программе позволяет злоумышленнику получить необработанную форму SQL запроса, который иногда раскрывает важную информацию типа имен пользователей и паролей.
При некоторых обстоятельствах, Net.Data включает фактическую конструкцию SQL запроса в конечном HTML ответе. При этом переменная среды "DTW_SHOWSQL" должна быть установлена в "YES", и макрокоманда должна включать глобальную переменную "SHOWSQL" со значением "YES". В большинстве случаев переменную
"SHOWSQL" определяют в глобальных переменных %DEFINE раздела, те же переменные
можно отменить командой с тем же самым именем в HTTP запросе - это и есть основной баг. Макрокоманда "macro1" находится в макро файле, называемом "mymacros.mac" и выглядит примерно так:
%DEFINE SHOWSQL="NO"
%HTML (macro1) {
<html>
<body>
@Execute_some_SQL()
</body>
</html>
%}
Следующий URL позволяет Net.Data включить SQL запрос в конечный HTML файл:
http://www.example.com/netdata/mymacros.mac/macro1? ValidVariable=ValidValue&SHOWSQL=YES
В качестве решения можно предложить не включать важные переменные в %DEFINE, а включать внутри макро блока типа так: @DTW_ASSIGN (SHOWSQL, "Нет"). Соответственно любая переменная включенная в в %DEFINE секцию, имеет возможность подмены.