跨站脚本(XSS)解释和预防

Erklärung von XSS als eine der häufigsten Schwachstellen in Webanwendungen

2023 Mid-Year Threat Report

跨站脚本(XSS)?

Cross-Site-Scripting (XSS) ist ein an Webanwendungen gerichteter Sicherheitsangriff über Code-Injektion, die schädliche Client-seitige Skripts an den Webbrowser eines Benutzers zur Ausführung sendet. 目标不受直接攻击, sondern vielmehr schwach geschützte Websites und Webanwendungen zur Durchführung von Cross-Site-Scripting-Angriffen missbraucht, 如果用户访问这些网站或. in diesen Anwendungen agieren.

Wenn ein ahnungsloser Benutzer beispielsweise eine kompromittierte Website aufruft, wird zu diesem Zeitpunkt das bösartige Skript des Angreifers geladen und im Browser des Benutzers ausgeführt. Dies kann zu Abzug/Diebstahl sensibler Daten, Sitzungs-Hijacking und vielem mehr führen.

JavaScript被许多web浏览器和平台所支持。, 已经成为XSS攻击者的首选工具, 尽管这样的攻击可以用任何语言编写, 浏览器支持的. 尽管XSS攻击已经存在了15年以上, haben sie sich als hocheffektiv erwiesen und werden aktuell immer noch als eine der 7 gängigsten Arten von Angriffen gesehen.

 

跨站点脚本的影响

当一个网站被跨站脚本感染, 许多问题很快就会出现. 可能出现的问题包括:

  • 敏感用户数据被泄露
  • 攻击者接管在线账户并模仿用户
  • 破坏网站上的内容
  • 上传恶意木马
  • 将网站重定向到有害网站

跨站点脚本对公司来说是非常有害的。, 如果它没有立即被识别和纠正. Da Unternehmen und Kunden gleichermaßen von XSS-Angriffen betroffen sein können, leiden potenziell der Ruf und die professionellen Beziehungen unter einer erfolgreichen Injektion von Malware.

Ein bedauerliches Beispiel von Cross-Site-Scripting ereignete sich in der Weihnachtssaison 2018 durch das vermehrte Auftreten der kreditkartenlesenden Malware, die als ‚Magecart‘ bekannt wurde. Die Malware nutzte eine Schwachstelle 通过注入网上收银机. 这是第一次发生如此大规模的袭击。. Die Kreditkartenangaben von Benutzern wurden aller Wahrscheinlichkeit nach auf einen vom Angreifer kontrollierten Server hochgeladen und verkauft oder zu betrügerischen Zwecken verwendet.

跨站点脚本攻击

Cross-Site-Scripting-Angriffe werden in der Regel einer der folgenden Arten zugeordnet.

  • Reflected XSS
  • Persistent XSS
  • Dom-Based XSS

Reflected XSS

Ein reflektierter XSS-Angriff verwendet eine anfällige Website, die die Daten (d. h. 恶意脚本), 由目标用户的网页浏览器发送, um dann das Ziel anzugreifen. Da das bösartige Skript vom Client selbst gesendet wird und nicht auf dem anfälligen Server verweilt, wird diese Art des Angriffs auch als „nicht persistent“ (nicht beständig) bezeichnet.

Als einfaches Beispiel eines reflektierten XSS-Angriffs könnte ein Angreifer eine URL erstellen, die ein kleines, 恶意脚本作为查询参数传递给网站, 使用易受XSS影响的搜索函数:

            http://anfaellige-website.com/search?search_term=””

Dann muss der Angreifer dafür sorgen, dass Zielpersonen diese URL in ihren Browsern aufrufen. Dies könnte durch den Versand einer E-Mail mit der URL geschehen (inklusive eines plausiblen Grundes, warum der Benutzer diese anklicken soll) oder indem die URL auf einer öffentlichen, 无漏洞网站出现, wo Benutzer sie anklicken.

当目标点击链接时, akzeptiert die anfällige Website den Abfrageparameter „search_term“ mit der Erwartung, 目标人感兴趣的价值, 因此,他们在anfaelige网站上.com danach suchen wird, obwohl der Wert tatsächlich das bösartige Skript enthält.

