一、XSS简介
1.xss形成的原因:
XSS攻击出现的原因主要是由于网页设计者并没有对用户可进行输入的地点进行严格的过滤,从而导致攻击者带入构建好的攻击载荷,严重危害网站及用户的信息安全。
2.XSS危害:
(1)盗取普通用户或管理员账号
(2)对企业数据库进行增删查改操作
(3)损害企业中的商业机密
(4)进行非法财产转移
(5)网站挂马
(6)控制受害用户并利用其身份攻击其他资源
3.xss的类型:
反射型:这种XSS攻击是一次性的,仅仅影响当次访问的页面;
存储型:将恶意代码发送并储存在web服务器,每当有浏览器解析执行该页面的恶意代码时,XSS攻击将伴随着攻击数据一直存在;
dom型:该类型不需要服务器进行直接的解析响应,而是通过DOM解析触发XSS,完全是基于客户端进行的攻击,无法通过服务器的安全设备进行防护。
二、pikachu-XSS攻击通关(详解)
1.反射型XSS(get)
题目中提示让输入kobe,提交后出现了kobe的照片,说明输入的数据被带入服务器执行了:
这是我们发现url中有名为message的参数传递了刚刚提交的参数:
于是我们构造payload:
message=<script>alert(1)</script>
若该网页前端没有对输入的数据进行任何的过滤,我们输入的js语句将被执行。
发现打印数字1的js语句已经被该页面执行了,xss攻击完成。
2.反射型XSS(post)
提示中说让练习xss获取cookie,给了一个admin账户和密码让我们登录:
登录后依然是一个输入框,只不过这次提交的方式变成了post,也仅仅是url不会传递参数了,我们依然使用同一种方式在输入框中传递即可;
构造payload:
<script>alert(document.cookie)</script>
发现该账户的sessionID等cookie信息已被XSS漏洞显示出来。
3.存储型XSS
存储型首先将数据发送至目标服务器,在用户使用浏览器访问服务器时返回至浏览器,若传递了恶意数据,则有可能获取用户的个人信息。
题目中这次是一个留言板,推断通过留言板的留言功能可以让每一个访问留言的用户的浏览器都解析我们留言的payload。
输入payload:
<script>alert(1)</script>
发现我们输入的js语句被解析执行了,并且每一次访问该页面时都会弹出这个页面,这就是存储型xss和反射型xss之间的区别
4.DOM型XSS
我们观察一下页面源代码,发现了如下代码段:
我们需要构造一个代码段来对该语句进行闭合,需要闭合的语句是:
<a href='"+str+"'>what do you see?</a>
我们构建payload为:
' onmouseover="alert('xss')">
这样就可以形成:
<a href='' onmouseover="alert('xss')">'>what do you see?</a>
使得其能够正常执行。
XSS攻击完成。
5.DOM型xss-x
输入一个随机在输入框里,然后在前端代码里面定位,发现定位不到,点击"有些费尽心机想要忘记的事情,后来真的就忘掉了''后出现”就让往事都随风吧“字样,这个时候再试着定位发现可以定位了:
输入payload为:
' onmouseover="alert('xss')">
XSS注入完成。
6.XSS盲打
xss注入不会直接回显在当前页面,可能在后台或者其他有可能被传输到的地方进行回显。
输入payload:
<script>alert(123)</script>
去后台查看攻击结果,后台为:/xssblind/admin_login.php
登录后台发现:
XSS攻击完成。
7.XSS过滤
有部分字符和特殊符号过滤掉了,我们可以初步判断一下那些内容被过滤掉了
首先输入payload:
<script>alert('xss')</script>
考虑可能是script标签被过滤了,这里使用大小写绕过,即将script进行大小写变换。
<SCRIPT>alert('xss')</SCRIPT>
发现绕过成功了。
8. xss之htmlspecialchars
首先了解一下htmlspecialchars
现在需要的是确定哪些符号被转义了:
双引号被过滤了
<>也被过滤了
单引号没有被过滤,我们可以使用单引号来拼接js语句,payload:
' onclick='alert(123)'
XSS攻击成功。
9.xss之herf输出
href属性的值可以是任何有效文档的相对或绝对URL,包括片段标识符和 JavaScript 代码段。如果用户选择了<a>标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表;也就是说可以直接输入javascript代码段执行。
构造payload:
javascript:alert(123)
XSS注入完成。
10.XSS之js输出
提示说输入tmac,页面上确实有回显,但是前端代码里的tmac那句话被夹在javascript隐藏了,找一下js的源码
直接在js代码中进行拼接,payload为:
';alert('xss');//
把后边的判断语句全部注释掉然后在前面用;闭合之前的js语句,中间写用于注入的xss代码; '用于闭合前面那个变量$ms;//用于注释掉后面的判断语句。
XSS攻击完成。
至此XSS攻击的介绍和pikachu靶场-xss攻击通过详解到这里就结束了,感谢大家的阅读!