文件上传漏洞(一)一句话木ma

简介: 文件上传漏洞(一)一句话木ma

文件上传漏洞的目标就是向服务器上传一些服务器可以解析的恶意文件,这类文件可以达到与公鸡者建立连接并执行恶意命令的作用(又名webshell)。其危害之大,早已引起业界的关注。

概述

一句话木ma是一种短小精悍、功能强大、隐蔽性极高的恶意代码。它的工作原理是通过在受害者服务器上植入一段简单的代码,使公鸡者可以远程控制服务器,进行各种恶意操作,如窃取敏感信息、篡改网站内容等。一句话木ma通常被用于黑客公鸡和网站入侵,而且很难被发现和清除。为了绕过网站防火墙WAF的检测,公鸡者通常会对一句话木ma进行变形。

一句话木ma是指一行代码即可实现公鸡的木ma程序。其中,引用中提到的一句话木ma代码为<%eval request("#")%>,而引用中提到的一句话木ma则是将木ma分开写成两行代码,分别为<%Y=request("x")%>和<%execute(Y)%>。需要注意的是,一句话木ma是一种非常危险的公鸡方式,容易被黑客利用进行公鸡。

image.png


常用工具

image.png

比较常用的就是中国菜刀和cknife、国外的Weevely

Weevely这个工具隐蔽性更高一些

步骤方法

文件上传漏洞是指公鸡者通过上传恶意文件来执行任意代码或获取系统权限的一种攻ji方式。其实现步骤如下:

了解目标网站的文件上传功能,包括上传文件的类型、大小、保存路径等信息。

尝试上传一些常见的文件类型,如jpg、png等,观察是否可以成功上传。

如果上传失败,可以通过抓包工具如burpsuit等,修改上传文件的Content-Type为图片类型,绕过文件类型检查。

如果上传成功,可以尝试上传一些恶意文件,如webshell等,获取系统权限或执行任意代码。

防御文件上传漏洞的方法包括:限制上传文件的类型、大小、保存路径等;对上传的文件进行安全检查,如检查文件头、内容等;对上传的文件进行隔离,如将上传的文件保存在独立的目录下,禁止执行权限等。

连接webshell

image.png

连接url问题

我们可以得知文件上传需要七牛云生成的Token才能上传文件,而上传文件的URL也是需要从七牛云获取的。因此,我们需要先获取七牛云的上传URL,然后才能进行文件上传操作。

以下是获取七牛云上传URL的步骤:

首先需要在七牛云上创建一个存储空间(Bucket)。

在创建存储空间时,可以选择存储区域(Zone),不同的存储区域对应的上传URL也不同。

获取上传URL的方式有两种:一种是通过七牛云的API获取,另一种是通过七牛云的SDK获取。其中,使用SDK获取上传URL更加方便。

以下是使用七牛云Node.js SDK获取上传URL的示例代码:

const qiniu = require('qiniu');
// 需要填写你的 Access Key 和 Secret Key
qiniu.conf.ACCESS_KEY = 'your access key';
qiniu.conf.SECRET_KEY = 'your secret key';
// 要上传的空间名和文件名
const bucket = 'your bucket name';
const key = 'your file name';
// 构建上传策略函数
const putPolicy = new qiniu.rs.PutPolicy({
  scope: bucket + ':' + key,
});
// 生成上传 Token
const token = putPolicy.uploadToken();
// 获取上传 URL
const config = new qiniu.conf.Config();
config.zone = qiniu.zone.Zone_z0; // 存储区域,这里选择华东地区
const formUploader = new qiniu.form_up.FormUploader(config);
const putExtra = new qiniu.form_up.PutExtra();
formUploader.putFile(token, key, localFile, putExtra, function(respErr,
  respBody, respInfo) {
  if (respErr) {
    throw respErr;
  }
  if (respInfo.statusCode == 200) {
    console.log(respBody);
  } else {
    console.log(respInfo.statusCode);
    console.log(respBody);
  }
});

1、设置绝对路径

在spring boot项目打成jar包后,可以成功上传。但是根据返回的url,找不到上传成功的文件。这时候我们需要为上传文件设置绝对路径。

image.png

#文件上传目录(注意Linux和Windows上的目录结构不同)
file:
  uploadFolder: D:///szzb-welfarework/import/img/zzysj/

注意文件路径最后的 “/”  

2、设置虚拟路径,映射访问绝对路径下资源

@Configuration
public class WebConfig implements WebMvcConfigurer {
 
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
 
        //配置资源映射:设置虚拟路径,访问绝对路径下资源:访问 http://localhost:9090/api/file/xxx.txt访问d:///uploadFiles/下的资源
        registry.addResourceHandler("/api/file/**") //虚拟路径
                .addResourceLocations("file:" + "D:///szzb-welfarework/import/img/zzysj/"); //绝对路径
    }
 
}

3、文件(图片)上传实现

