搜索此博客

2017年7月23日星期日

xssgame writeup

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
xssgame writeup  阅读原文»

前段时间无意中玩了玩xssgame,应该是最新的xss挑战了吧,最近才有空整理了一下writeup,网上很多搜到的wp说的都不清楚,这里推荐一片wp。

xssgame(需要翻墙)
推荐的wp

level 1

第一题没什么特别的,查询输入没做任何过滤就输出了,所以直接插入标签就好了。

1
http://www.xssgame.com/f/m4KKGHi2rVUN/?query=1<img src="/" onerror=alert(1)>

level 2

第二题其实有一点儿特别,dom xss,最关键的部分,其实就是如何让语句合理,因为在js的解析器中,js语句是按顺序解释的,如果碰到语法错误,就会停止解析,所以保证前后闭合就好了,这里分号换行都可以。

image.png-37.5kB

1
http://www.xssgame.com/f/WrfpuKFX8GNr/?timer=1')%0dalert('1

level 3

同样是dom xss,在xss的时候,可以多考虑一下多输出点,可能很多地方都是有严格过滤的,但是很多时候还会出现多个输出点,这里就是这个问题,这里会读取url拼接入img的链接中,双引号截取,就可以插入标签了。

这是个垃圾payload,firefox获取location.hash自动过一次urlencode,无法绕过,坑了我一早上。

image.png-62.8kB

1
http://www.xssgame.com/f/u0hrDTsXmyVJ/#1'onerror=alert(1)>

level 4

在confirm页面,会有一个js的跳转,这里会获取请求中的next参数拼接进入js语句,这里的问题和第二关类似,首先是js解析顺序问题,如果想要闭合解决的话,我们会发现,如果跳转这步js没问题,就会跳到新页面,就不能执行alert(1)了,所以这里只能通过js伪协议来执行alert。

image.png-90.3kB

1
http://www.xssgame.com/f/__58a1wgqGgI/confirm?next=javascript:alert(1)

level 5

题目是angularjs的,这里是最近几年比较流行的一种新前端问题,angularjs是典型的模板渲染的js解析方式,那么就有了新的问题,模板注入,可以通过模板注入的方式执行我们想要的js。

这里有个angular js的语法问题,最后是问了@math1as师傅我才搞明白。在angular js中ng-non-bindable这个属性,就相当于html标签中的pre标签,在这里面的所有属性都不会解析。

image.png-41kB

1
http://www.xssgame.com/f/JFTG_t7t3N-P/?utm_campaign={{$eval(%27alert(1)%27)}}

image.png-67.2kB

level 6

模板注入和别的不同,需要通过angularjs的渲染,所以html实体编码仍然可以

1
http://www.xssgame.com/f/rWKWwJGnAeyi/?query=123%26lcub%3B%26lcub%3B%24eval%28%27alert%281%29%27%29%7D%7D

level 7

这里也是一个去年到今年才刚刚被提出来的新问题,jsonp的callback导致的csp bypass问题。

题目中的CSP是这样的:

1
2
Content-Security-Policy
default-src http://www.xssgame.com/f/wmOM2q5NJnZS/ http://www.xssgame.com/static/

当我们传入menu的时候,js会解base64,并且引入script标签,解析返回后放入页面内,但jsonp还有个callback参数,简单来说呢,就是在请求数据的同时,获取需要执行的函数名,但是通常这个地方并没有做任何处理,如果我们构造形似

1
alert(1);//xxxxxxxxxxxxxxxxxxxxxxxxxx

就可以执行我们需要的js

image.png-43.6kB

1
http://www.xssgame.com/f/wmOM2q5NJnZS/?menu=PHNjcmlwdCBzcmM9Impzb25wP2NhbGxiYWNrPWFsZXJ0KDEpJTNCJTJmJTJmIj48L3NjcmlwdD4=

level 8

题目本身还是bypass csp

1
2
Content-Security-Policy
default-src http://www.xssgame.com/f/d9u16LTxchEi/ http://www.xssgame.com/static/

