不二如是 发表于 2019-5-30 00:11:07

基于 a 元素的死亡 ping 隐私追踪

本帖最后由 不二如是 于 2020-3-17 19:08 编辑

在咱们的正课教程中小甲鱼老师已经讲过 a 元素啦。

本讲带大家,体验一个奇技淫巧{:10_278:}



缘起于此帖:HTML5属性a标签ping被用于DDOS攻击,QQ浏览器被波及

看完后,没想到 a 元素还可以这样玩。



在 HTML5 中 a 元素加入了一个新的属性ping(速查宝典)。

设计者加入它的理由是:
Ping 可以使浏览器对外发送一个异步请求,通常用来广告的追踪、点击率统计或完成一次 HTTP 重定向。
但是听到监视、追踪这些词,会不会觉得有点不舒服呢?!

所以 Ping 这个属性会受一部分黑/白“帽子”的欢迎。

但很多浏览器厂家却很抵制!

加入默认关闭,必须从如 config 这样的选项中打开才可以使用



上面是从 caniuse.com 上的浏览器支持情况。

接下来的测试中 Chrome 是木问题的。


Ping 属性用法

Ping 用法很简单,先看代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>鱼C-零基础入门学习Web(Html5+Css3)</title>
</head>
<body>
<a href="https://ilovefishc.com/" ping="https://ilovefishc.com/track">点我</a>
</body>
</html>
当我们单击这个链接的时候,会异步发送一个 POST 请求到 Ping 后面指定的地址。

关于 POST 的玩法,大家自行参阅:99% 的人都理解错了 HTTP 中 GET 与 POST 的区别(转)

Request Body 的内容为 PING 。

有人可能会说,那:

<a ping="https://ilovefishc.com/track">点我</a>
这样写行不行?

答案肯定是:
**** Hidden Message *****
href 这个属性必须存在与 a 元素中,不然 Ping 也是不会运行的。


Ping 的死亡玩法

重点来了,根据 Ping 发送 POST 请求这个特性,你能想到什么呢?

提示一下:
如果反复单击,就会不停的向服务器发送 POST 请求,又会发生什么呢?
没错,会造成 DOS 攻击!{:10_284:}

通过 JavaScript 简单实现一下:

<script>
    // 创建 a 元素并设置 href 和 ping 属性值
    var myLink = document.createElement('a');
    myLink.href = "https://ilovefishc.com/";
    myLink.ping = "https://ilovefishc.com/track";

    // 插入
    document.head.appendChild(myLink);

    // 单击
    myLink.click();
</script>
运行上面的代码,就会不停的向 ilovefishc.com 发送 POST 请求。

呵呵,放心,并不会真的对咱 鱼C 服务器造成影响哈~


追踪隐私

Ping 可以进行广告追踪,可以统计用户都点击了哪些链接以及次数,并使用 POST 请求把这些信息发送到广告商的服务器上。

那么 POST 的这些信息都包含了什么呢?

简单来说 HTTP Header 的内容都会有,我们来看一个截获的完整信息:

HOST: xisigr.com
CONTENT-LENGTH: 4
ORIGIN: http://mail.163.com
PING-FROM: http://****.com/js6/read/readhtml.jsp?mid=458:xtbBygBMgFO+dvBcvQAAsM&font=15&color=064977
USER-AGENT: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
PING-TO: http://www.baidu.com/
CONTENT-TYPE: text/ping
ACCEPT: */*
REFERER: http://****.com/js6/read/readhtml.jsp?mid=458:xtbBygBMgFO+dvBcvQAAsM&font=15&color=064977
ACCEPT-ENCODING: gzip, deflate
ACCEPT-LANGUAGE: zh-CN,zh;q=0.8
COOKIE: sessionid=rnbymrrkbkipn7byvdc2hsem5o0vrr13
CACHE-CONTROL: max-age=0
CONNECTION: keep-alive
PING-FROM、USER-AGENT、REFERER 这三个关键信息,直接泄漏了用户的隐私。

而这也为我们最爱的 XSSSHELL 又提供了一个小插件。

有请 Ping 探针吧,简单的一句 <a href="" ping=> 就搞定!

把 PING 归结为探测用户隐私的范畴一点也不为过。

这其实不怪设计者,Ping 的最初设计理念,是为了使得广告统计更加方便简洁,哪怕是它的重定向功能。

还为了在异步请求的情况下使用户整体提高访问页面速度的快感。

但是这仿佛也无法遮掩住 PING 的潜在探测用户隐私的特性。

也许这就是 PING 的先天性缺陷吧。



http://xxx.fishc.com/forum/201803/20/101934b3igkgm9hgbgz0ck.gif

如果喜欢,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢本系列HTML帖子,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_278:} )

qiuyouzhi 发表于 2019-6-13 20:26:50

学习

tjuwlb 发表于 2020-6-6 10:25:15

{:10_333:}

Rydia 发表于 2021-6-5 21:53:03

......
页: [1]
查看完整版本: 基于 a 元素的死亡 ping 隐私追踪