浅谈XSS

首发地址:我的个人博客
前言 本文章产生的缘由是因为专业老师,让我给本专业的同学讲一哈SQL注入和XSS入门,为了备课,于是产生了这篇文章。
一、课程目标

听完这节课你能学到些什么
  • 知道什么是Xss
  • 实现最基础的Xss
  • 学会使用Beef Xss工具
  • 了解一些Web安全基本知识
二、初识XSS 1 什么是XSS攻击
? XSS(Cross Site Script),跨站脚本攻击,OWASP Top10之一
? 向网页内嵌入恶意Java script代码
2 XSS分类
? 反射型 -- 前端->后端->前端
? 存储型 -- 前端->后端->数据库->前端
? DOM型 -- 前端
3 XSS常用攻击手段
  • 窃取网页浏览中的cookie值
当能够窃取到用户 Cookie 从而获取到用户身份时,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
  • 钓鱼欺骗:
最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼 JavaScript 以监控目标网站的表单输入。
  • 网站挂马
跨站时利用 IFrame 嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
  • 垃圾信息发送
比如在 SNS 社区中,利用 XSS 漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
  • 劫持用户 Web 行为
一些高级的 XSS 攻击甚至可以劫持用户的 Web 行为,监视用户的浏览历史,发送与接收的数据等等。
  • XSS 蠕虫
【浅谈XSS】XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施 DDoS 攻击等。
三、初试XSS 1 XSS初体验
往DVWA靶场插入下方JS,会弹框
;

当然还可以嵌入HTML和CSS,但是用处不大
浅谈XSS
文章图片
image 浅谈XSS
文章图片
image 默认hook js:http://ip:3000/hook.js
默认hook页面: http://ip:3000/demos/basic.html//访问即可被hook
往存在XSS漏洞的地方插入以下代码
;

举个例子:往DVWA靶场插入xss代码
;

浅谈XSS
文章图片
image 那么在beef上可以看到被嵌入hook.js的浏览器已经上线了
浅谈XSS
文章图片
image 然后你可以选择各种攻击模块进行操作了
浅谈XSS
文章图片
image 每个模块前面的颜色代表着不同的意义
浅谈XSS
文章图片
image 实用攻击模块
使用下面模块的前提是你使用; 控制了浏览器。
被控浏览器弹框
模块:Browser--->Hooked Domain--->Create Alert Dialog
浅谈XSS
文章图片
image 浅谈XSS
文章图片
image 获取cookie
模块:Browser--->Hooked Domain--->Get Cookie
浅谈XSS
文章图片
image 重定向
模块:Browser--->Hooked Domain--->Redirect Browser
将当前页面重定向至指定页面,有可能导致当前权限丢失
Rediret Browser(iframe)模块:将当前页面重定向至指定页面,同时保留当前连接,可以维持当前浏览器权限
方法:右侧填写木马的路径,可以配合插件升级攻击
浅谈XSS
文章图片
image 浅谈XSS
文章图片
image 社工弹窗
模块:Social Engineering ---> Pretty Theft
弹出一个登录框,用户输入密码点击登录之后,beef可以获取到密码
浅谈XSS
文章图片
image 浅谈XSS
文章图片
image 浅谈XSS
文章图片
image 社会工程学攻击
模块:Social Engineering ---> Fake Flash Update
在社工这一栏,可以选择flash更新这类功能来诱使用户升级Flash,当用户点击之后,会下载我们的恶意文件执行,这样我们就可以用c2(command&control)控制用户的系统.
浅谈XSS
文章图片
image 浅谈XSS
文章图片
image 持久化
模块:Persistence--->Create Foreground iFrame
使用之后,被控浏览器无论点击哪里,都无法跳转到该系统到其他页面
浅谈XSS
文章图片
image 内网扫描
模块:Network--->Port Scanner
Network用于收集内网信息,比如ping、端口扫描
注入隐藏的iframe框架
Misc --> Create Invisible Frame
其他模块
Simple Hijacker模块 劫持网页上面的所有链接,当用户点击任意链接时弹出诱骗消息,如果用户接着点击会跳转到指定域名
Clippy模块 创建一个浏览器助手提示用户点击
TabNabbing模块 当检测用户不在当前页面时启动定时器,倒计时结束后自动重定向至指定页面
Clickjacking模块 可以使用multi-click clickjacking,判断当前用户鼠标位置,在不同位置可触发不同JS代码如图,鼠标后面跟随一个iframe
Create Pop Under模块 创建一个新窗口
Confirm Close Tab模块 当用户关闭当前页面时,反复弹出确认是否关闭页面的消息
hook手机
由于手机打开网址持续的时间很短,关闭当前页面后BeEF的shell就会下线,因此我们可以使用BeEF API,用户上线后能够自动执行批量命令,结合Persistence模块能够极大提高shell存活时间。除了与windows系统相关的信息无法获取,其他操作均能成功执行,并且BeEF为手机劫持提供了专门的模块系列——Phonegap
1、弹框 2、重定向 3、查看是否访问过某些网站 4、Creates an invisible iframe 5、Social Engineering系列,如下图,仅作演示 6、msf系列 7、NetWork系列,可以用来扫描同一内网下的windows主机

五、修复建议
  • 将用户所提供的内容输入输出进行过滤。可以运用下面这些函数对出现XSS漏洞的参数进行过滤:
  • PHP的htmlentities()或是htmlspecialchars()
  • Python的cgi.escape()
  • ASP的Server.HTMLEncode()
  • ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
  • Java的xssprotect(Open Source Library)
  • Node.js的node-validator
六、XSS靶场 DVWA
Xss(reflected)-Low 点击右下角的view source,查看源码
浅谈XSS
文章图片
image 分析:
arrary_key_exists()函数:判断$_GET的值中是否存在“name”键名。并且$_GET[‘name’]的值是否不为空,满足这些条件,直接输出下面的输出语句。可以看到,代码直接引用了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。
payload:
Xss(reflected)-Medium 源码:
浅谈XSS
文章图片
image 分析:
这里对输入进行了过滤,基于黑名单的思想,使用str_replace函数将输入中的
Payload:
2.双写绕过
Payload:
3.构造不使用,成功弹框:
浅谈XSS
文章图片

name栏的利用:
发现前端html中对name有字数长度限制:
Burpsuite 抓包改为
浅谈XSS
文章图片
image-20200403140251503.png 点击Bp中Forward 后,成功弹窗:
浅谈XSS
文章图片
image-20200403140311971 XSS(Stored)-Medium 浅谈XSS
文章图片
image-20200403140334188
strip_tags()函数剥去字符串中的HTML、XML以及PHP的标签,但允许使用标签。addslashes()函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。

分析:
可以看到,由于对message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了
浅谈XSS
文章图片
image-20200403140440550.png 2.大小写混淆绕过
Burpsuite抓包改name参数为:
浅谈XSS
文章图片

3.使用非 script 标签的 xss payload:
eg:img标签:
Burpsuite抓包改name参数为:浅谈XSS
文章图片
image-20200403140509371.png 其他标签和利用还有很多很多….
以上抓包修改数据Forward后,均成功弹窗:

浅谈XSS
文章图片
image-20200403140524097.png XSS(Stored)-High 浅谈XSS
文章图片
image-20200403140538783.png 分析:
这里使用正则表达式过滤了标签,但是却忽略了img、iframe等其它危险的标签,因此name参数依旧存在存储型XSS。
Exploit
Burpsuite抓包改name参数为浅谈XSS
文章图片
image-20200403140643833.png
Forward后,成功弹窗:
浅谈XSS
文章图片
image-20200403140524097.png

    推荐阅读