题目条件有点儿多,我们来慢慢研究。
1、第一个功能是设置name,但是仔细观察不难发现,设置的name是放在cookie里的,而且还接受了redirect参数,会在设置完跳到相应的位置。
2、第二个功能是设置参数,虽然我没搞明白具体是干了啥,但是amount这个参数只接受整数,如果传入不是整数,那么就会报错,并返回输入的内容,这个部分存在xss。
3、第二个功能还有一个问题是csrf_token,我们需要绕过这个东西,可以发现csrf_koen是存在cookie中的。

ok,那么我们把上面3个条件连起来就好了,我们通过set功能,设置csrf_token的cookie,然后通过redirect跳到transfer,就构成了一个完整的xss了。

1
http://www.xssgame.com/f/d9u16LTxchEi/set?name=csrf_token&value=1&redirect=transfer%3Fname%3Dattacker%26amount%3D123%22%3E%3Cscript%3Ealert%281%29%3C%2fscript%3E%26csrf_token%3D1

黑客技术官网地址:http://www.hackdig.com/

CVE-2017-4918:VMware Horizon的macOS客户端代码注入漏洞分析  阅读原文»

本文我们将探讨如何通过VMware Horizon macOS客户端版本4.4.0 (5164329)中存在的代码注入漏洞获取本地root权限。在此文发布前我们已确认漏洞在最新版本中已被修复,该漏洞是在我学习了解"Open VMware View Client Services" SUID机制后发现的。

代码注入漏洞

该漏洞存在于Horizon内部的远程USB服务,且仅在键入管理凭证启动服务之后才能利用

Horizon内部的远程USB服务

为了进一步研究,我使用到Fireeye最新发布的Monitor.app应用程序,该程序主要用于macOS上的进程监听(procmon)
Monitor.app应用程序

从Monitor.app捕获到的结果,可以清楚得知services.sh被包装在Open VMware View Client Services之中。这样脚本文件的SUID位被忽略也就说得通了(参考Allow setuid on shell scripts)。

在仔细观察该脚本文件之后,我辨识出如下截图中代码高亮部分或许就是代码注入漏洞的起点。尽管我对./vmware-usbarbitrator的内部工作原理不了解,但这些代码深深的吸引了我的目光。作为一个非管理员用户,我能够设置环境变量VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS的内容(在之后的一个SUID执行脚本中会用到)

脚本文件

在仔细阅读命令行参数选项说明后,我非常肯定我们是能够通过�Ckext参数加载一个自定义内核扩展。

但接下来我们将面临2个问题:

经过一系列思考,我决定忽略第二个问题。因此,我禁用了SIP

禁用了SIP

接下来我们就着重关注第一个问题。为了成功加载一个内核扩展,该二进制文件必属于root : wheel。然而,对于一个普通用户来说,是无法在本地文件上设置该文件系统权限的。幸运的是,在这之前我有花时间去了解Tools On Air文件系统的输入输出原理,所以我清楚的知道我们只需利用NFS便能达到目的。NFS允许服务指定文件系统权限,即使是由一个普通用户进行挂载。我所知道的其他本地或者远程文件系统从某种程度上来讲,都会忽略root用户所属文件权限。我们的下一个动作即是引用一个远程文件夹(我随身携带的Kali Linux)以利用NFS。

引用一个远程文件夹

使用Finder的"连接到服务器"功能进行挂载

使用Finder的

接着创建一个简单的KEXT

创建一个简单的KEXT

之后更新Info.plist文件以满足我们的需求(新增一个IOKitPersonalities字典),我已经准备好了!

更新Info.plist文件

通过将KEXT复制到NFS服务器,之后进行权限调整以满足root:wheel,至此我们便能够愉快的开始真正的利用了。

进行权限调整以满足root:wheel

在我们之前创建的KEXT中简单设置VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS环境变量,然后运行Open VMware View Client Services。现在能够成功加载了。

运行Open VMware View Client Services

至此,我们作为一个普通用户拿下内核环境的代码执行权限。

解决方案

过滤或者清除环境变量VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS以及VMWARE_VIEW_USBD_LOG_OPTIONS

*参考来源:bogner,freebuf小编鸢尾编译,转载请注明来自FreeBuf.com


黑客技术官网地址:http://www.hackdig.com/

阅读更多内容

没有评论: