一、xss跨站漏洞导图
![](https://i-blog.csdnimg.cn/blog_migrate/709e8a4aac93969e202bd8d3160953b3.png)
二、XSS跨站漏洞概述
1.产生原理,危害以及特点:
前端提交的一些参数转换为js代码,可以回显一些想要的东西;其产生层面是在前端;常见的一些输出性的函数与此漏洞有关;漏洞的危害收到js代码的影响,同时也收到浏览器内核的影响。
实例解释:
首先写一个简单的验证代码。
![](https://i-blog.csdnimg.cn/blog_migrate/04c93fbef79bbd93ea7c110a16291b21.png)
输入js代码,网页成功执行。
![](https://i-blog.csdnimg.cn/blog_migrate/69c54ebbedee23704430672303b3a28d.png)
不同的浏览器内核对XSS漏洞的影响。
![](https://i-blog.csdnimg.cn/blog_migrate/e60a52a1ebd62c3ac52aa5964b56ddd7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b3164725f2a85a884b9a8a76c8a98e2e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/47f991ea1de4477c34747c864ec20c70.png)
2.分类:
反射型(非持续型)
存储型(持续型)
DOM型
三、靶场实操
1.反射型(非持续型)
打开对应靶场。
![](https://i-blog.csdnimg.cn/blog_migrate/f794967825f795986509c8b22abbfdc0.png)
在输入框输入“didi”。
![](https://i-blog.csdnimg.cn/blog_migrate/a13ddbfa2fb95023abcdd9e564bdb0b9.png)
根据上图可知,输入的内容会在网页内进行显示。
由此想到如果将输入的内容更改为js语句,则js语句也会在网页内显示。
而如果它显示了,因为这个页面是在浏览器上运行的,所以浏览器会识别到你输入的js代码,并对其进行执行,从而形成了跨站漏洞。
在输入框内输入如下代码:
#' onclick="alert(2)">
--->鼠标触发事件
![](https://i-blog.csdnimg.cn/blog_migrate/2a8d5b7d4e4bd01c234a77b9d404a2e7.png)
直接粘贴代码后发现搜索框有长度限制,解决的办法有很多:
可以右键后点击检查,将长度改大。
![](https://i-blog.csdnimg.cn/blog_migrate/a25e216d630b85a83ecd5053de245a8a.png)
也可以更改输入代码使其变简短。
<script>alert(1)</script>
还可以直接在url内进行输入。
![](https://i-blog.csdnimg.cn/blog_migrate/cd501bc07d3a21eca0a4a3ae577de89e.png)
选取一种方法完成输入后可以看到网页成功执行了js命令,浏览器窗口弹出了“1”。
![](https://i-blog.csdnimg.cn/blog_migrate/c2692930c83bdaf0ad1a735766252594.png)
选择图示位置后右键点击检查,可以看到刚刚输入的内容被当作js代码了。
![](https://i-blog.csdnimg.cn/blog_migrate/a75ddbb0e43ceaa0cda9b57ddb3fd10a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8fa2cdd6f4f0d66ba3f8bbeeda9d286b.png)
2.存储型(持续型)
打开对应靶场。
![](https://i-blog.csdnimg.cn/blog_migrate/52eaa7c795a09db377ae59620e5650f9.png)
首先在留言板内输入“1”后提交。
![](https://i-blog.csdnimg.cn/blog_migrate/be7e1023b5dad1c37c46da905fe390f2.png)
刷新页面,发现刚刚输入的内容还在。
![](https://i-blog.csdnimg.cn/blog_migrate/6f917e3402f26a68ecd8c0e7c88dca49.png)
在留言板内输入下面代码并提交。
<script>alert(1)</script>
可以看到网页窗口又弹出了“1”。
![](https://i-blog.csdnimg.cn/blog_migrate/e9f5585fd04961f49dcae7fec877e6df.png)
刷新网页或者从其它网页内切入,发现每次浏览器依然会有弹窗出现。
![](https://i-blog.csdnimg.cn/blog_migrate/c14ed52cc6201f6c2734782b4f851eff.png)
由此可知,网站是将代码存储到了数据库里面。
如果输入的是攻击代码,那么这个攻击就会一直持续到将此代码删除掉为止。
3.DOM型
![](https://i-blog.csdnimg.cn/blog_migrate/3ed8aee9ad3ba02ec1b6fbdb220b04aa.png)
第一类:点击其它页码后,网址发生明显变化。
![](https://i-blog.csdnimg.cn/blog_migrate/237ace5a55f58a7a21a3f66bcd98e297.png)
![](https://i-blog.csdnimg.cn/blog_migrate/38c157992941dbf10b763ce67135e685.png)
此情况是通过操作参数来实现的。
第二类:点击“查看更多”后,内容增加,但是网址没有发生变化。
![](https://i-blog.csdnimg.cn/blog_migrate/5e08ec24dfd3bb432d263c788d8739d7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cf94ece7d625a5c5157e0e904bad3451.png)
此情况是通过操作htlm里的代码来实现的。
打开对应靶场。
![](https://i-blog.csdnimg.cn/blog_migrate/4ac9b2af8dfdfcce822d6f1b90a8145f.png)
在输入框内随便输入一些内容后提交,可以看到如下页面。
![](https://i-blog.csdnimg.cn/blog_migrate/c7729128eca6e52927e0b84f09fd0d96.png)
点击下面的一行文字后,会新出现一行文字。
![](https://i-blog.csdnimg.cn/blog_migrate/4c27ce32eba75afdce0a0f6fd35caeb4.png)
html代码或者js代码编写的网页在客户端和服务端看到的代码内容是一样的。
php代码编写的网页客户端和服务端看到的源代码是不同的,
客户端的代码是被编译后的代码。
js代码
服务端
![](https://i-blog.csdnimg.cn/blog_migrate/ea2ae11892644bbe5591747e3c8c94f1.png)
客户端
![](https://i-blog.csdnimg.cn/blog_migrate/949292fa475305bfa5388efe745f91f2.png)
PHP代码
服务端
![](https://i-blog.csdnimg.cn/blog_migrate/5e4b79843ccbdcb59201e43e1a4045a5.png)
客户端
![](https://i-blog.csdnimg.cn/blog_migrate/dda1ef2946fb4cb55350afb4abce6b6f.png)
4.三种类型总结:
反射型:
发包x=didi===>x.php===>回包
存储型:
发包x=didi===>x.php===>写到数据库某个表中===>x.php回包
dom型:
发包x=didi===>本地浏览器静态前端代码===>x.php
四、跨站漏洞常见攻击以及攻击层面
举例:单页面的网站(在网站内直接要求输入信息进行提交)。
这种页面一般会有一个后台,用来查看用户输入的个人信息,用户输入什么页面内就显示什么,如果用户输入的是跨站代码,那么就可能被执行,因此可以想到利用xss漏洞。
![](https://i-blog.csdnimg.cn/blog_migrate/f529ff3400d5c9402ea4ba68cb5ab3d1.png)
在留言板内输入带有js语句的内容后点击提交。
![](https://i-blog.csdnimg.cn/blog_migrate/55c088cd62bf62655d37f26b35ee10f2.png)
页面返回了错误信息,原因是网站存在过滤。
![](https://i-blog.csdnimg.cn/blog_migrate/b1ec88cb4979c9ea54c897ef1586f6e6.png)
修改留言板内容再次尝试提交,发现提交成功。
![](https://i-blog.csdnimg.cn/blog_migrate/03ffe8814603552e985e1ff36e78e558.png)
此时来到管理员视角,发现有新的留言。
![](https://i-blog.csdnimg.cn/blog_migrate/2e7157b207fa94dcd8bb3e8e79adad7f.png)
当管理员打开页面进行查看时,js代码便执行成功了,但是留言板上显示的内容是正确的,没有显示出刚刚输入的js代码。
因为此时js代码已经写到网页中了。
![](https://i-blog.csdnimg.cn/blog_migrate/a67f4c145ad18d43bb76879e86d72257.png)