记一次信息泄漏引发的惨案

VSole2021-10-14 13:06:06

本次文章较为基础,作为一次项目经历中的趣事记录,有很多不足的地方,还请各位大佬轻锤。

在某项目中捞到一处目标站点,是一处某某监控系统的登录页面。登陆的页面大概长如下的样子。

看起来和找到的其他站点都一样,平平无奇。准备敲弱口令admin/123456进行测试,但是当点击用户名的时候,注意到该登录点的用户名框写着大大的三个字“请选择”,直接就无需手动输入。

看来不用先枚举一波可用的用户名了,直接有现成的了。

选择某个看上去像是测试账号的用户名后,输入密码123456,非常丝滑而又毫无悬念的登录……失败。

看着屏幕上冰冷的“用户名或密码错误”8个字,想着先对网站进行一波弱口令猜解。

但是,当我抓取登录数据包,发现网站在前端对密码使用了某种加密方式,直接添加字典进行爆破是没戏了,需要先对前端的加密方式进行绕过。

阅读源码尝试对前端的加密方式进行绕过,找到登录时对密码进行加密处理的guomi函数。

通过关键字passowrd和guomi在网址admin.js中,找到该函数,确认前端使用的SM4的加密方式。找到该加密函数,剩下的就好办了。

通过下断点的方式,找到用户在登录时对密码进行加密所调用的js脚本。通过分析,发现主要有admin.js以及sm4.js。

尝试在浏览器上直接调用该加密方式,对我们的明文字典进行加密。这种方式非常的快捷,只要我们找到登录时对密码加密的函数即可。

当无法确定后续调用的加密js时很好用,但缺点是每次更换暴破字典都需要先生成密文字典。

根据admin.js中的guomi加密函数编写密文字典生成代码,使用只有123456的密码字典进行测试,得到的密文和数据包中密文内容相同。

感觉一切欧克,就在下面的网站对手头的弱口令字典进行处理,转化为列表的格式。

https://uutool.cn/list2json/

在浏览器调试模式console中,使用js脚本,对明文的列表数据调用网站的加密函数进行加密,用得到的密文字典在burp上进行弱口令枚举即可。脚本可以参考如下进行编写:

function guomi(password) {

var s4 = new SM4Util();

s4.iv = "XXXXXX";

var md5str = s4.encryptData_CBC(password);

return md5str;

}

var list=["123456","111111"];

var newlist=[];

for(var i=0;i<list.length;i++)

{

newlist+=guomi(list[i])+"";

}

console.log(newlist);

本想前端提供的用户也不少了,有些账号看着就像简单的测试账号,应该问题不大,结果硬是没有找到弱口令账号(字典都不太行的亚子)。之后对站点进行了未授权访问测试、在JS中搜索敏感路径以及进行注入等测试,均未发现可以利用的点。

就在无聊翻开浏览burpsuite的历史记录中,准备一个一个数据包看看的时候,一个被敏感信息插件标绿的可疑数据包引起我的注意。

通过对该数据的重放发现,该数据包在登录用户选择时,会对服务器的用户信息进行查询,并将用户的敏感信息一并带出,造成敏感信息泄露。这一波操作,开发真的整了一套好活。

在json返回的数据中,发现存在passowrd的字段,后面的数值推测是加密后的登录密码。看起来比较像base64编码,但是尝试解开失败,应该还是与前端相同的SM4方式。这个好办,因为之前注意到这个网站在登录时就使用了密文密码,因此直接将数据包中泄露的登录密码拿来用即可。

使用对应管理员用户的密文密码放到登陆数据包中,成功获得登录所需要的token。

在cookie editor中对token内容进行修改,利用在js文件中找到到的后台地址,成功登录到监控系统。

进入网站后,需要对网站的各个功能点进行测试。本次运气比较好的是,在后台找到一处文件上传点,仿佛看到getshell的希望。

在测试的过程中,发现该上传点在服务器端使用了黑名单限制,在前端进行绕过失败,上传jsp以及jspx后缀文件会引起500报错。

尝试上传txt、cer、html等文件都可以,但是服务器端会对文件名进行修改。这里需要注意的是linux服务器对文件后缀大小敏感,并且tomcat中间件默认情况下是不解析大小写混写或者大写的jsp/jspx后缀文件。

在尝试了诸多文件上传绕过的方法未果后,经过大佬指点,注意到该网站使用了JFinal框架。


阅读网上参考文章,发现是该web框架通过黑名单机制对上传文件进行拦截,并且在3.8版本及之前都存在很玄学的任意文件上传。该框架在上传jsp/jspx文件时,会先上传到服务器上后,再对这些恶意文件进行删除。但是当最末行缺少分割的boundary时,会导致删除恶意文件出错,造成任意文件上传。

于是根据POC重新构造数据包,结果还是返回500的错误。啊这,是姿势不对?因为开始怀疑这个漏洞是否还存在,就下意识多点了点了Go按钮。尝试访问upload/svg/加上传日期目录下的上传文件也无果。

一筹莫展之际,对上传后的路径目录进行缩进,正好发现存在目录遍历。然后跳到upload目录下,已然造成了悲剧。

需要注意的是JFinal框架的任意文件上传漏洞,会将目标文件传递到upload目录下,而非正常的upload/svg/[date]目录下。

利用该文件上传漏洞,成功上传webshell并连接。(灰溜溜的上去先把多余的木马文件删除)

文件上传
本作品采用《CC 协议》,转载必须注明作者和本文链接
Fuxploider是一种开源渗透测试工具,可自动检测和利用文件上传表单缺陷的过程。该工具能够检测允许上传的文件类型,并能够检测哪种技术最适合在所需的Web服务器上上传Web Shell或任何恶意文件
文件上传前端JS 防护,通过抓包修改,或插件js禁用来绕过。后端黑名单上传陌生后缀 .php3 php5上传配置文件 .htaccess通过 双写 ,大小写,基于windows 特性
此时通过对Content-Type进行修改,可能会绕过waf。其他的http头添加删除等也是类似。检测到上传jsp文件,任意内容都会被拦截。先来fuzz一波能利用的后缀名,这里可以包括中间件的一些配置文件。希望不大,一点都不出意外,全部被拦截了。因为最终还是需要免杀马的,jsp免杀又不会,先不考虑这个,先考虑把waf绕过。fuzz本来就是一个天马行空的过程,好了,继续来看。
文件上传数据包解析 文件上传实质上还是客户端的POST请求,消息主体是一些上传信息。前端上传页面需要指定 enctype为multipart/from-data才能正常上传文件。 一个正常的文件上传数据包大致如下:
此时通过对Content-Type进行修改,可能会绕过waf。其他的http头添加删除等也是类似。检测到上传jsp文件,任意内容都会被拦截。先来fuzz一波能利用的后缀名,这里可以包括中间件的一些配置文件。希望不大,一点都不出意外,全部被拦截了。因为最终还是需要免杀马的,jsp免杀又不会,先不考虑这个,先考虑把waf绕过。fuzz本来就是一个天马行空的过程,好了,继续来看。
文件上传漏洞指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力 文件上传后常见的安全问题: 1.上传文件是web脚本语言,服务器的web容器解释并执行了用户上传的脚本 导致代码执行
此文章可以说是对于想研究“文件上传漏洞”的新人是必看的内容,如果你不看此笔记,文件上传漏洞实战你能搞明白吗?内部:扫描工具探针的上传地址:后台的上传地址 3、学文件上传漏洞篇要注意哪些关键地方?
//内部根据当前运行创建。//单个文件大小限制。//选中文件要做的事
前言某次小型红蓝,直接丢过来几个登陆框,定点打。环境介绍全部都是shiro框架。过程爆破用户名密码,都是加密的。查看网页源代码的时候,发现其中一个利用的DES-ECB的单层加密。果断生成大量的字段。我的超大字典,都没有爆破出一个有效的账号。一上午毫无收获,陷入沉思。用上午在A系统登陆显示没有应用权限的账号,但是不会自动解压,没有找到可以利用的点。在目标机器部署了cs。
VSole
网络安全专家