XSS远程代码执行

DOM型

脏数据的输入

1、document.referer

以上代码输出了document.referer属性,而第一次访问该页面的时候并没有该属性,所以我们构造一个含有脚本代码的url来产生referer,当单击连接时,便能执行XSS代码

2、location
使用location.href能管理页面法人URL

脏数据输出

输出在这里指定是能使字符串在页面中输出的方法或函数,比如innerHTML、document.write等	 

1、测试和发掘DOM型XSS输出对对象的流程
跟踪输出函数的变量,比如首先找到document.write等会造成危害的地方,然后回溯变量与函数的调用过程,查看用户能否控制输入

存储型

输入代码后不立即执行而是存储到数据库中,

再次访问存储代码的那个数据库条目就会执行输入的代码
读取document.cookie时会得到当前文档的所有cookie
存储型XSS可以通过使用beef来使用可以使得操作时获取更多的方便与更多的内容

反射型

反射型XSS攻击类似于DOM型

Document 对象属性

body 提供对 元素的直接访问。对于定义了框架集的文档,该属性引用最外层的 。
cookie 设置或返回与当前文档有关的所有 cookie。
domain 返回当前文档的域名。
lastModified 返回文档被最后修改的日期和时间。
referrer 返回载入当前文档的文档的 URL。
title 返回当前文档的标题。
URL 返回当前文档的 URL。

Document 对象方法

方法 描述
close() 关闭用 document.open() 方法打开的输出流,并显示选定的数据。
getElementById() 返回对拥有指定 id 的第一个对象的引用。
getElementsByName() 返回带有指定名称的对象集合。
getElementsByTagName() 返回带有指定标签名的对象集合。
open() 打开一个流,以收集来自任何 document.write() 或 document.writeln() 方法的输出。
write() 向文档写 HTML 表达式 或 JavaScript 代码。
writeln() 等同于 write() 方法,不同的是在每个表达式之后写一个换行符。

Document 对象描述

HTMLDocument 接口对 DOM Document 接口进行了扩展,定义 HTML 专用的属性和方法。
很多属性和方法都是 HTMLCollection 对象(实际上是可以用数组或名称索引的只读数组),其中保存了对锚、表单、链接以及其他可脚本元素的引用。
这些集合属性都源自于 0 级 DOM。它们已经被 Document.getElementsByTagName() 所取代,但是仍然常常使用,因为他们很方便。
write() 方法值得注意,在文档载入和解析的时候,它允许一个脚本向文档中插入动态生成的内容。
注意,在 1 级 DOM 中,HTMLDocument 定义了一个名为 getElementById() 的非常有用的方法。在 2 级 DOM 中,该方法已经被转移到了 Document 接口,它现在由 HTMLDocument 继承而不是由它定义了。

过滤

输出编码
显示 实体名字 实体编码
< < <
> > >
& & &
" " "
‘ &#39
htmlspecialchars()函数可以将以上五种HTML特殊字符转换成字符实体编码
使用’ οnmοuseοver=alert(1)// 可以不使用’<‘与‘>’
大小写绕过 对输入的字符进行大写小写交替,书写,也可以尝试大写中包含小写
黑名单绕过 不使用黑名单内的属性,需要尝试进行辨别
编码绕过 对输入进行html编码
oncilck触发
onclick是鼠标点击事件:


绕过
1、onmouseenter事件:<div οnmοuseenter=“alert(“xss”)”>当用户鼠标移动到div上时就会触发
2、在属性和= 之间插入一个空格:
可以被编码绕过的属性
href=
action=
formaction=
location=
on*=
name=
background=
poster=
src=
code=
data= /只支持base64

XSS可能带来的危害
网络钓鱼(包括盗取账号)
窃取用户cookie
劫持用户(浏览器)会话
强制弹出广告页面刷流量
网页挂马
进行恶意操作(例如删除文章、篡改页面信息等)
进行大量的客户端攻击(如DDOS攻击)
获取客户端信息(例如用户的浏览历史、真实IP、开放端口、盗窃企业重要的具有商业价值的资料等)
空hi在受害者机器向其它网站发起攻击
结合其它漏洞(如CSRF漏洞,实施进一步的作恶)
提升用户权限(包括进一步渗透网站)
传播跨站脚本蠕虫等

上一篇:xss 存储型盲注


下一篇:XSS--设置httponly后的利用方式