Сигурност

Извършване на атака за фалшифициране на заявки между сайтове

Извършване на атака за фалшифициране на заявки между сайтове
CSRF атаката е тази, която кара удостоверените потребители да извършват нежелани действия в уеб приложението, с което са удостоверени. Това се прави чрез външен сайт, който потребителят посещава и който задейства тези действия.

В тази статия ще получите необходимата информация от приложението, за да знаете какво трябва да направи атакуващият сайт, за да изпраща валидни заявки до уязвимия сървър. След това ще създадете страница, която симулира законните заявки и подвежда потребителя да посети тази страница, докато е удостоверен. Също така ще направите няколко повторения на основното доказателство за концепция, за да изглежда по-скоро като реална атака, където жертвата не я забелязва. Имайте предвид, че кодовият файл за тази статия може да бъде намерен в github на автора.

Приготвям се

За тази статия ще ви е необходим валиден потребителски акаунт в BodgeIt. Тази статия използва [имейл защитен] като жертва:

Как да го направим…

Първо, трябва да анализирате искането, което искате да принудите жертвата да направи. За да направите това, имате нужда от Burp Suite или друг прокси, конфигуриран в браузъра:

  1. Влезте в BodgeIt като всеки потребител и кликнете върху потребителското име, за да отидете в профила.
  2. Направете промяна на паролата. Вижте как изглежда заявката в проксито:

    Така че, това е ПОСТ искане до http: // 192.168.56.11 / bodgeit / парола.jsp, и има само паролата и нейното потвърждение в тялото.

  3. Опитайте се да направите много проста HTML страница, която репликира тази заявка. Създайте файл (дайте му име csrf-change-password.html) със следното съдържание:







  4. Сега заредете този файл в същия браузър, в който сте влезли в сесията:
  5. Кликнете върху изпращане и ще бъдете пренасочени към страницата на потребителския профил. Той ще ви каже, че паролата е успешно актуализирана.
  6. Въпреки че това доказва смисъла, външен сайт (или локална HTML страница, както в този случай) може да изпълни заявка за промяна на парола в приложението. Все още е малко вероятно потребителят да щракне върху Изпращане Можете да го автоматизирате и да скриете полетата за въвеждане, така че злонамереното съдържание да бъде скрито. Сега направете нова страница въз основа на предишната; наречете го csrf-change-password-scripted.html:


    Напълно безобидна страница


    Можете да се доверите на тази страница.
    Нищо лошо няма да се случи на вас или вашия акаунт в BodgeIt.





    Този път формулярът има параметър ID и на страницата има скрипт, който ще изпрати съдържанието си, когато страницата се зареди напълно.

  7.  Ако заредите тази страница в същия браузър, в който имате инициирана сесия BodgeIt, тя автоматично ще изпрати заявката и след това ще се покаже страницата на потребителския профил. На следващата екранна снимка на браузъра Debuggerзадайте точка на прекъсване непосредствено преди отправяне на заявката:
  8. Този последен опит изглежда по-добре от гледна точка на нападателя. Трябва само жертвата да зареди страницата и заявката ще бъде изпратена автоматично, но след това жертвата ще види Паролата ви е промененасъобщение и това със сигурност ще предизвика сигнал.
  9. Можете допълнително да подобрите атакуващата страница, като я накарате да зареди отговора в невидим кадър вътре в същата страница. Има много начини да направите това; един бърз и мръсен е да зададете размер 0 за рамката. Вашият файл ще изглежда така:


    Напълно безобидна страница


    Можете да се доверите на тази страница.
    Нищо лошо няма да се случи с вас или с вашия акаунт в BodgeIt.
    target = "target_frame">





    Забележете как целевото свойство на формуляра е iframe, дефиниран точно под него и че такава рамка има 0% височина и ширина.

  10. Заредете новата страница в браузъра, където е инициирана сесията. Тази екранна снимка показва как изглежда страницата при проверка с браузъра Инструменти за разработчици: Забележете, че обектът iframe е само черна линия на страницата и в Inspector можете да видите, че съдържа страницата на потребителския профил на BodgeIt.
  11. Ако анализирате мрежовите комуникации, предприети от вашата CSRF страница, можете да видите, че тя всъщност отправя заявки за промяна на паролата на BodgeIt:

Как работи…

Когато изпратите заявка от браузър и вече имате запазена бисквитка, принадлежаща на целевия домейн, браузърът ще прикачи бисквитката към заявката, преди да бъде изпратена. Това прави бисквитките толкова удобни като идентификатори на сесии, но тази характеристика на това как работи HTTP е и това, което го прави уязвим за атака като тази, която видяхте в тази статия.

Когато заредите страница в същия браузър, където имате активна сесия в приложение, браузърът автоматично ще прикачи бисквитката на сесията към тази заявка. Това се случва дори ако това е различен раздел или прозорец и тази страница отправя заявка към домейна, където сесията е инициирана.

Ако сървърът не потвърди, че заявките, които получава, действително произхождат от приложението, той позволява на зловреден сайт да извършва обаждания от името на легитимни, активни потребители, които посещават този зловреден сайт, докато са удостоверени в целевия домейн.

В тест за проникване на уеб приложение, първият код, който сте използвали, този с двете текстови полета и Изпращане бутон, може да е достатъчен, за да докаже наличието на недостатък в сигурността. Изпитването за проникване на приложението обаче може да бъде част от друг ангажимент, като социално инженерство или упражнение на червения екип. В този случай ще са необходими допълнителни усилия, за да се попречи на жертвата да подозира, че нещо се случва.

В тази статия сте използвали JavaScript за автоматизиране на изпращането на заявката, като сте задали събитието onload на страницата и сте изпълнили метода за изпращане на формуляра във функцията за обработка на събития. Също така сте използвали скрит iframe, за да заредите отговора на промяната на паролата, така че жертвата никога не вижда съобщението, че паролата му е променена.

Ако тази статия ви е била интересна, можете да разгледате Готварска книга за тестване на уеб проникване на Kali Linux - второ издание за да откриете най-често срещаните уязвимости в мрежата и да предотвратите тяхното превръщане в заплаха за сигурността на вашия сайт. Готварска книга за тестване на уеб проникване на Kali Linux - второ издание ви дава уменията, необходими за покриване на всеки етап от тест за проникване - от събиране на информация за системата и приложението до идентифициране на уязвимости чрез ръчно тестване.

Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...
Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...