设计模式:在云中构建可靠、可扩展、安全的应用程序
https://docs.microsoft.com/en-us/azure/architecture/patterns/
上云之后对于开发应用程序最大的改变应该就是各类开箱即用的云产品和分布式特性了,那么如何在大量的云产品之上构建可靠、可扩展、安全的应用程序,可以看下这个docs,其中的思想不仅仅适用于azure。
内容分为以下三部分:
数据管理是云应用的关键要素,影响着大部分的质量属性。出于性能、可扩展性或可用性等原因,数据通常托管在不同的位置并跨多个服务器,这可能会带来一系列挑战。
好的设计包括组件设计和部署的一致性和连贯性、简化管理和开发的可维护性以及允许组件和子系统在其他应用程序和其他场景中使用的可重用性等因素。在设计和实施阶段做出的决策对云托管应用程序和服务的质量和总拥有成本有巨大影响。
云应用程序的分布式特性需要一个连接组件和服务的消息传递基础架构,理想情况下以松散耦合的方式来最大化可扩展性。异步消息传递被广泛使用,并提供了许多好处,但也带来了诸如消息排序、消息管理、幂等性等挑战。
The MITRE ATT&CK Cloud Matrix
https://attack.mitre.org/matrices/enterprise/cloud/
这个link多少是有点老了,但是之前对于云安全了解较少,现在回过头来看这个Matrix,不论是攻击或是检测,都是一份非常有意义的Roadmap。
(机翻,将就看看吧)
The MITRE ATT&CK Cloud Matrix: Initial Access
• 初始访问阶段发生在初始手段,找到进入云帐户或资源的入口。
• 实现此目的的常用方法包括:
– 利用面向公众的应用程序
– 发现和利用可信赖的关系
– 发现云环境的有效账户
The MITRE ATT&CK Cloud Matrix: Persistence
• 持续阶段是攻击者试图在受害者环境中站稳脚跟以确保他们可以随意返回的阶段。
• 在新近受到威胁的云环境或资产中,攻击者可能会使用以下策略:
– 使用帐户操作来授予以后或持续的访问权限
– 创建新帐户
– 为 PaaS 环境植入容器镜像
– 使用网络和身份控制创建冗余访问
– 继续利用有效账户
The MITRE ATT&CK Cloud Matrix: Privilege Escalation
• 一旦他们最初破坏了环境,提升权限是许多攻击者的共同目标。
• 在云环境中,最常见的提权方法是:
– 尝试使用或访问环境中的有效帐户
– 操纵身份角色分配,然后使用这些有效帐户
The MITRE ATT&CK Cloud Matrix: Defense Evasion
• 一旦攻击者获得了对云帐户或环境的访问权,他们就会设法避开防御措施。
• 攻击者在云环境中寻求避免防御的常见方法包括:
– 通过冗余访问避免检测
– 将云实例恢复到以前的状态
– 在未使用/不受支持的云区域建立存在
– 继续利用有效账户
The MITRE ATT&CK Cloud Matrix: Credential Access
• 攻击者可以在有针对性的活动中取得进展的最常见方式之一是访问和使用各种类型的云帐户和资产凭证。
• 攻击者在云中尝试的几种众所周知的凭证访问类型包括:
– 使用帐户操作来访问凭据
– 使用云实例的元数据 API 查询身份角色
– 在文件中发现凭据
The MITRE ATT&CK Cloud Matrix: Discovery
攻击者将专注于资产和服务发现,包括:
– 云服务仪表板
– 云服务发现(通过网络可见性、与其他服务的交互等)
– 网络服务扫描
– 网络共享发现
– 远程系统发现
– 系统信息发现
– 系统网络连接发现
The MITRE ATT&CK Cloud Matrix: Collection
• 许多攻击者的目标是访问和收集数据和其他有价值的资产。他们最关注的领域可能包括:
– 来自云存储对象的数据(例如,S3 存储桶中的项目)
– 来自其他云信息存储库(数据库或大数据仓库)的数据
– 来自本地系统的数据
– 数据在应用场景中上演
The MITRE ATT&CK Cloud Matrix: Exfiltration
• 一旦攻击者获得数据访问权限,许多攻击活动最终会导致数据泄露到攻击者控制的位置。
• 在 ATT&CK 框架中,这是通过将数据传输到云帐户的行为来完成的。
• 精明的攻击者会逐渐缓慢地执行此操作,以避免检测到大量、突然的数据传输。
The MITRE ATT&CK Cloud Matrix: Impact
• ATT&CK 框架的最终潜在“阶段”是最终的云服务影响,当前模型将其归类为资源劫持。
BugBountyTips:跨站脚本 (XSS) 绕过 CSP
https://medium.com/@numanturle/microsoft-teams-stored-xss-bypass-csp-8b4a7f5fccbf
如果应用程序使用 Angular JS 并且脚本是从白名单域加载的。可以通过调用回调函数和易受攻击的类绕过此 CSP 策略。
从CSP上看只能引入同域的JS,作者发现不安全的CDN,进而成功利用这个XSS。
各类AngularJS各个版本的绕过方式,文中用了这个方法
<iframe srcdoc='<script src=https://statics.teams.cdn.office.net/hashed/0.2-angular-jquery.min-eee9041.js></script><div ng-app ng-csp id=p>{{x={"n":"".constructor.prototype};x["n"].charAt=[].join;$eval("x=alert(\"pwned --> numanturle\")");}}</div>'>
全部见这里:
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md
https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh*t,-it’s-CSP!%22
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#angularjs-csp-bypasses
给我们的教训就是:不要将 CSP 与不安全的 CDN 结合使用。
BugBountyTips:URL短链接的滥用
https://sicks3c.medium.com/abusing-url-shortners-for-fun-and-profit-c83c67713916
这个是非常简单且有效的漏洞赏金获取思路。
URLshortner.com/{HASH} ===> Website.com/?token={YOU-CANT-GUESS-THIS}
原文始发于微信公众号(电驭叛客):Four Short Links(4): 云上应用设计模式/ATT&CK/XSS/BugBountyTips