WEB安全第二篇--用文件搞定服务器:任意文件上传、文件包含与任意目录文件遍历
2021-07-21 09:55
标签:shadow 特殊字符 dex type cal apach 白名单 文件遍历 ros 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件、底层安全、漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的payload技巧以便于备忘。不是大神、博客内容非常基础,如果真的有人看而且是大牛们,请不要喷我,欢迎指正我的错误(水平有限)。 一、文件上传: 1、这本身是一个功能,但是如果没做好,就成为一个大漏洞。本质: 对上传文件没有进行类型检查,没有做进一步处理,上传文件保存路径泄露,且可访问可执行。 2、文件payload部分: 文件: (1)一句话小马 (2)大马 (3)其他配置文件.htaccess / crossdomain.xml等 3、上传文件的方式: (1)直接上传 (2)绕过前端扩展名限制上传(firebug) (3)绕过后端扩展名限制上传: #Apache的:1.php.rax.rax.rax。 #lighttpd的:xx.jpg/xx.php。 #IIS的:1.asp;abc.jpg,1.jpg%00.asp。 #Nginx:1.jpg 访问的时候http://localhost/1.jpg/x.php 当版本低时,存在xx.jpg%00.php解析漏洞。 #低版本IIS 会将/asp/目录下的所有文件都按照asp解析,或者webdav目录下上传.txt move 成.asp# 其他手段: #截断 1.php%00.jpg。 #转换大小写:1.PHP。 #修改文件类型对抗检查content-type。 #终极大招:使用copy a.gif /b + b.php /a c.php 构造包含恶意代码的正常类型文件。 4、防御: (1)接受文件使用临时路径,然后转存、文件名更换为随机字符串。 (2)不泄露文件最终保存目录。 (3)使用没有解析漏洞的高版本服务器。 (4)严格限制上传扩展名--白名单机制。 (5)做文件类型mime-type检查,对图像文件做二次渲染。 二、文件包含: 1、本质: 当上传的文件不能直接被执行时,可以借助文件包含来搞定。什么是文件包含,其实就是编程中的文件或者包引入 2、分类: (1)本地文件包含 (2)远程文件包含 3、PHP文件包含: 4、JSP文件包含 5、文件包含的利用: (1)读取敏感信息: #/etc/passwd #/etc/shadow #my.cnf\php.ini\httpd.conf\access_log等等 (2)远程包含shell小马(一句话)。 (3)配合访问上传的文件。 (4)使用封装协议,也就是说file参数后面可以是各种协议伪协议表示的文件。 (5)绕过waf和防火墙。 6、防御: (1)包含文件白名单。 (2)用户输入过滤掉. / \ 和伪协议关键词。 (3)包含的文件不允许外部可控。 三、任意目录文件遍历: 1、原因: web服务器配置不当,导致可以访问到web根目录(www目录)以外的文件,应该是绝对禁止的。且web程序设计没有对访问的目录做检查和限制。 2、比较容易发生的位置: (1)下载类 (2)图片等文件显示类 3、检测: (1)file = /etc/passwd 或者 C:/Users/ (2)file = ../../../../../../../../../../../../etc/passwd (3)http://www.test.com/index/index.php/../../../../../../../../../etc/passwd 4、防御: 1、配置不能访问WEB根目录之外的项目。 2、对可以访问的文件放在一个资源文件夹下。 3、对用户输入的特殊字符例如.和/以及\进行过滤 WEB安全第二篇--用文件搞定服务器:任意文件上传、文件包含与任意目录文件遍历 标签:shadow 特殊字符 dex type cal apach 白名单 文件遍历 ros 原文地址:https://www.cnblogs.com/mutudou/p/15029660.html 1 //All of these function:
2 /*
3 include()
4 include_once()
5 require()
6 require_once()
7 */
8
11 //http://localhost/include.php?file=phpinfo.php
12 /*
13 Remote -> allow_url_include = 1 & allow_url_fopen = 1
14 //http://localhost/include.php?file=//http://localhost/phpphpinfo.php
15 */
16 //pgpinfo.txt:
17
1 //分为静态和动态:
2 //静态
3
4 //动态:
5
6
上一篇:linux服务器部署springboot项目持续运行
下一篇:vue上传
文章标题:WEB安全第二篇--用文件搞定服务器:任意文件上传、文件包含与任意目录文件遍历
文章链接:http://soscw.com/essay/106800.html