![]() |
Всем привет!
race-condition - отличная уязвимость, чтобы получить инвайт в античат. Всё же это посложней, чем найти десяток sql. Собственно не так давно познакомился с этой уязвимостью. Уязвимость присутствовала на моём собственном проекте в продакшене, где участвует приличное кол-во живых денег. К счастью я с ней познакомился раньше, чем до неё кто-то добрался. На моём сайте есть трансфер средств между юзерами. Я посылаю два одинаковых запроса в одно и тоже время (через js одновременно открываю 2 php скрипта с curl запросами), на перевод 1$ от Алисы к Бобу. Выполняются они практически одновременно. В итоге у Алисы списывается дважды по 1$, даже можно и трижды сделать, а Боб получает не более 1$. Собственно вопрос. Можно ли как-то обратить такую уязвимость для подрисовки баланса, а не его снятия? Я пытался ставить разные setTimeout между запросами.. Не помогает, вроде. Спасибо |
Да собственно кода-то чуть чуть) Держите. Вроде закрыл уязвимость при помощи APC, но интерес остался. Можно ли?
PHP код:
PHP код:
|
В коде никаких ограничений нет. Экспериментируй дальше, все получится.
|
Цитата:
Вы абсолютно уверены? Может я что-то делаю не так? Я через JS с интервалом от 1 до 200 мсек уже попробовал вызывать скрипты. (через jquery .get, и использую setTimeout). Целевой сайт у меня на локалхосте находится. Скрипты я вызываю test1.php и test2.php, в обоих прописано по 2 curl запроса - первый на получение токена, второй на отправку средств. Списать дважды уже удалось раз 100, а вот добавить - ни разу. Может при такой проектировке (когда я сначала списываю у Алисы, потом добавляю Бобу) и не присутствует уязвимость? |
Цитата:
Можно где-нибудь скачать этот движок? Потестировал бы. |
Race Condition встречается куда чаще, чем вы думаете.
Например, он есть в некоторых версиях WordPress, Joomla. Экспериментируйте больше !!! |
| Время: 23:35 |