有搜索功能的页面, 和大多数搜索网站一样, wenn ein Benutzer etwas sucht, ein Suchfeld wie „Suche nach...“ an, 但由于易受攻击的网站没有清除search_term值, 将恶意脚本注入网站, 由目标用户的浏览器加载, 然后在浏览器中执行.

Persistent XSS

Wie der Name andeutet, wird ein persistenter XSS-Angriff auf dem anfälligen Server selbst gespeichert/gelagert. 而不是反射性攻击, 从目标发送恶意脚本的地方, können Benutzer einer anfälligen Website oder einer Web-App in ihren üblichen Interaktionen mit der anfälligen Website/App angegriffen werden.

Ein einfaches Beispiel für einen persistenten XSS-Angriff könnte ein Angreifer sein, 在论坛上发布消息, 托管在一个易受攻击的网站上. Statt des üblichen, unbedenklichen Forumpostings enthält diese Nachricht jedoch das bösartige Skript des Angreifers. 当用户访问此论坛帖子时, 将其web浏览器加载到恶意脚本并执行它.

Wie Sie erkennen können, unterscheiden sich reflektierte und persistente XSS-Angriffe vor allem darin, dass persistente XSS-Angriffe in allen Benutzern 易受攻击的网站/应用程序看到攻击的目标.

DOM-Based XSS

另一种类型的XSS攻击是基于DOM的,d。. h. 漏洞在客户端脚本中, 始终为网站/应用程序访问者提供服务. Der Angriff unterscheidet sich von reflektierten und persistenten XSS-Angriffen darin, dass die Website/App das bösartige Skript nicht direkt an den Browser der Zielperson sendet. In einem DOM-based XSS-Angriff verfügt die Website/App über anfällige Client-seitige Skripts, 将恶意脚本传递给目标用户的浏览器. Ähnlich wie ein reflektierter Angriff speichert ein DOM-based Angriff das bösartige Skript nicht auf dem anfälligen Server.

In einem einfachen Beispiel eines DOM-based XSS-Angriffs könnte dasselbe Setup wie beim reflektierten XSS-Beispiel oben verwendet werden. Der Angreifer erstellt eine URL mit einem bösartigen Skript als „search_term“ und sendet sie an potenzielle Zielpersonen.

Sobald jemand die URL anklickt, lädt der Browser die Suchfunktion der Website und die anfälligen Client-seitigen Verarbeitungsskripts. Obwohl „seach_term“ dem Backend der Website immer noch als Abfrageparameter zur Verarbeitung bereitgestellt wird, generiert die Website selbst nicht die Seite mit dem injizierten bösartigen Skript.

Stattdessen sind die anfälligen Client-seitigen Skripts der Website so gestaltet, 在目标人的搜索功能中,搜索词的值(d. h. das bösartige Skript) dynamisch lokal (also im Browser der Zielperson) zu ersetzen, 使目标的浏览器加载并执行攻击脚本.

DOM-based XSS-Angriffe zeigen auf, XSS漏洞并不局限于服务器端软件.

防止跨站点脚本攻击

Angesichts der verschiedenen Varianten von Cross-Site-Scripting-Angriffen müssen Unternehmen wissen, wie sie sich angemessen schützen und zukünftige Probleme verhindern können. Es wird zunehmend schwieriger, Websites streng zu überwachen, 因为它越来越复杂. Die Häufigkeit von Angriffen wird in Zukunft wahrscheinlich weiter steigen.

Die folgenden Empfehlungen können dazu beitragen, Ihre Benutzer vor XSS-Angriffen zu schützen:

Bereinigung der Benutzereingabe:

  • 验证以拦截潜在的恶意用户输入.
  • Codieren Sie Ausgaben, 防止潜在的恶意用户数据, 在浏览器中启动自动加载和执行.

进一步限制用户输入的使用:

  • Einsatz nur bei Bedarf.

Setzen Sie 内容安全指南 ein:

  • 提供额外的保护和减少企图的XSS攻击.

经常使用工具 扫描web应用程序中的漏洞识别软件中的XSS漏洞.