前段时间无意中玩了玩xssgame,应该是最新的xss挑战了吧,最近才有空整理了一下writeup,网上很多搜到的wp说的都不清楚,这里推荐一片wp。
level 1
第一题没什么特别的,查询输入没做任何过滤就输出了,所以直接插入标签就好了。
|
|
level 2
第二题其实有一点儿特别,dom xss,最关键的部分,其实就是如何让语句合理,因为在js的解析器中,js语句是按顺序解释的,如果碰到语法错误,就会停止解析,所以保证前后闭合就好了,这里分号换行都可以。
|
|
level 3
同样是dom xss,在xss的时候,可以多考虑一下多输出点,可能很多地方都是有严格过滤的,但是很多时候还会出现多个输出点,这里就是这个问题,这里会读取url拼接入img的链接中,双引号截取,就可以插入标签了。
这是个垃圾payload,firefox获取location.hash自动过一次urlencode,无法绕过,坑了我一早上。
|
|
level 4
在confirm页面,会有一个js的跳转,这里会获取请求中的next参数拼接进入js语句,这里的问题和第二关类似,首先是js解析顺序问题,如果想要闭合解决的话,我们会发现,如果跳转这步js没问题,就会跳到新页面,就不能执行alert(1)了,所以这里只能通过js伪协议来执行alert。
|
|
level 5
题目是angularjs的,这里是最近几年比较流行的一种新前端问题,angularjs是典型的模板渲染的js解析方式,那么就有了新的问题,模板注入,可以通过模板注入的方式执行我们想要的js。
这里有个angular js的语法问题,最后是问了@math1as师傅我才搞明白。在angular js中ng-non-bindable这个属性,就相当于html标签中的pre标签,在这里面的所有属性都不会解析。
|
|
level 6
模板注入和别的不同,需要通过angularjs的渲染,所以html实体编码仍然可以
|
|
level 7
这里也是一个去年到今年才刚刚被提出来的新问题,jsonp的callback导致的csp bypass问题。
题目中的CSP是这样的:
当我们传入menu的时候,js会解base64,并且引入script标签,解析返回后放入页面内,但jsonp还有个callback参数,简单来说呢,就是在请求数据的同时,获取需要执行的函数名,但是通常这个地方并没有做任何处理,如果我们构造形似
|
|
就可以执行我们需要的js
|
|
level 8
题目本身还是bypass csp
题目条件有点儿多,我们来慢慢研究。
1、第一个功能是设置name,但是仔细观察不难发现,设置的name是放在cookie里的,而且还接受了redirect参数,会在设置完跳到相应的位置。
2、第二个功能是设置参数,虽然我没搞明白具体是干了啥,但是amount这个参数只接受整数,如果传入不是整数,那么就会报错,并返回输入的内容,这个部分存在xss。
3、第二个功能还有一个问题是csrf_token,我们需要绕过这个东西,可以发现csrf_koen是存在cookie中的。
ok,那么我们把上面3个条件连起来就好了,我们通过set功能,设置csrf_token的cookie,然后通过redirect跳到transfer,就构成了一个完整的xss了。
|
|
黑客技术官网地址:http://www.hackdig.com/
本文我们将探讨如何通过VMware Horizon macOS客户端版本4.4.0 (5164329)中存在的代码注入漏洞获取本地root权限。在此文发布前我们已确认漏洞在最新版本中已被修复,该漏洞是在我学习了解"Open VMware View Client Services" SUID机制后发现的。
该漏洞存在于Horizon内部的远程USB服务,且仅在键入管理凭证启动服务之后才能利用
为了进一步研究,我使用到Fireeye最新发布的Monitor.app应用程序,该程序主要用于macOS上的进程监听(procmon)
从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个问题:
- 内核扩展仅在root : wheel权限下加载
- 此外,KEXTs必须有苹果公司的签名
经过一系列思考,我决定忽略第二个问题。因此,我禁用了SIP
接下来我们就着重关注第一个问题。为了成功加载一个内核扩展,该二进制文件必属于root : wheel。然而,对于一个普通用户来说,是无法在本地文件上设置该文件系统权限的。幸运的是,在这之前我有花时间去了解Tools On Air文件系统的输入输出原理,所以我清楚的知道我们只需利用NFS便能达到目的。NFS允许服务指定文件系统权限,即使是由一个普通用户进行挂载。我所知道的其他本地或者远程文件系统从某种程度上来讲,都会忽略root用户所属文件权限。我们的下一个动作即是引用一个远程文件夹(我随身携带的Kali Linux)以利用NFS。
使用Finder的"连接到服务器"功能进行挂载
接着创建一个简单的KEXT
之后更新Info.plist文件以满足我们的需求(新增一个IOKitPersonalities字典),我已经准备好了!
通过将KEXT复制到NFS服务器,之后进行权限调整以满足root:wheel,至此我们便能够愉快的开始真正的利用了。
在我们之前创建的KEXT中简单设置VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS环境变量,然后运行Open VMware View Client Services。现在能够成功加载了。
至此,我们作为一个普通用户拿下内核环境的代码执行权限。
解决方案
过滤或者清除环境变量VMWARE_VIEW_USBARBITRATOR_LOG_OPTIONS以及VMWARE_VIEW_USBD_LOG_OPTIONS
*参考来源:bogner,freebuf小编鸢尾编译,转载请注明来自FreeBuf.com
黑客技术官网地址:http://www.hackdig.com/
没有评论:
发表评论