pikachu-master的xss

一.前言

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
    1.反射性XSS;
    2.存储型XSS;
    3.DOM型XSS;

二.原因

XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
  输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

三.xss攻击

1.反射型xss(get)

(1)打开页面之后,我们看见Which NBA player do you like?

 (2)我们查看一下提示输入kobe,我们打开开发者工具可以看见——<img src="">,知道是xss攻击

(2所以我们使用最基础的xss攻击,在上一篇说过什么是最基础的xss攻击,我们输入到一半发现无法输入,我们修改maxlength="200",我们可以看到弹窗

 2.反射性xss(post)

我们先讲一下什么是post利用方式:POST型的漏洞一般是使用表单方式进行提交,无法直接使用
URL进行攻击。

xss反射型(post)利用方式

  • 攻击者伪造表单自动提交页面
  • 用户request伪造页面,触发表单
  • 页面js自动post表单数据,触发xss。访问存在post型xss漏洞的网站
  • 执行js窃取cookie
  • 攻击者利用cookie伪造用户登录,造成危害

(1)我们打开页面发现是一个登录页面,我们输入用户名和密码——admin/123456

(2)登录进去之后, 我们输入kobe,发现和前面一模一样,所以我们输入<script>alert(/xss/)</script>

 3.存储型xss

存储型xss一般发生在留言板或者标签里面,而且一直存储在服务器里面,只要刷新就会弹窗

(1)打开之后是一个留言板,

 (2)我们直接输入<script>alert(/2/)</script>,为了和之前用区分,因为我之前测试过xss,害怕混合

(3)我们也可以使用<img src=1 οnerrοr=alert(/6/)>,进行攻击 <img src>是图片发送攻击

 

 4.DOM型xss

 我们先了解什么是DOMxss,DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

可能触发DOM型XSS的属性

document.referer属性

window.name属性

location属性

innerHTML属性

documen.write属性

(1)我们直接输入<script>alert(/xss/)</script>,可以看到没有发生弹窗

 (2)我们查看代码,可以知道要使用闭合标签,'>来闭合前面的<a href=>,我们使用'><img src=1 οnerrοr=alert(/xss/)>使<img src=1 οnerrοr=alert(/xss/)>成为一个独立的字符

(3)我们使用'><img src="https://www.baidu.com/img/bd_logo1.png">,弹出百度的页面

 5.DOM型xss_x

这个和前面的DOM型差不多,只是这个要点击一个链接才可以弹窗

(1)我们输入'><img src=1 οnerrοr=alert(/xss/)>,然后就会出现链接

 (2)我们点击链接,就会弹窗

 6.xss盲打

(1)盲打,也就是说只有后台才能看到输入的内容,从前端是无法判断是否存在XSS的。一般会联合beef等平台,利用xss盲打对获取管理员的cookie信息等,之后对带着一连串的攻击套路…

 (2)我们输入<script>alert(/xss/)</script>,看到页面没有反应

 (3)页面虽然没有回显,但是肯定会提交到后台,如果后台没有做严格的过滤的话,管理员登录后台管理页面的时候,如果后台把我们的内容输出,那么后台管理员就有可能会遭受到我们的的XSS攻击,点一下提示把文件路径加入到url后面进入登录后台,使用默认账号登录,发现js语句确实生效了。

 (4)我们也可以插入<img src="">

7.xss之过滤 

1)前端绕过,直接抓包重放,或者修改html前端代码(前端的过滤只能作为辅助手段,是特别容易被绕过的)
2)大小写(一个大写字母一个小写字母)
3)拼凑<scri<script>pt>alert(111)</scri></script>pt>

(1)我们先输入最基础的xss,可以看到被过滤了

 (2)我们使用大小写绕过<SCRipt>alert(/xss/)</SCript>

 8.xss之htmlspecialchars

htmlspecialchars() 函数把预定义的字符转换为HTML实体,预定义的字符是:

  • &(和)      转为 &amp
  • "(双引号)     转为 &quot
  • '(单引号) 转为 &#039
  • <(小于号)     转为 &lt
  • >(大于号)     转为 &gt

 (1)我们输入<script>alert(/xss/)</script>,看到有'>,我们要使用闭合标签

 (2)我们使用闭合'><script>alert(/xss/)</script>,可以看到<>被过滤了

 (3)所以我们使用' οnclick=alert(1111) '

9.xss之href输出

(1)我们输入最基础的xss,看见有闭合标签

(2)发现是 htmlspecialchars() 过滤,  但是这次过滤了单引号:

服务端进行了两次关键的处理:

  • 输入的时候只允许 http 或 https 开头的协议,才允许输出
  • 其次再进行htmlspecialchars处理

这里也可以用JavaScript伪协议来绕过:javascript:alert(xss) // JavaScript伪协议

(3)点击链接即可

10. xss之js输出

它会把我们的输出放到js中,然后对这个变量进行判断,然后再输出,我们可以构造一个闭合,首先一个单引号闭合本身$ms的语句。然后使用一个《/script》闭合页面的<script>然后插入文明自己的js ('</script><script>alert('xss')</script>)

</script><script>alert(/xss/)</script>

 pikachu-master的xss攻击到这里也就结束了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MS02423

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

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

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

打赏作者

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

抵扣说明:

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

余额充值