web安全学习笔记【22】——文件上传(1)

WEB攻防-PHP应用&文件上传&函数缺陷&条件竞争&二次渲染&黑白名单&JS绕过

演示案例:

  • PHP-原生态-文件上传-前后端验证
  • PHP-原生态-文件上传-类型文件头验证
  • PHP-原生态-文件上传-后缀黑白名单验证
  • PHP-原生态-文件上传-解析配置&二次渲染
  • PHP-原生态-文件上传-逻辑缺陷&函数缺陷

#知识点:

1、ASP-SQL注入-Access数据库

2、ASP-默认安装-数据库泄漏下载

3、ASP-IIS-CVE&短文件&解析&写入

---------------------------------------

1、PHP-MYSQL-SQL注入-常规查询

2、PHP-MYSQL-SQL注入-跨库查询

3、PHP-MYSQL-SQL注入-文件读写

---------------------------------------

1、PHP-MYSQL-SQL注入-数据请求类型

2、PHP-MYSQL-SQL注入-数据请求方法

3、PHP-MYSQL-SQL注入-数据请求格式

---------------------------------------

1、PHP-MYSQL-SQL注入-方式增删改查

2、PHP-MYSQL-SQL注入-布尔&延迟&报错

3、PHP-MYSQL-SQL注入-数据回显&报错处理

---------------------------------------

1、PHP-MYSQL-SQL注入-二次注入&利用条件

2、PHP-MYSQL-SQL注入-堆叠注入&利用条件

3、PHP-MYSQL-SQL注入-带外注入&利用条件

---------------------------------------

1、注入工具-SQLMAP-常规猜解&字典配置

2、注入工具-SQLMAP-权限操作&文件命令

3、注入工具-SQLMAP-Tamper&使用&开发

4、注入工具-SQLMAP-调试指纹&风险等级

---------------------------------------

1、PHP-原生态-文件上传-检测后缀&黑白名单

2、PHP-原生态-文件上传-检测信息&类型内容

3、PHP-原生态-文件上传-函数缺陷&逻辑缺陷

4、PHP-原生态-文件上传-版本缺陷&配置缺陷

#章节点:

Web层面:Web2.0 & Web3.0

语言安全:JS,ASP,PHP,NET,Java,Python等(包含框架类)

OWTOP10:注入,文件安全,XSS,RCE,XXE,CSRF,SSRF,反序列化,未授权访问等

业务逻辑:水平垂直越权,支付签约&购买充值,找回机制,数据并发,验证码&弱口令等

特殊漏洞:JWT,CRLF,CORS,重定向,JSONP回调,域名接管,DDOS,接口枚举等

关键技术:POP链构造,JS逆向调试,NET反编译,JAVA反编译,代码解密,数据解密等

Web3.0:未待完续筹备中....

#学习前必读:

1、课前一定要明白:

文件解析安全问题上,格式解析是一对一的(不能jpg解析php)

换句话来说有解析错误配置或后缀解析漏洞时才能实现格式差异解析

文件上传不只是网站中,一些app当中也有上传的操作,比如头像、文件。攻击者利用这个上传的功能,尝试上传后门,连接后门进行攻击。

2、文件上传安全

指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语言版本,语言函数,中间件,引用的第三方编辑器等存在缺陷地方配合利用。另外文件上传也有多个存储逻辑(代码的服务器还是别的服务器,就会有权限不同的问题),不同的文件存储方案也会给攻击者带来不一样的挑战!

#测试环境安装参考:

https://github.com/ffffffff0x/f8x

https://github.com/fuzzdb-project/fuzzdb

https://github.com/sqlsec/upload-labs-docker

0、下载上述资源
1、docker安装

f8x -d 或 f8x -docker

2、进入项目文件夹

cd upload-labs-docker

3、一键部署运行

docker-compose up -d

#upload-labs-docker知识点:

1、前端JS

如何判断是否是前端验证呢?(最好最快的方式就是看源码)

1)右键查看源代码(查看是否有js的验证代码)

2)抓包验证(前端校验一般抓包工具抓不到数据包)

首先抓包监听,如果上传文件的时候还没有抓取到数据包,浏览器就提示文件类型不正确的话,那么这个多半就是前端校验了

抓包是抓数据出去的包,经过这个浏览器发送到对方服务器,服务器再回显过来,发送到对方服务器会先经过抓包工具,就是因为验证在浏览器产生。

因为直接上传php不行,所以就可以选择上传正常格式的图片让它通过前端校验,再抓包修改为php格式发送到服务器。

2、.htaccess

