当前位置:   article > 正文

最新网络安全-文件上传漏洞的原理、攻击与防御_文件上传漏洞原理_文件上传漏洞防御

文件上传漏洞防御

checkFileExt

客户端通过onchange实践的checkFileExt函数进行检测,我们删除掉调用这个函数的部分。

删除后

我们再次上传tupian.php

文件上传成功

可以看路径,我们修改上方的url,进行访问。

代码已运行

可以看到代码已经运行。

中间人攻击-burpsuite拦截

文件名符合规则,使用burpsuite拦截后,修改文件后缀即可。方法类似下方MIME攻击

防御

上传无法防御,可以进行文件重命名。

上传-MIME检测

简介

js的检测基本没有了,开始使用后端代码进行检测,虽然进行MIME检测是使用的后端代码,但是,依然是从客户端获取的,可以从客户端修改,我还是归于上传这一类了。

简单来说,在请求头中Content-Type:type/subtype来表明类型,常见的有

text/plain
text/html
image/jpeg
image/jpg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/*
application/json
application/javascript
application/ecmascript
application/octet-stream
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
攻击

中间人攻击-burpsuite拦截

burpsuite拦截

修改Content-Type

Forward

可以看到发送过去了,后序验证同上,不再重复截图。

防御

上传无法防御,可以进行文件重命名。

上传-后端文件格式检测

简介

一些后端代码含有一些函数,能够判断文件类型,获取文件的一些信息。以php为例,php的getimagesize函数可以获取图像的一些信息,如果不是图像,那么无法获取信息,就会报错。

有的站点使用文件头来检测文件类型,这种检查可以在Shell前加入对应的字节以绕过检查。几种常见的文件类型的头字节如下表所示

类型二进制值
JPGFF D8 FF E0 00 10 4A 46 49 46
GIF47 49 46 38 39 61
PNG89 50 4E 47
TIF49 49 2A 00
BMP42 4D
原理

如果你学过图像相关的课程,比如信息隐藏这门课,会使用Matlab读取图像,进行信息隐藏,你就会知道图像的一些格式,符合格式的话就是那个类型的文件,一般是头部的一些字节。我们通过将恶意代码前面添加其他类型文件的头部就可以伪造成另一个类型,进而绕过检测。

攻击

我们修改tupian.php为tupian.php.jpg,进行上传。

图片格式检测

可以看到,图片没有办法上传,虽然后缀对,但是内部是不正确的。

我们使用Linux中的xxd或od命令来查看.PNG或.png图片的信息(博主虽然是在Windows中,但是使用的是cygwin)。

2.PNG

ca.png

可以看到文件前面是一样的。

使用cmd命令 copy /b CA.png + tupian.php tupian.png

生成新图片

目录下会生成新图片tupian.png,而且符合png格式,但是在图片后面是php代码。

上传成功

打开

图片上传成功,但是打开后还是图片。

我们再使用之前的文件包含漏洞就可以了,注意url。

php代码运行成功

php由于历史原因,部分解释器可能支持符合正则 /ph(p[2-7]?|t(ml)?)/ 的后缀,如 php / php5 / pht / phtml / shtml / pwml / phtm 等 可在禁止上传php文件时测试该类型。

jsp引擎则可能会解析 jspx / jspf / jspa / jsw / jsv / jtml 等后缀

asp支持 asa / asax / cer / cdx / aspx / ascx / ashx / asmx / asp{80-90} 等后缀。

除了这些绕过,其他的后缀同样可能带来问题,如 vbs / asis / sh / reg / cgi / exe / dll / com / bat / pl / cfc / cfm / ini 等。

防御

若没有文件包含漏洞,问题不大,否则无法防御。

上传-文件截断

简介

php %00截断,由于00代表结束符,00后面的所有字符都会删除掉,发生在php5.3.4之前版本,php的magic_quotes_gpc为OFF状态。

攻击

php版本调整为5.3.29

参数设置

正好被水印挡住了,挡住的部分就是参数magic_quotes_gpc。

解析-Apache文件解析

一个文件可以有多个后缀,如:lady_killer.txt.png.mp3,在Windows中自然是认为这是mp3文件,也就是说最后的后缀生效。但是,Apache却是从右向左读后缀,不认识的跳过继续读,前面的文件就认为是图片,如果没有配置mp3后缀的话。因此,对于

tupian.php.xxx就会认为这是php文件。类型的定义在Apache/conf/mime.types中

解析-IIS文件解析

IIS 6也出现截断攻击,截断字符为";"。由于phpStudy没有这个版本,太老了,不想去实现了,知道下就行了。

解析-PHP CGI路径解析

没找到了2010年的cve,可能是提交的bug吧,就是路径为evil.jpg/1.php时,Nginx会把evil.jpg当做php文件交给php运行。

Nginx + PHP CGI的一个可能的安全漏洞 - 风雪之隅

绕过

前端绕过

通过抓包提交,绕过前端js检测,删除对js验证脚本的调用,使其不能对上传的文件类型做检测,从而达到绕过

黑名单绕过

使用更多后缀

jsp jspx jspf

asp asa cer aspx

php php3 php4 pht phtml

后缀大小写绕过

由于windows不区分大小写,后端校验未使用strtolower等函数将文件后缀大小写统一处理,导致黑名单不完整而绕过

1.pHP

后缀双写绕过

后端过滤时,使用了preg_replace等替换函数将php关键字替换为空,但是却没有循环替换,导致前面的ph和后面的p重新组合成php,从而导致绕过

1.phphpp

空格绕过

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/755893
推荐阅读
相关标签
  

闽ICP备14008679号