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

不同格式的文件 它的头部是固定的

1)本关主要判断文件头是否为所允许的类型,不同文件后缀文件头不同。(010 editer)

2)将上传的shell.php 添加文件头GIF89a  content-type修改为:image/jpeg

3)放包上传成功,复制图像地址连接即可

5、黑名单-过滤不严

无递归安全问题:只检测一次,没循环,pphphp = php

代码中只过滤一次

6、黑名单-过滤不严

系统大小写敏感属性

window不区分大小写   linux区分大小写

7、低版本GET-%00截断 

两个条件:1)魔术方法开关   2)版本

自动解码一次

/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.hqwc.cn/news/615067.html

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

相关文章

【QT入门】Qt自定义控件与样式设计之控件提升与自定义控件

【QT入门】Qt自定义控件与样式设计之控件提升与自定义控件 往期回顾 【QT入门】Qt自定义控件与样式设计之QProgressBar用法及qss-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QSlider用法及qss-CSDN博客 【QT入门】Qt自定义控件与样式设计之qss的加载方式-CSDN博客 一、最终…

flutter中鼠标检测事件的应用---主要在于网页端使用

flutter中鼠标检测事件的应用—主要在于网页端使用 鼠标放上去 主要代码 import package:flutter/material.dart;class CustomStack extends StatefulWidget {override_CustomStack createState() > _CustomStack(); }class _CustomStack extends State<CustomStack>…

c++中的内联函数和空指针

在C语言中我们学到了宏和宏函数&#xff0c;宏对于类型没有严格的限制&#xff0c;而且不需要建立栈帧&#xff0c;可以提高运行效率&#xff0c;但是宏不能进行调试&#xff0c;容易出错&#xff0c;而且没有类型检查。 为了补C语言中的坑&#xff0c;c中出现了内联函数inlin…

阿里云优惠券是什么?有什么用?如何领取?

阿里云作为国内领先的云计算服务提供商&#xff0c;为广大用户提供了高效、稳定、安全的云服务。为了帮助用户更好地使用阿里云&#xff0c;降低用户的成本&#xff0c;阿里云推出了优惠券活动。本文将为大家详细介绍阿里云优惠券是什么、有什么用以及如何领取。 一、阿里云优惠…

HTML 入门 ( 一 )

HTML文档创建 首先创建一个txt文本文档 修改文件后缀 HTML标签 标签结构 标签又称为元素,是HTML的基本组成单位分为: 双标签与单标签推荐小写标签名 结构: 双标签示例代码: <marquee> My name is Kvein. </marquee>单标签示例代码: <input>标签的并列与嵌…

测试接口时出现HttpMessageNotReadableException: Required request body is missing

问题 测试接口时出现org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing异常 原因 发送请求时没有传参数 解决办法 第一种方式: 传个参数 第二种方式&#xff1a;给个空的JSON

教你们如何用html+css做出漂亮的表格

这个HTML文档定义了一个简单的网页&#xff0c;主要用于展示一个群聊信息的表格。以下是关于这个表格的详细介绍&#xff1a; 基本结构&#xff1a; 文档以<!DOCTYPE html>开始&#xff0c;这是HTML5的文档类型声明。<html>标签是HTML文档的根元素。<head>部…

QA测试开发工程师面试题满分问答12: 用户上传照片如何设计测试用例并进行测试

针对用户上传照片的功能&#xff0c;以下是一些从 QA 角度设计测试用例的示例&#xff0c;涵盖了前端功能点、后端功能点、缓存、异常处理、资源占用、并发和网络等维度&#xff1a; 前端功能点&#xff1a; a. 用户界面&#xff1a;验证上传照片的用户界面是否易于使用和导航&…

centos 7 sshd服务无法自动随机启动

centos 7 sshd 服务无法伴随主机启动而启动&#xff0c;而使用systemctl start sshd可以启动&#xff0c;很奇怪。 后来使用Kimi查询&#xff0c;有提示“检查系统启动服务的顺序和状态” systemctl list-dependencies <service>确保所有依赖服务都已正常启动。 查看本…

python--正则表达式,元字符,反义符,转义符,位数问题

正则表达式&#xff08;regular expression&#xff09;&#xff1a; 为什么使用正则表达式&#xff1a; 在软件开发过程中&#xff0c;经常会涉及到大量的关键字等各种字符串的操作&#xff0c;使用正则表达式能很大程度的简化开发的复杂度和开发的效率&#xff0c;所以pytho…

福州装修|福机新苑 105m² 3室2厅2卫,奶油原木风。福州中宅装饰,福州装修

设计亮点 设计理念&#xff1a; 该方案意为在黄白之间&#xff0c;其色半出而不是全显现。 方案简介&#xff1a; 本案例的业主追求自然、舒适、温暖的装修效果&#xff0c;意向是打造出自然质朴的室内环境&#xff0c;让人能感受到回归自然的平和感和舒适感。 玄关 步入玄关&…

DC-2渗透测试复现

DC-2渗透测试复现 目的&#xff1a; 获取最高权限以及5个flag 过程&#xff1a; 信息打点-ssh连接-git提权 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.136) 靶机&#xff1a;DC_2(192.168.85.132) 复现&#xff1a; 一.信息收集 nmap -sP 192.168.85.0/24 …