AddType application/x-httpd-php .png

.htaccess是一个修改解析配置的文件

借助这个配置让.png的命名文件当做类型AddType application/x-httpd-php执行 (php的类型)即当作php执行

1)哥斯拉生成木马,命名shell.png

2)上传抓包,修改文件名为 .htaccess 

      木马内容修改为AddType application/x-httpd-php .png 放包

3)重新上传shell.php  上传成功 复制图像地址哥斯拉连接即可

总结:中间件的一个配置文件重新写入、重新修改了解析规则,实现了图片把后门执行出来的结果。

3、MIME类型

Content-Type:image/png

这一关会根据上传的文件不同的后缀分配不同的文件类型

如下:

1)正常上传jpg格式的木马,让它通过校验

2)上传时候抓包,修改后缀为php

3)上传成功,复制图像地址哥斯拉连接

4、文件头判断

GIF89a

5、黑名单-过滤不严

无递归,pphphp

6、黑名单-过滤不严

系统大小写敏感属性

7、低版本GET-%00截断

自动解码一次

/var/www/html/upload/x.php%00

8、低版本POST-%00截断

手工解码一次

../upload/x.php%00 二次解码

9、黑名单-过滤不严

php3

10、逻辑不严-条件竞争

<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>

上传不断发包

请求不断发包

11、二次渲染

先搞个正常图片,上传导出渲染后的图片

对比保留部分,在保留部分添加后门代码

最后利用提示的文件包含执行图片后门代码

11、函数缺陷

move_uploaded_file 1.php/.

12、代码审计-数组绕过

-----------------------------174283082921961

Content-Disposition: form-data; name="save_name[0]"

http://2.php/

-----------------------------174283082921961

Content-Disposition: form-data; name="save_name[2]"

gif

涉及资源:

补充:涉及录像课件资源软件包资料等下载地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/804114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Camera API 1打开相机失败

目前Camera API 1使用的比较少了&#xff0c;一般代码如下。遇到的问题是camera1接口无法打开相机&#xff0c;cam2接口打开正常。最后排查结果是 sensor的 frameRate 配置不对。 Camera camera;CameraPreview mPreview;SuppressLint("MissingPermission")Overridepr…

React 中实现组合键操作的三种方法

