| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 文件上传漏洞个人笔记 -> 正文阅读 |
|
[PHP知识库]文件上传漏洞个人笔记 |
什么是文件上传漏洞及原理?顾名思义,文件上传漏洞就是有可以上传文件的地方就 可能 会存在上传漏洞,可以说有文件上传的地方就可以测试是否存在文件上传漏洞,攻击者找到上传文件或者上传图片一个地方,在上传的文件或者图片中写入一句话木马或者可进行攻击的代码,并且程序员未做上传文件的格式及内容过滤,导致这句代码可在后端服务器执行(.php、.asp等文件格式)。 不是有文件上传的地方就有上传漏洞,但有文件上传的地方都可以测试是否存在漏洞。~~~有点儿绕。。。 如何查找及判断?上传头像、图片、文件的地方,大部分网站的会员中心,及后台管理系统上传有无上传的地方,再则通过URL爆破目录进行查找。 同样,我也是搭建了一个靶场,这个靶场主要就是针对上传漏洞的,网上可以说大部分也是讲的这个靶场,我也来讲一讲。 可以看见这个图有一个上传的功能,我试一试上传一个php后缀的文件。 这是文件内容 ? ?弹出一个JS窗口,说的是只能上传.jpg等三种格式的图片,有弹窗说明是JS,我们禁用JS尝试能否上传成功。 禁用JS ?上传php文件成功 ?访问该图片 说明木马成功执行。 既然禁用了JS,说明这个网站是做了前端的过滤。那么我们就可以进行抓包改包绕过前端。 上传jpg文件 ? 抓包,将jpg改为php后缀放包 ? 后缀为php文件,成功。 要知道的是,不同的后端的脚本语言的后缀都是不相同的,所以进行测试的时候要搞清楚后端脚本语言的后缀有哪些。 再一种就是可以通过各种cms的版本以及CVE的文件上传漏洞编号在网上搜索历史漏洞,或者已经有人发布的漏洞来进行漏洞查找或复现。 如何利用上传成功了就直接上菜刀、蚁剑等自我觉得刑的工具。 文件上传漏洞有哪些危害?我们上传的文件内容是自己编辑的,那么这文件中写着一句话木马,或者大马(后门文件)等等可以直接拿到webshell权限的文件。直接控制服务器。 验证和绕过验证这里举个简单的例子。这个是 upload-labs 漏洞靶场的第一关代码
上面包含了3个文件,也就是说这个文件中可能会调用以上三个文件中的代码。 submit在前端页面中就是上传按钮,意思就是点击了上传按钮过后就会进行isset验证。 ?往下走,如果存在再执行 file_exists(UPLOAD_PATH)验证 ?UPLOAD_PATH可以理解为上传的路径(上传到哪里去)我们在config.php文件中查看。 ?上传的文件夹路径是../upload $_FILES['表单中参数的名字']['文件名'],这个$_FILES全局变量作用在下。 $_FILES['upload_file']['name']; ????? ?? //客户端上传文件的原名称,不包含路径 将上传的文件写入变量$temp_file 将上传的文件及原文件名上传到UPLOAD_PATH的 / 下面?? UPLOAD_PATH= .. / upload? 所以就是upload / 下面。 ? ?将获取的$temp_file文件移动到$img_path下面,然后允许上传。 绕过绕过分为黑名单和白名单绕过 黑名单,是不允许某些文件类型上传。例:不允许 image/jpg || gif || png 格式上传,其余文件格式全部可以上传。 白名单,是只允许某些文件类型上传。例:只允许 image/jpg || gif || png? 格式上传,其余过滤。 黑名单特殊解析后缀 ?可以看出过滤了以上四个后缀,但是php有很多可执行的后缀,php3、php5等等。 ? .htaccess
在同目录下文件名有baby这个词的都解析成.php 在未设置白名单和黑名单过滤不严情况下,上传一个.htaccess的文件,内容是上面代码。 凡是包含baby的内容文件都会被以php的格式来执行。 现在的网站99%都是设置的白名单这样的基本不可能,所以简单提一下。 大小写 您黑名单把php、php3、php5过滤了,但是没有过滤phP、pHp3、Php5。 点与空格 在文件后面加上空格或点。 就像这样 ?但是保存过后呢,操作系统就会直接将空格或者点去掉 ::$DATA(windows尿性) 代码中没有对::$DATA做过滤处理 在window的时候如果文件名+ windows操作系统不用符号 ?那就抓咯 ? ?叠名绕过 这个绕过只能够针对粗心大意程序员对过滤的文件后缀只进行一次过滤。 比如说只过滤了yijuh1ua.php 过滤的代码是 ?str_ireplace():替换函数,将选中的数组或者字符串中的某个字符替换成另一个字符。 这里意思就是将上传文件的原名字拿去和$deny_ext中的值做对比,有的话就替换成空格。 但这里只是做了一次过滤,我们可以将文件改成 yijuh1ua.pphphp来进行尝试。
|
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 9:57:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |