一次黑盒加白盒的渗透过程

VSole2021-10-20 07:46:21

项目中遇到的站,采用黑盒加白盒再加点运气的方式获取shell。比较基础,漏洞相对也比较简单,主要是学习交流为主。

01 前期黑盒

目标首页长这样

首页就暴露了CMS版本号,经查是蝉知,后台默认路径是admin。

搜了下cnvd,这版本还真有漏洞。

尝试访问一手后台,可惜报错。

然后随手一顿乱试,试出后台地址Admin(运气)

admin/123456又进去了,运气实在不错

后台翻阅了一遍,找到个模板设置,再次感谢运气之神,这不是有手就行,直接获得shell吗?

好了,运气到此为止。

老老实实找洞吧。在定义附件后缀处,尝试添加php被拒绝,但可以添加一个pht。

在素材库上传附件

上传成功

直接访问就变成404,啊这,就有点难受

界面显示是这样

点击直接变成下载,似乎这里存在任意文件下载漏洞

抓个包一看,只有ID可控,只能遍历数字看别人上传的素材。

又看到上传后路径显示这样,想着这个f参数是否可控去下载文件

尝试后发现不行



02 白盒审计

无奈,只有去找源码搭环境了。

官网直接下8.6版本,安装后直接照着之前黑盒上传,发现文件保存的时候将后缀给去掉了

来看源码,先看下config文件,了解下大致的框架路由

去上传处抓包

找到上传文件代码位置chanzhieps/system/module/file/control.php

首先跟进到getUploadFile,chanzhieps/system/module/file/model.php

这里$name有两种获取方式,一种是文件上传部分的filename,另一种是name参数传入,这里确保后缀为.pht即可

继续跟进$this->getExtension($name)获取后缀,在这里会判断后缀是否存在、后缀是否被允许,这里已添加.pht所以直接返回.pht

回到chanzhieps/system/module/file/control.php,跟进saveUploadFile,首先跟入getSaveName

来到getSaveName定义处

这部分代码会检测$pathName后缀是否在$config->file->videoExtensions内

不在则取去掉第一个“.”之后的部分,去掉后缀。所以最后返回的是一个不包含后缀的文件名。

又回到saveUploadFile,继续往后看,虽然保存的时候文件名后缀被去掉了,但是实际后缀还在$file['extension']中,在saveUploadFile函数后半部分会将file数组值写入数据库,包括了实际后缀.pht。

上传文件后的界面中还有个编辑功能。

跟进编辑功能源码editsource,chanzhieps/system/module/file/control.php

跟入getById(),这部分从数据库取出来前面保存的file信息

$filename为post传入filename参数的值

再跟进editSource()位置在chanzhieps/system/module/file/model.php

因为没重新上传附件,所以直接进入第二个if语句。

这里$newPath由原来规定的存储路径+文件名+原文件后缀(即pht),然后拼接成新路径,这样最后保存的文件就保留了原始后缀。


编辑该文件,修改名称后保存即可对文件添加后缀


成功将后缀还原。

然后实战上传获取shell



03 后续小小扩展

按理说这里就结束了,但是之前审计过程中有一个点引起了注意。

回到之前说到的模板问题上。

这里明确告知缺少/system/tmp/eurn.txt文件,并且暴露出了绝对路径。然后再次回到之前editSource方法上。

刚才已经分析过,这里新路径是由默认路径+文件名+上传的文件后缀。其中$filename可控并且没有任何过滤,这就意味着可以使用../目录穿越形式在目标处写入编辑模板所需的txt文件。

先上传一个txt文件,名字随意,目的是将后缀txt写入到$file[extension]。

编辑时候抓包,将filename的值改成../../../../../system/tmp/eurn

去目录看一下,果然写入成功

再回到编辑页面,成功写入一句话

因为是全局模板,所以直接在首页就能获取shell

后缀数组
本作品采用《CC 协议》,转载必须注明作者和本文链接
通过找源码代码审计后getshell。测试在某次测试过程中发现,通过泄漏的md5进入后台,在后台配置中有处“上传logo”的功能。会提示“上传失败”。只有正常图片+图片后缀 会返回图片路径。第一行 导入命名空间“phpWeChat” 内的 Upload 类,下面是引用包含一些文件。再往下,$action是用于下面 switch函数内做索引匹配而调用不同功能的。$action的值是通过 GET方式获取 “action”参数的值。
ChatGPT等大语言模型(LLM)使用来自图书、网站及其他来源的海量文本数据进行训练,通常情况下,训练它们所用的数据是一个秘密。
在最近一次涉及OpcJacker的活动中,研究人员注意到OpcJacker是通过针对伊朗恶意广告的地理定位传播的。恶意网站检查客户的IP地址以确定受害者是否使用VPN服务。如果受害者正在使用VPN服务,就不会发生上述攻击行为。请注意,这种变化只是一个小细节,对第一阶段shellcode的整体功能没有影响。请注意,数据文件可以是不同的文件格式,CHM格式能被模仿篡改。
0x01 前言在2021年10月15日的“中国能源网络安全大赛”,笔者对WEB题目进行了尝试,幸运的做出了所有题目。0x02 ezphp这是一道很简单的题目,同时也被大家刷成了签到题。
项目中遇到的站,采用黑盒加白盒再加点运气的方式获取shell。比较基础,漏洞相对也比较简单,主要是学习交流为主。 01 前期黑盒 目标首页长这样
这里你可以理解为 a = 1,同时还可以 a =2、a = 3 ,不同的值都可以复制给同一个 变量 a 。Shell常见的变量之一系统变量,主要是用于对参数判断和命令返回值判断时使用,系统变量详解如下:。令或程序执行完后的状态,返回0表示执行成功;显示当前主机名;
安全性在软件开发过程中是一个极其重要和深刻的话题。当安全性受到损害时,会发生非常糟糕的事情。我们在软件开发生
前言SQL注入漏洞作为WEB安全的最常见的漏洞之一,在java中随着预编译与各种ORM框架的使用,注入问题也越来越少。Mybatis中SQL语句需要我们自己手动编写或者用generator自动生成。编写xml文件时,MyBatis支持两种参数符号,一种是#,另一种是$。
2022年1月,研究人员发现了一个名为ChromeLoader(也称为ChoziosiLoader和ChromeBack)的新浏览器劫持者/广告软件活动。尽管使用了简单的恶意广告,该恶意软件还是被广泛传播,可能会泄露成千上万用户和组织的数据。
稍后将会基于linux 2.4.x内核环境,演示这种感染技术。不过,由于内核模块是elf格式的,所以阅读后续内容之前,先要熟悉elf格式,并且要重点理解其符号表,之后才好明白,向正常内核模块注入感染代码的原理。----[ 2.1 - The .symtab section.symtab节区(符号表)的内容,是一个供链接器使用的Elf32_Sym结构数组,Elf32_Sym结构定义在内核的/usr/include/elf.h头文件:typedef struct
VSole
网络安全专家