1、原理解释
1.1 什么是XSS
XSS是跨站脚本攻击(Cross Site Script) 。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该网页时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
XSS属于前端代码注入:用户输入的数据被当做前端代码执行,主要研究的是Js和如何触发Js,Js可以操控游览器。
1.2 XSS分类
1 )XSS 类型
存储型:存储型XSS又被称为持久性XSS,存储型XSS是最危险的--种跨站脚本。恶意语句->服务器->存储数据库内->服务器回显给任何访问者(无需用户交互)
反射型:反射型XSS也被称为非持久性XSS。 恶意URL->服务器->不经过数据库->服务器回显给点击恶意URL的人(需要用户交互)
DOM型:基于DOM型的XSS是不需要与服务器端交互的,它只发生在客户端处理数据阶段。恶意语句->游览器>游览器解析
DOM的全称为DocumentObjectModel,即文档对象模型,Dom是Js用来操纵浏览器和网页显示内容的接口()。
- document.body 提取Body信息
- document.domain提取当前页面域名
- document.lastModified返回页面时间 (检测页面是否是静态的)
- document.write改变当前页面 接收native编码
下面是一段经典的DOM型XSS示例。
<script>
var temp = document.URL ; //获取URL
var index = document.URL.indexOf ("content=") +4;
var par = temp.substring(index) ;
document.write(decodeURI(par) ) ; //输入获取内容
</script>
上述代码的意思是获取URL中content参数的值,并且输出,如果输入htp://www.secbug.org/dom.html? content =<scriptalert(xs)</script>,就会产生XSS漏洞。
2 )详细介绍
标签风格: <script>a</script>
伪协议触发: <a href=javascnipt如:alert(1)>1</a>
<a href="javascript:a" οnmοuseοver="alert(/xss/)">aa</a>
<a href="" οnclick=alert('xss')>a</a>
<a href="" οnclick=eval(alert('xss'))>aa</a>
事件方法:<img src=1 οnerrοr=alert (1)/>
<img src="1" οnerrοr=eval("alert('xss')")>
<img src=1 οnmοuseοver="alert(1)">
//鼠标指针移动到元素时触发
<img src=1 οnmοuseοut="alert(1)">
//鼠标指针移出时触发
οninput=alert(1) // oninput()是在input标签内输入内容触发
οnfοcus=alert(1) autofocus // 焦点事件
一般结合短链接(网上短链接平台),将长的明显的URL生成短的隐藏的URL。
1.3 JS介绍
前端代码(开源)
HTML:网页的框架
css:把网站变的更好看
Javascript (Js):让网页功能更强大
Js:
1、读取浏览器信息
2、偷偷发送数据包(异步传输)
3、他可以窃取cookie
[先读取你的cookie然后偷偷发送数据包给黑客,黑客收到cookie然后登录你的用户]
解析一篇 HTML 文档时主要有三个处理过程:HTML 解析,URL 解析和 JavaScript 解析。所以可以三种编码混合顺序来绕过。
二 XSS实战
2.1 XSS漏洞探测
1)输入特殊值
2)查看源代码
3)尝试弹窗
</h2></center><script>a</script>
发现弹窗失败,查看源代码,被HTML实体编码了
4)绕过
我们发现keyword关键字和搜索框内一样
检查元素发现是””闭合
输入”aaa
“也被编码了,无法闭合
(我们发现f12和右键查看源代码里的value后面不一致,一个是单引号,一个双引号。原因是游览器有兼容性,实质是单引号,看源代码的。)
用标签内的触发方式,使用事件:
' οninput=alert(1) />// oninput()是在input标签内输入内容触发
' οnfοcus=alert(1) autofocus // 焦点事件
2.2 XSS 平台
随着XSS漏洞的兴起,一些XSS漏洞利用框架也随之出现,其中比较优秀的有BeEF、XSS Proxy、Backframe。
XSS框架是一组“JavaScript工具集合”,比如,键盘输入记录、盗取Cookie、表单击劫持等。使用起来非常简单,完全不需要编写代码,这就是框架的作用。
这种平台有很多,可以找一个免费的.
(1)新建项目
(2)填写基本信息
(3)很多xss利用代码,选择一个测试
4)当有人访问了含有你的XSS代码的页面时,你的项目就会收到它的具体信息,包括cookie信息
三、高级利用
3.1 beef
(1)一个XSS利用神器,在kali中已经集成
(2)直接打开,出现两个网址:
第一个Web UI : 是beef在网页中打开的网址,访问它,用户名,密码都是beef。
(注意,你把网址中的127.0.0.1改成你机器真正的IP也可以登陆成功,kali中,ifconfig命令可以查看你的IP)
第二个Hook:使用来钓鱼的语句,把IP改成你真实的IP,如下图:
(3)把钩子语句放到目标游览器的一个html页面里,等待受害者游览这个页面
发现上勾着(我的另一台虚拟机,别让游览器把JS语句禁止了)
工具的其它功能很多,不一一介绍,命令模块下可以执行很多shell命令
安全学习交流群:687398569