博文

基于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,易于操作,具有更加简单的命令进行…

X-NUCA 2019 Ezphp题目writeup

图片
0x00 关于这道题          这道题出现在2019年X-NUCA CTF中,是最简单的web题,也是我唯一能做的web题。不过这个简单是相对的简单,实际上真还算挺难的了,里面的姿势在实际渗透测试中也可能用到,所以写篇文章记下也不算亏 0x01 题面
<?php
    $files = scandir('./');
    foreach($files as $file) {
        if(is_file($file)){
            if ($file !== "index.php") {
unlink($file);
            }
        }
    }
    include_once("fl3g.php");
    if(!isset($_GET['content']) || !isset($_GET['filename'])) {
highlight_file(__FILE__);
        die();
    }
$content = $_GET['content'];
    if(stristr($content,'on') || stristr($content,'html') || stristr($content,'type') || stristr($content,'flag') || stristr($content,'upload') || stristr($content,'file')) {
        echo "Hacker";
        die();
    }
$filename = $_GET['filename'];
    if(preg_match("/[^a-z\.]/", $filename) == 1) {
        echo "Hacker";
        die();
    }
$files = scandir('./');
    foreach($files as $file…

2019中关村杯show_me_your_image题目writeup

图片
0x00 关于这道题          这道题出现在2019年中关村杯CTF,难度较大,值得一看 0x01 题面          这题打开就是个上传界面,干干净净,没有什么HINT可以看


0x02 上传          首先上传正常文件,寻求上传的文件地址,但是服务器只返回一个session回来,再退回主界面发现上传的东西会在 /img.php?name=<???>中显示出来。          尝试改后缀为fuck,之所以我改成fuck是想要测试服务器是否是白名单机制的,即只接收图片格式而不接收其它任何格式。因为如果服务器是黑名单机制就暗示我们要绕开它上传,而白名单限制很死,绕过往往是不可能的,只能另寻它途。很不幸这次就是白名单的。          接着再直接把webshell开为jpeg后缀看看能不能利用img.php可能存在的文件包含漏洞,失败          尝试解析漏洞,失败          暴力扫目录扫php查看有没有别的PHP,一无所获。之所以扫目录是因为之前有题就是藏个phpinfo在那儿,暗示利用Imagick漏洞进行攻击的          看起来上传Getshell这条路被堵死了。泪,流了下来 0x03 发现          session长得很奇怪,有一种...说不出的眼熟,拿去base64解密居然解了部分,后面解不开的是一个.后面的东西,解密出来了有个不完整的JSON,其中包含了一个叫b的参数,这个参数Base64解码之后就是代入img.php的name,这熟悉的客户端session,让我想起了Flask的session,难道...难道这个其实是Flask伪装的?       (PS:在下午主办方给了Hint之后,不需要能够发现session眼熟也能知道是Base64,但最好还是别过多依赖Hint,解码勤快点,万一下次不给Hint呢)          我向来是不惮以最坏的恶意来揣测出题人的,然而我还不料,也不信竟会下劣凶残到这地步。况且始终后缀是PHP的网站,更何至于是Python伪装的呢?然而很快证明是事实了,作证的便是参数污染探测。          先讲讲参数污染探测,说的多么神秘无非就是提交重复参数罢了,但是在这种涉嫌伪装的情况下却能够轻易识破。众所周知,PHP在被参数污染的情况下会取最后面的参数,而经…

利用python封装的BEEF-XSS API进行浏览器自动化攻击

图片
0x00 为什么要自动化利用          BEEF框架着实厉害,支持模块动态加载,还有很多厉害的模块国内的XSS平台上根本就没有。但是如果不进行自动化攻击就很鸡肋了,想想你搞了个恶意链接,构造了XSS,或者打进人家服务器给别人嵌一个什么的,目标还点了链接,结果你不在电脑前没有去点模块去利用,白白错失了攻击机会,岂不痛哉?因此BEEF的自动化是很重要的 0x01 为什么要用python封装API利用而不用自带的ARE
         首先ARE不够灵活,搞什么rule set,非常死板的感觉,而直接调API可以更灵活地交互          其次,笔者讨厌ruby,非常讨厌ruby,并且丝毫不能理解msf和beef为什么要用ruby写 这才是主要原因好吧 0x02 python封装API          BEEF的API用HTTP调用,因此用python的requests库写起来非常顺手
         我很懒,就把BEEF的API封装在了一个beefhandle类里面,首先使用BEEF密码连接获取token来初始化对象,然后做了获取当前在线浏览器/执行命令/获取命令结果的简单支持,都塞在函数里面。更多的一些东西就没弄了 0x03 实现自动化          自动化的简单实现也不复杂,不断调用API查找新上线的主机,将每个主机启动一个线程单独处理,每个主机执行的命令塞到一个命令列表里,一个函数专门去循环查询命令执行结果 0x03 图和代码
其中代码里的探测社交帐号的模块是自己写的,不是自带的,想要使用需要先改代码
(第一次发图的时候居然忘记打码,幸好访问量只有可怜的2)

         代码https://github.com/TomAPU/Scripts/tree/master/beef-python

基于mitmproxy的JSONP漏洞辅助挖掘工具

图片
JSONP漏洞实在是个好东西,但在挖掘的过程中需要耗费大量的时间看Burp来寻找JSONP格式的返回包,因此我实现了基于mitmproxy的漏洞辅助挖掘工具。
这个工具是mitmproxy的一个扩展,启动方法为mitmdump -s ./a.py -q,关于mitmproxy
在启动之后会打开一个本地8080上的HTTP代理,将浏览器的代理设置为http://127.0.0.1:8080并信任证书就可以使用了。该工具在发现了JSONP的HTTP Response之后会将URL和内容显示在终端。
说实话这工具写的很简陋,其实还可以加上什么检测返回结果敏感信息以及去Referer重放的,但我想反正一个站也没几个JSONP页面,不值得。
写完之后想要用这个和Burp的spider配合实现一键挖漏,但发现Burp的Spider实在不够好用,没办法覆盖全,至少我在我挖出洞的那个站点上面测试都没有成功。
运行如图:

链接:https://github.com/TomAPU/Scripts/tree/master/JsonpProxy

将挖掘出的JSONP泄漏漏洞整合进BEEF浏览器利用框架

图片
0x00 前言         之前在█度上瞎逛的时候开着代理,顺手就找到了█度一个JSONP泄漏漏洞,能够泄漏完整用户名。         不得不说█度的安全真的烂,人家█讯跟它一个年代的,老代码照样很多,但我之前尝试了谷歌上能找到的大部分页面,各种老系统边缘业务都试过了,就只找到一个能泄漏QQ名的漏洞,而█度随便逛逛就能撞到漏洞。建议█度安全部的人自己给自己泼█宝矿泉水自裁谢罪         (本文不会贴出具体的漏洞,如果只是想看█度漏洞的可以退了)         很快,我就构建了个POC能够alert出用户名。我就开始疯狂YY能不能做一个取证溯源系统,挂一个JS就能查到各种信息。         但是我突然隐约记起来,好像有个叫做BEEF的框架已经能将各种欺负浏览器的技巧集成在它的框架里面了,仔细一看这玩意着实厉害,凭我个人无限趋近于零的水平不可能做出更好的来。所以本着不能打败敌人那就加入敌人的无耻精神,我打开BEEF开始研究如何自己写一个BEEF的插件将这个漏洞整合进去 0x01 BEEF插件编写         BEEF官方在他们的gayhub页面上给出了开发模块的方法,不过就只有这一页很多东西根本就没有讲清楚,而且用的还是本人不熟悉的ruby,在编写的时候踩了不少坑         先说下BEEF插件长啥样         BEEF的插件存在/usr/share/beef-xss/modules/exploits/baidu_account/下面的文件夹里面,每个文件夹代表了一个"category",即不同类别的模块,比如社会工程,持久化,漏洞利用,网络拓扑信息搜集之类的。说实在的,这让我联想到了MSF,同样是ruby写的,同样喜欢用文件夹把不同的模块区别开来(还有同样语焉不详的奇妙文档)。         但是不同之处在于,BEEF的每个模块又得装在这个category的子文件夹里面,比如我今天要编写的模块名字叫做baidu_account,归类在Exploits里面。那这个模块的目录就得是/usr/share/beef-xss/modules/exploits/baidu_account/。为什么是目录呢?读者可能已经猜到了,BEEF的每个模块需要多个文件。         一个标准的BEEF模块由三个文件组成 config…