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?

pikachu-master的xss_第1张图片

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

pikachu-master的xss_第2张图片

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

pikachu-master的xss_第3张图片

pikachu-master的xss_第4张图片 2.反射性xss(post)

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

xss反射型(post)利用方式

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

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

pikachu-master的xss_第5张图片

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

pikachu-master的xss_第6张图片

pikachu-master的xss_第7张图片

pikachu-master的xss_第8张图片

 3.存储型xss

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

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

pikachu-master的xss_第9张图片

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

pikachu-master的xss_第10张图片

(3)我们也可以使用,进行攻击 是图片发送攻击

pikachu-master的xss_第11张图片 pikachu-master的xss_第12张图片

 4.DOM型xss

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

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

可能触发DOM型XSS的属性

document.referer属性

window.name属性

location属性

innerHTML属性

documen.write属性

pikachu-master的xss_第13张图片

(1)我们直接输入,可以看到没有发生弹窗

pikachu-master的xss_第14张图片

 (2)我们查看代码,可以知道要使用闭合标签,'>来闭合前面的,我们使用'>使成为一个独立的字符

pikachu-master的xss_第15张图片

pikachu-master的xss_第16张图片

(3)我们使用'>,弹出百度的页面

pikachu-master的xss_第17张图片

 5.DOM型xss_x

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

(1)我们输入'>,然后就会出现链接

pikachu-master的xss_第18张图片

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

pikachu-master的xss_第19张图片

pikachu-master的xss_第20张图片

 6.xss盲打

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

pikachu-master的xss_第21张图片

 (2)我们输入,看到页面没有反应

pikachu-master的xss_第22张图片

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

pikachu-master的xss_第23张图片

pikachu-master的xss_第24张图片

 (4)我们也可以插入

pikachu-master的xss_第25张图片

7.xss之过滤 

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

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

pikachu-master的xss_第26张图片

 (2)我们使用大小写绕过

pikachu-master的xss_第27张图片

pikachu-master的xss_第28张图片

 8.xss之htmlspecialchars

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

  • &(和)      转为 &
  • "(双引号)     转为 "
  • '(单引号) 转为 '
  • <(小于号)     转为 <
  • >(大于号)     转为 >

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

pikachu-master的xss_第29张图片

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

pikachu-master的xss_第30张图片

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

pikachu-master的xss_第31张图片

9.xss之href输出

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

pikachu-master的xss_第32张图片

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

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

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

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

pikachu-master的xss_第33张图片

(3)点击链接即可

pikachu-master的xss_第34张图片

10. xss之js输出

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

pikachu-master的xss_第35张图片

pikachu-master的xss_第36张图片

pikachu-master的xss_第37张图片

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

 

你可能感兴趣的:(web安全)