在 React 中实现组合键可以使用以下方式: 使用 KeyboardEvent.getModifierState() 方法: import React, { useState, useCallback } from react;const MyComponent () > {const [isCtrlShiftPressed, setIsCtrlShiftPressed] useState(false);const handleKeyDown useC…

010 spring整合mybatis(事务)(xml)

文章目录 pom.xmlProductsMapper.javaProductsServiceImpl.javaProductsService.javaProductsMapper.xmlApplicationContext.xmldb.propertiesmybatis-config.xmlProductsServiceImplTest.java pom.xml <?xml version"1.0" encoding"UTF-8"?> <…

SpringBoot怎么使用Validation校验参数

1. Validation 介绍 Validation 是用于检查程序代码中参数的有效性的框架&#xff0c;作为 Spring 框架中的一个参数校验工具&#xff0c;集成在 spring-context 包中。 1.1 Validation 注解 Validation 包含了众多的注解来帮助对Java程序不同类型的参数进行校验&#xff0c;校…

XUbuntu22.04之Typora添加水印并输出pdf文件(二百二十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

功能测试_验证某城市电话号码的正确性

案例&#xff1a;验证某城市电话号码的正确性 功能测试_等价类设计用例&#xff1a; 步骤&#xff1a; 1:明确需求&#xff1a;电话号码是否正确 2:划分等价类&#xff1a;有效等价类、有效取值、无效等价类、无效取值 3&#xff1a;提取数据编写用例&#xff1a;用例编号…

STM32F407+FreeRTOS+LWIP UDP组播

开发环境介绍&#xff1a; MCU&#xff1a;STM32F407ZET6 网卡&#xff1a;LAN8720A LWIP版本&#xff1a;V1.1.0 FreeRTOS 版本&#xff1a;V10.2.1 LAN8720A硬件原理图&#xff1a; 硬件连接说明&#xff1a; MII_RX_CLK/RMII_REF_CLK ------>PA1 …

python语言之round(num, n)小数四舍五入

文章目录 python round(num, n)小数四舍五入python round(num, n)基础银行家舍入&#xff08;Bankers Rounding&#xff09;利息被银行四舍五入后&#xff0c;你到底是赚了还是亏了&#xff1f; python小数位的使用decimal模块四舍五入(解决round 遇5不进) python round(num, n…

云安全在金融领域的作用是什么?

云安全在金融领域发挥着至关重要的作用&#xff0c;使金融机构能够保护敏感数据、遵守监管要求并推动创新。通过实施强有力的安全措施、利用先进技术并对新出现的威胁保持警惕&#xff0c;金融机构可以保护其数字资产并维持客户的信任。 金融机构面临的挑战 1.缺乏全网数据支撑…

GPT与R语言回归模型(lmglm)、混合效应模型、多元统计分析

自2022年GPT&#xff08;Generative Pre-trained Transformer&#xff09;大语言模型的发布以来&#xff0c;它以其卓越的自然语言处理能力和广泛的应用潜力&#xff0c;在学术界和工业界掀起了一场革命。在短短一年多的时间里&#xff0c;GPT已经在多个领域展现出其独特的价值…

不到6毛钱的I2C总线实时时钟日历芯片LK8563

前言 8563实时时钟芯片&#xff0c;国内外均有多家生产&#xff0c;今推荐一个性价比极高的RTC芯片&#xff0c;LK8563&#xff0c;一片不到6毛钱. 特点 基于32.768kHz晶体的秒&#xff0c;分&#xff0c;小时&#xff0c;星期&#xff0c;天&#xff0c;月和年的计时 带有世…

前端:常用的获取元素位置与元素尺寸的属性与方法

属性/方法描述clientWidth返回元素内容区的宽度&#xff08;不包括滚动条、边框和外边距&#xff09;。对于box-sizing: border-box的元素&#xff0c;包含内边距。clientHeight返回元素内容区的高度&#xff08;不包括滚动条、边框和外边距&#xff09;。对于box-sizing: bord…

设计模式学习笔记 - 设计模式与范式 -行为型:7.责任链模式(下):框架中常用的过滤器、拦截器是如何实现的?

概述 上篇文章《6.责任链模式&#xff08;上&#xff09;&#xff1a;原理与实现》&#xff0c;学习了职责链模式的原理与实现&#xff0c;并且通过一个敏感词过滤框架的例子&#xff0c;展示了职责链模式的设计意图。本质上来说&#xff0c;它跟大部分设计模式一样&#xff0…

批量删除指定文件夹下xml中标注框

#!usr/bin/env python # -*- coding:utf-8 _*- """ @author:AI @file: delete_xml.py @time: 2024/04/10 """""" 在这个脚本中,remove_named_objects_from_xml 函数负责处理单个 XML 文件。它首先解析文件,然后遍历所有的 …

Python从0到100(十一):Python字典介绍及运用

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

10 spring-data-redis 中创建的 pipe 和 anon_inode 的 fd 来自于哪里?

前言 本文的问题 主要是 衍生自 spring-boot-acurator 定时检测 redis 集群导致 “IOException: Too many open files“ 对于这里 pipe 的使用, 也是很神奇, 因为 貌似没有用过这类 api 然后 这里调研一下, 然后 追根究底到最终, 是到了 jdk 的 c 代码的调用, 创建的 pipe …

51单片机之LED点阵屏

目录 1.LED点阵屏简介 2.配置LED点阵屏代码 1.LED点阵屏简介 LED点阵屏真的是遍布我们我们生活的每个角落&#xff0c;从街边的流动显示字的招牌到你的液晶显示屏&#xff0c;都是基于点阵屏的原理研究出来的。还有那个世界上最大的球状建筑物&#xff1a;MSG Sphere&#xff…

三极管结构难?——秒了

前边我们已经学完了PN结&#xff0c;二极管&#xff0c;在分析了二极管后&#xff0c;我们对这些东西有了一定深度的了解&#xff0c;但是只给我们一个二极管去研究&#xff0c;这玩意好像真的没啥大用&#xff0c;其实我们追求的是用半导体材料去代替电子管的放大作用&#xf…

网络安全(防火墙,IDS,IPS概述)

问题一:什么是防火墙,IDS,IPS? 防火墙是对IP:port的访问进行限制,对访问端口进行制定的策略去允许开放的访问,将不放开的端口进行拒绝访问,从而达到充当防DDOS的设备。主要是拒绝网络流量,阻断所有不希望出现的流程,禁止数据流量流通,达到安全防护的作用。如将一些恶…

tensorflow.js 使用 opencv.js 将人脸特征点网格绘制与姿态估计线绘制结合起来,以获得更高的帧数

系列文章目录 如何在前端项目中使用opencv.js | opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js 如何从 public 路径加载人脸特征点检测模型tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图 文章目录 系列文章目录前言一、实现步…