XSS漏洞个人总结

目录

#XSS跨站漏洞产生原理,危害,特点?

#XSS跨站漏洞的分类:反射型,存储型,DOM型

#常用的测试语句

#XSS 平台及工具使用  

 #httponly绕过

#WAF绕过及安全修复


#XSS跨站漏洞产生原理,危害,特点?

原理:

跨站脚本攻击(xss)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

xss漏洞通常是通过php的输出函数将javascript代码输出到前端html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。比如:print、print_r、echo、printf、sprintf、die、var_dump、var_export 等等

危害:

常规用到的是盗取cookie、js做钓鱼攻击、流量指向等。主要是盗取管理员的会话和cookie信息,就是我们常说的管理员凭证,就意味着得到后台权限,可以直接利用。还能配合别的漏洞,比如可以和网页木马结合,扔到那里去跳转到网马地址,网马地址被执行后续就控制一些权限

浏览器版本:

        浏览器的安全策略问题,所以尽量使用低版本的浏览器来做XSS漏洞,高版本会过滤js本地的一些脚本的加载使攻击失效。

常出现的场景:(代码审计关键处)

        文章发表、评论、留言、问卷、注册资料的地方、修改资料的地方等

#XSS跨站漏洞的分类:反射型,存储型,DOM型

从产生层面,具体区别,危害等级等讲解

产生层面:
反射型XSS产生于后端服务器
存储型XSS产生于后端服务器
DOM型XSS产生于前端定义的JS函数中
具体区别:
反射型:
<非持久型> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

浏览器发包 x= <恶意代码> => x.php接受 => 回包,在HTML中只呈现出内容一次

存储型:
<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

浏览器发包 x= <恶意代码> => x.php接受 => 写入数据库某个表中 => 每次访问到x.php都会呈现内容

DOM型:
客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM型XSS漏洞。

浏览器发包 x=<恶意代码> => 本地浏览器前端代码JS函数=>回显内容,不经过后端处理

#常用的测试语句

#XSS 平台及工具使用  

1、结合beef-xss 使用

http://t.csdn.cn/5kIC0

2、结合XSS平台-XSS安全测试平台 (XSS平台)

案例演示

1、注册

2、新创建一个我的项目

3、选择自己需要的功能,打钩

4、查看代码

5、把这些跨站代码弄到目标攻击的网站

6、等管理员查看后台留言板的时候

7、发现请求了这个地址。在平台上就有信息了

 #httponly绕过

什么是HttpOnly?

如果HTTP响应头中包含HttpOnly标志,只要浏览器支持HttpOnly标志,客户端脚本就无法访问cookie。因此,即使存在跨站点脚本(XSS)缺陷,且用户意外访问利用此漏洞的链接,浏览器也不会向第三方透露cookie。如果浏览器不支持HttpOnly并且网站尝试设置HttpOnly cookie,浏览器会忽略HttpOnly标志,从而创建一个传统的脚本可访问得到cookie。

作用:仅仅是防止通过js脚本读取到cookie信息
虽然设置了httponly之后拿不到cookie,但是还是存在xss跨站语句,阻止的仅仅是获取cookie

开启Httpponly后,可通过别的方式攻击

登陆后台权限方式
1.以cookie形式
2.直接账号密码登录:
保存账号密码读取:通过读取他保存在本地的数据
(需要xss产生于登录地址,利用表单劫持)

type、id、name通过查看网站源代码中的登录框表单

没保存账号密码读取:通过表单(登录框)劫持数据
(产生在后台的XSS,例如存储型XSS留言等)

在这里插入图片描述

#WAF绕过及安全修复

WAF身份认证阶段的绕过

        0x01 伪造搜索引擎

        早些版本的安全狗是有这个漏洞的,就是把User-Agent修改为搜索引擎,便可以绕过,进行        sql注入等攻击,这里推荐一个谷歌插件,可以修改User-Agent,叫User-Agent Switcher

 

        0x02 伪造白名单特殊目录

360webscan脚本存在这个问题,就是判断是否为admin dede install等目录,如果是则不做拦截,比如GET /pen/news.php?id=1 union select user,password from mysql.user可以改为

GET /pen/news.php/admin?id=1 union select user,password from mysql.user

或者GET /pen/admin/..\news.php?id=1 union select user,password from mysql.user

        0x03 直接攻击源站

这个方法可以用于安全宝、加速乐等云WAF,云WAF的原理通过DNS解析到云WAF,访问网站的流量要经过指定的DNS服务器解析,然后进入WAF节点进行过滤,最后访问原始服务器,如果我们能通过一些手段(比如c段、社工)找到原始的服务器地址,便可以绕过。

WAF数据包解析阶段的绕过

0x01 编码绕过最常见的方法之一,可以进行UrlEncode。

0x02 修改请求方式绕过,大家都知道cookie中转注入,最典型的修改请求方式绕过,很多的asp,aspx网站都存在这个问题,有时候WAF对GET进行了过滤,但是Cookie甚至POST参数却没有检测。还有就是参数污染,典型例子就是multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF。

0x03 复参数绕过例如一个请求是这样的

GET /pen/news.PHP?id=1 union select user,password from MySQL.user

可以修改为

GET /pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user

很多WAF都可以这样绕

WAF触发规则的绕过

WAF在这里主要是针对一些特殊的关键词或者用法进行检测。绕过方法很多,也是最有效的。

  • 特殊字符替换空格。用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的安全狗,在sqlserver中可以用/**/代替空格

  • 特殊字符拼接。把特殊字符拼接起来绕过WAF的检测,比如在Mysql中,可以利用注释/**/来绕过,在mssql中,函数里面可以用+来拼接,例如GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')可以改为GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')

  • 注释包含关键字在mysql中,可以利用/!/包含关键词进行绕过,在mysql中这个不是注释,而是取消注释的内容。例如,GET /pen/news.php?id=1 union select user,password from mysql.user可以改为GET /pen/news.php?id=1 /!union/ /!select/ user,password /!from/ mysql.user

参考链接:XD安全渗透 学习笔记 | XSS漏洞阶段

xss-lab靶场部分writeup:http://t.csdn.cn/o1TiU

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dues_D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值