01-11-2014, 05:11 PM
Мною найдены серьезные уязвимости в структуре движка нашего трекера. На данный момент уже переписано куча кода, основные 37 скриптов, где данная дырка успешно закрыта. Скажу сразу, что данная уязвимость присутствует не только на нашем, а и на тысячи других сайтах. Не знаю почему разработчики движков не обращают внимания на такую так сказать мелочь.
Относительно нашего движка что позволяла делать данная уязвимость (даже страшно перечислять):
Позволяла любому обычному зарегистрированному пользователю, не имеющему даже сильно больших знаний в области интернет программирования:
1. Удалять сообщения к любому релизу на трекере, к любому пользователю на стене, да и вообще везде где есть сообщения, в том числе и деректоров, администраторов, модераторов.
2. Удалять посты (сообщения) на форуме
3. Удалять темы на форуме, содержащие сразу несколько сообщений.
4. Удалять категории на форуме, соодержащие много тем пользователей.
5. Удалять разделы на форуме, содержащие все категории, темы и посты сразу вместе!
6. Удалять новости на главной странице, в ахиве новостей.
7. Удалять голосования на главной странице.
8. Удалять любые фотографии из фотогалереи.
9. Удалять подарки у любого из пользователей.
10. Удалить любой блок в структуре самого движка, чтобы он не отображался, к примеру чат на главной, все боковые, центральные блоки и прочее.
11. Удалять категории релизов из базы данных трекера
12. Удалять шкурки (шаблоны сайта) из базы данных трекера. (если удалить, сайт вообще не откроется)
13. Удалять страны, которые используются при регистрации из базы данных трекера
14. Удалять печати и штампы.
15. Удалять правила трекера.
16. Удалять FAQ трекера
17. Удалять страницы, блоги
18. Удалять ретрекера из аннонсера трекера
19. Удалять шаблоны релизов
20. Удалять сообщения из гостевой книги трекера.
21. Подтверждать сообщения, даже если включен режим модерирования в админке гостевой книги.
Это как бы основные моменты данной угрозы. Обратите внимание - изменилась кнопка "Удалить" практически везде на ресурсе, теперь она выполнена в виде либо большого красного крестика, либо маленького крестика где имеются материалы.
Помимо этого переделана немного загрузка картинок в чат трекера, была выяснена причина, по которой растягивает шаблон сайта на главной странице, когда пользователи кидают картинки в чат. Причина была в следующем:
Код чата предполагал, что необходимо скидывать прямую ссылку на картинку, то есть такого вида: http_://сайт_где_картинка/картинка.(jpg или png или gif)
так вот, при этом если эта ссылка не будет являться картинкой (то есть у нее не будет в конце расширения jpg или png или gif), то код автоматически определить что это ссылка, а если расширение есть, то он автоматически определяет ее как картинку, то есть подставляет соответсвующие атрибуты картики, делает уменьшенную копию в атрибутах и подставляет атрибуты java скрипта hightslide для ее красивого открытия при клике.
А если пользователь подставлял картинку в бб-коде, то есть так [img_]http_://сайт_где_картинка/картинка.(jpg или png или gif)[/img_], то уже выполнялась обычная замена на атрибуты картинки, к примеру ее оригинальный размер, без уменьшенных копий и ява скрипта. Поэтому если пользователь вставлял картинку большого разрешения именно в этих атрибутах, то она и растягивала шаблон на главной странице сайта. Если бы он к примеру скидывал бы ее обычной ссылкой, то такого бы не было бы.
после небольшой переделки - теперь как бы пользователь не поставил картинку, прямой ссылкой, либо в атрибутах [img_][/img_], будет всегда в чате отображаться уменьшенная копия, размерами 100 по ширине, пропорционально по высоте.
Единственное отличие - это то, что если пользователь скинет картинку в атрибутах мини-копии в бб-коде, то есть например так:
[_URL=адрес_ссылки_на_полную_картинку][IMG_]адрес_картинки[/IMG_][/URL_]
то в чате отобразится мини-копия картинки без ссылки для перехода на источник!!!
И при клике по ней, тоже будет открываться мини-копия картинки!!!
Поэтому вы должны скидывать теперь картинки в правильном формате. Еще раз повторюсь, это либо так:
http_://адрес_картинки/картинка.jpg - прямая ссылка на полную картинку
либо так
[img_]http_://адрес_картинки/картинка.jpg[/img_] - между тегами тоже прямая ссылка на полную картинку.
P.S. Значок _ в данных примерах подставлен для того, чтобы не срабатывал бб-код в данном сообщении, поэтому его убирайте когда будете эксперементировать.
Относительно нашего движка что позволяла делать данная уязвимость (даже страшно перечислять):
Позволяла любому обычному зарегистрированному пользователю, не имеющему даже сильно больших знаний в области интернет программирования:
1. Удалять сообщения к любому релизу на трекере, к любому пользователю на стене, да и вообще везде где есть сообщения, в том числе и деректоров, администраторов, модераторов.
2. Удалять посты (сообщения) на форуме
3. Удалять темы на форуме, содержащие сразу несколько сообщений.
4. Удалять категории на форуме, соодержащие много тем пользователей.
5. Удалять разделы на форуме, содержащие все категории, темы и посты сразу вместе!
6. Удалять новости на главной странице, в ахиве новостей.
7. Удалять голосования на главной странице.
8. Удалять любые фотографии из фотогалереи.
9. Удалять подарки у любого из пользователей.
10. Удалить любой блок в структуре самого движка, чтобы он не отображался, к примеру чат на главной, все боковые, центральные блоки и прочее.
11. Удалять категории релизов из базы данных трекера
12. Удалять шкурки (шаблоны сайта) из базы данных трекера. (если удалить, сайт вообще не откроется)
13. Удалять страны, которые используются при регистрации из базы данных трекера
14. Удалять печати и штампы.
15. Удалять правила трекера.
16. Удалять FAQ трекера
17. Удалять страницы, блоги
18. Удалять ретрекера из аннонсера трекера
19. Удалять шаблоны релизов
20. Удалять сообщения из гостевой книги трекера.
21. Подтверждать сообщения, даже если включен режим модерирования в админке гостевой книги.
Это как бы основные моменты данной угрозы. Обратите внимание - изменилась кнопка "Удалить" практически везде на ресурсе, теперь она выполнена в виде либо большого красного крестика, либо маленького крестика где имеются материалы.
Помимо этого переделана немного загрузка картинок в чат трекера, была выяснена причина, по которой растягивает шаблон сайта на главной странице, когда пользователи кидают картинки в чат. Причина была в следующем:
Код чата предполагал, что необходимо скидывать прямую ссылку на картинку, то есть такого вида: http_://сайт_где_картинка/картинка.(jpg или png или gif)
так вот, при этом если эта ссылка не будет являться картинкой (то есть у нее не будет в конце расширения jpg или png или gif), то код автоматически определить что это ссылка, а если расширение есть, то он автоматически определяет ее как картинку, то есть подставляет соответсвующие атрибуты картики, делает уменьшенную копию в атрибутах и подставляет атрибуты java скрипта hightslide для ее красивого открытия при клике.
А если пользователь подставлял картинку в бб-коде, то есть так [img_]http_://сайт_где_картинка/картинка.(jpg или png или gif)[/img_], то уже выполнялась обычная замена на атрибуты картинки, к примеру ее оригинальный размер, без уменьшенных копий и ява скрипта. Поэтому если пользователь вставлял картинку большого разрешения именно в этих атрибутах, то она и растягивала шаблон на главной странице сайта. Если бы он к примеру скидывал бы ее обычной ссылкой, то такого бы не было бы.
после небольшой переделки - теперь как бы пользователь не поставил картинку, прямой ссылкой, либо в атрибутах [img_][/img_], будет всегда в чате отображаться уменьшенная копия, размерами 100 по ширине, пропорционально по высоте.
Единственное отличие - это то, что если пользователь скинет картинку в атрибутах мини-копии в бб-коде, то есть например так:
[_URL=адрес_ссылки_на_полную_картинку][IMG_]адрес_картинки[/IMG_][/URL_]
то в чате отобразится мини-копия картинки без ссылки для перехода на источник!!!
И при клике по ней, тоже будет открываться мини-копия картинки!!!
Поэтому вы должны скидывать теперь картинки в правильном формате. Еще раз повторюсь, это либо так:
http_://адрес_картинки/картинка.jpg - прямая ссылка на полную картинку
либо так
[img_]http_://адрес_картинки/картинка.jpg[/img_] - между тегами тоже прямая ссылка на полную картинку.
P.S. Значок _ в данных примерах подставлен для того, чтобы не срабатывал бб-код в данном сообщении, поэтому его убирайте когда будете эксперементировать.


