Днес за пореден път се доказа твърдението, че добрия програмист не пише само функционалност, която да работи, а такава, която е съобразена с множество фактори – скорост, сигурност, логичност. Този път сайтовете са Министерството на Образованието и Науката и Министерство на Вътрешните Работи и новинарския сайт OFFNEWS.BG бяха мишената използвайки очевидно една и съща търсачка. И да ви кажа честно – срам е, че някой не си е escape–нал параметрите за да предтврати един прост XSS, които потребителя подава. Това е нещо тривиално, нещо, което всеки, който пише код трябва да знае и използва. Защото знаете – когато пишем никога не трябва да имаме доверие на потребителите. Ни-ко-га.
В случая уязвимия параметър е при търсене – search****** (при offnews е qstr) и там в комбинация с HTML атрибута <img src , който се използва за зареждане на images, можем да заредим ресурс от отдалечен източник.
Целия линк изглежда така:
http://www.mon.bg/?go=search&search******= %3Cimg+src%3D%22http%3A%2F%2Fs13.postimg.org%2Fm07bzeoqv% 2F12631342_506075736263709_3144604934906137506_n.jpg%22+%2F%3E
Използвайки URL Decode tool го показвам по-прегледно:
http://www.mon.bg/?go=search&search******= <img src=”http://s13.postimg.org/m07bzeoqv/12631342_506075736263709_3144604934906137506_n.jpg” />
Атаката се нарича Cross-Site Scripting и дефинирана накратко – може да заредите злонамерен код от друг източник. Така например аз мога да модифицирам горния линк и вместо image да подкани браузъра да зареди някакъв JS, който да ви открадне cookie-тата като на всичкото отгоре вие като потребители ще видите, че е нещо от сайта на МОН и шанса да го отворите е доста голям.
А защо се казва XSS като определено съкращението трябва да е CSS? Е – вече си отговорихте :) CSS е било заето много по-отдавна и са си го избрали такова. Пък и XSS звучи яко.
Ако вие интересно в OWASP.org има статия за това какво представлява XSS, има и доста полезни линкове (както за програмисти така и за QA), а тук можете да намерите и списък с най-честите XSS атаки.
Темата е супер интересна и ако някой иска да разпиша повече за нея може да пишете в коментарите по-долу.
А един от първите ми XSS анализи беше преди няколко години като преглеждах от любопитство (и с разрешение, че да не ям бой после :) ) сайта на мой приятел, който се занимава с уеб дизайн и изработка на сайтове – SEO-Uslugi и там доста си поиграх. Намерихме 1-2 малки неща и се оказа, че XSS не е чак толкова рядко срещано явление колкото си мислих.
Note – поради факта, че бъга не е фикснат съм скрил параметъра. Не злуопотребявайте. Или го правете. Но на ваша отговорност :)
Note2 – Току-що оправиха проблема така, че върнах обратно цензурираните стрингове :)
Note3 – Много note* станаха :) Намери се същя проблем в сайта на МВР така, че пак крия стринга и повече няма да го показвам. Ъпдейтвам и статията.
01/07/2020 at 09:22
Най-добрият ред досега, „добрият програмист не пише само функционалност, която работи, но и такава, която е в съответствие с много фактори – скорост, сигурност, логика“. И благодаря за обяснението на кръстосания скрипт на сайта. Малката небрежност на програмиста може да доведе до опустошителни щети за бизнеса. За това са нужни години, за да бъдат възстановени отново.