/**
     * 图片保存路径,自动从yml配置文件中获取数据
     */
    @Value("${file.uploadFolder}")
    private String uploadPath;
 
 
    /**
     * 文件(图片)上传
     * @param file 图片文件
     */
    @SneakyThrows
    @Override
    public String uploadFile(MultipartFile file, String projectId, HttpServletRequest request) {
 
        //文件原名称
        String oldFilename = file.getOriginalFilename();
        //图片名后缀:.jpg、.png
        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        //uuid
        String uuid = UUID.randomUUID().toString();
        //文件新名称
        String newFileName = uuid + suffix;
 
        //创建保存上传文件的文件夹
        File folder = new File(uploadPath + newFileName);
        if (!folder.getParentFile().exists()) {
            folder.getParentFile().mkdirs();
        }
        //文件写入到该文件夹下
        file.transferTo(folder);
 
        //获得本机Ip(获取的是服务器的Ip)
        InetAddress inetAddress = InetAddress.getLocalHost();
        String ip = inetAddress.getHostAddress();
        //返回保存的url,根据url可以进行文件查看或者下载
        String fileDownloadUrl = request.getScheme() + "://" + ip + ":" + request.getServerPort() + "/api/file/" + newFileName;
 
        //ps: 在这里可以把路径url存到数据库
        //Entity entity = new Entity()
        //entity.setUrl(fileDownloadUrl);
 
        //返回保存的url
        return fileDownloadUrl;
    }



相关文章
|
安全 PHP
ctfshow-萌新-web13( 利用代码执行漏洞获取网站敏感文件)
ctf.show 萌新模块 web13关, 这一关的考点是代码执行漏洞, 需要灵活的运用各种命令执行函数, 源码中过滤了system, exec, highlight函数, cat命令, congfig, php, 点和分号等关键字, 推荐使用反引号`` 进行绕过
457 0
ctfshow-萌新-web13( 利用代码执行漏洞获取网站敏感文件)
|
2月前
|
安全 Shell 网络安全
文件上传漏洞(四)edjpgcom
文件上传漏洞(四)edjpgcom
|
2月前
|
安全 Java Linux
文件上传漏洞(三)Cknife
文件上传漏洞(三)Cknife
|
2月前
|
安全 网络协议 Shell
文件上传漏洞(七)XISE寄生虫Weevely学习
文件上传漏洞(七)XISE寄生虫Weevely学习
|
5月前
|
安全 JavaScript API
文件上传漏洞——绕过
绕过客户端检测(JS检测) 绕过服务端检测(MIME类型检测、文件后缀检测、文件内容检测)
110 1
|
5月前
|
开发框架 安全 JavaScript
文件上传漏洞
文件上传漏洞允许攻击者上传可执行脚本,获取服务器控制权。常见原因包括服务器配置不当、验证不严等。防御措施包括设置不可执行的上传目录、严格文件类型检查、随机化文件名和路径,以及使用独立的文件服务器域名。WebShell是上传的恶意脚本,常用于控制网站服务器。
77 0
|
5月前
|
自然语言处理 安全 网络安全
taoCMS v3.0.2 文件上传(CVE-2022-23880)
taoCMS v3.0.2 文件上传(CVE-2022-23880)
|
7月前
|
开发框架 安全 .NET
文件上传漏洞技术总结
该文总结了文件上传技术相关的漏洞和绕过方法,包括语言可解析的后缀(如phtml、pht)、常见的MIME类型、Windows特性(如大小写、ADS流、特殊字符)、0x00截断技巧(需满足PHP版本和magic_quotes_gpc状态)、POST型0x00截断、文件头检查(通过合成图片马绕过)、二次渲染(利用未修改部分插入恶意代码)以及各种服务器的解析漏洞(Apache的.htaccess、解析漏洞,IIS的目录解析、文件解析、默认解析和IIS 7.x/Nginx的畸形解析)。此外,还提到了Java的空字节截断问题。
166 1
文件上传漏洞技术总结
|
7月前
|
安全 网络安全 数据库
.[myers@airmail.cc].mkp勒索病毒数据怎么处理|数据解密恢复
在数字化时代,勒索病毒如[datastore@cyberfear.com].mkp等成为严重威胁,利用智能逃逸机制逃避检测。应对策略包括隔离受感染设备、分析感染途径、恢复系统及联系专业机构。制定安全策略、加强管理及关注最新威胁是长期防治关键。多种勒索病毒针对Windows服务器及各类业务软件数据库,强调数据备份和服务器安全加固至关重要。遇袭可联系技术服务号(sjhf91)或关注“91数据恢复”获取帮助。
134 0
.[myers@airmail.cc].mkp勒索病毒数据怎么处理|数据解密恢复
|
安全 PHP
ctfshow-萌新-web10( 利用命令执行漏洞获取网站敏感信息)
ctf.show 萌新模块 web10关,这一关考察的是命令执行漏洞的利用,闯关者需要知道3个以上PHP命令执行函数的使用,推荐使用 passthru()
248 0
ctfshow-萌新-web10( 利用命令执行漏洞获取网站敏感信息)