| |
|
开发:
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知识库]文件上传漏洞的过滤绕过 |
这里总结一下文件上传漏洞的各种过滤机制的绕过。我找到的实验环境是upload-labs。 下载地址是GitHub - Tj1ngwe1/upload-labs: 一个帮你总结所有类型的上传漏洞的靶场 界面还是很美观的如图1-1,总共19个关卡。 图1-1 这里说一下我环境配置过程中遇到的一个小问题,就是网站的根地址设置。如图1-2 图1-2 记得把config.php文件中的$site_root改成自己的目录,不然这个美丽的界面是加载不出来的,这个是我自己更改过后的模样。另外如果文件执行时报错说缺少什么文件可能是你下载过程中遗漏了某些文件,可以重新下载一遍。(为什么要提一句这个?因为我经历过) 进入正题,其实文件上传早就学过的只是这次写个博客总结一下吧。 一、客户端过滤(js本地过滤) (1)关闭浏览器执行js的功能,经过验证切实有效。火狐浏览器为例子,修改设置以后记得刷新页面以后才会有效。配置界面如图2-1 如图2-1 另外在某些禁止复制内容的网站上关闭js就可以实现内容复制了。 ?(2)burp抓包修改后缀名 如图2-2所示,把php文件的后缀名修改成合服验证机制的后缀名,然后通过burp抓包修改后缀名,这样就可以实现绕过。 图2-2 二、MIME类型检测绕过 如图3-1,上传一个php文件但在burp中将选中字段content-type的值修改为image/jpeg ?图3-1 ?如果不知道文件类型对应的特征值可以把文件通过相同方式上传查看content-type的值 三、黑名单绕过 (1)简单的黑名单绕过,比如通过区分大小写; (2)在文件后缀加上空格字符,在windows环境下加入的这些字符会被自动过滤掉,但是在Linux和unix上不支持; (3)空字符截断如%00,ox00;char(0) (4)IIS默认解析解析.asp|.cdx|.asa等文件,当过滤中不包含这类文件时候可以绕过黑名单执行代码。 (5)也可以尝试修改文件后缀名绕过上传过滤,但是修改文件后缀以后想要文件能正常按照执行则需要一些特定的配置。比如要解析php5文件后缀的文件为php文件执行需要配置httpp.conf中有AddType application/x-httpd-php .php .phtml .phps .php5 .pht这条语句。这条语句的意义就是让phtml、phps、php5、pht这些文件当作php文件解析。 (6)在没有禁止.htaccess文件的情况下,可以上传.htaccess文件来修改apache的配置 比如将.htaccess文件内容书写为下: <FilesMatch "muma.jpg(即将上传的文件名)"> ? SetHandler application/x-httpd-php </FilesMatch> 这段代码的意义就是将muma.jpg这个文件当作php文件解析。这样就绕过了黑名单检测、、、、 四、白名单绕过 (1)利用iis中间件解析漏洞 a.iis中间件默认能够解析.asp .cdx .asa .cer文件,所以利用这个特性来绕过白名单 b.在iis5.x到6.x版本中,在网站下建立文件夹的名字为?.asp、.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 c.在IIS6.0下,分号后面的不被解析,如1.asp;jj那么服务器只会任务这是隔asp文件 (2)apache解析漏洞 1.apache解析文件名是从右向左解析的,如muma.php.aa.bb服务器先解析bb这个后缀,无法识别再解析aa这个后缀,一次类推一直到解析到php识别出是php文件所以正常解析。 2.另外可以通过修改apache配置来实现绕过比如利用AddType application这条配置来实现一些文件后缀名被当作指定文件解析,例如可以指定.jpg文件被当作php文件执行。 3.制作图片木马,例如使用copy命令。 ?将muma.php写入muma.jpg 生成一个新文件mumaP.jpg “/”后的b和a表示的文件类型,b是二进制文件,a是ascii码文件。 ?用记事本打开生成的文件可以发现代码。 随后触发该代码需要在源文件中加入 include '文件路径'; 前面的乱码是图片文件的内容,输出的phpinfho()是加入的代码显示出来的 ? |
|
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/23 11:52:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |