本文已参与 「新人创作礼」 活动,一起开启掘金创作之路。
在php网站中,默认会将以php结尾的文件解析为PHP代码。
文件上传
-
尝试上传webshell
-
判断验证逻辑
-
绕过验证逻辑
-
验证是否上传成功
-
利用webshell
a.手动操作(构造post包,传递代码)
b.利用工具:蚁剑
上传绕过方式:
-
前端验证绕过
a.重写js,使其验证无效(直接修改返回值为永真or假)
-
修改Content-Type
b.一般都是,将木马后缀
.php改为.jpg,绕过前端验证再抓包修改jpg为php。 -
中间件解析漏洞(iis/apache低版本)
apache解析漏洞 1>多后缀名,从右到左依次查看是否可以解析 2>罕见后缀解析 3>.htaccess文件 iss解析漏洞 1>iis6的文件名会被;截断 2>iis6中会导致将*.asp为后缀的目录中的文件当作asp文件执行 这两个漏洞需要服务器本身确实有这样的文件或文件夹,若只是通过web应用映射出来的url则无法触发 3>iis支持put方法,move方法修改文件后缀 攻击步骤:通过OPTIONS探测服务器信息 上传文本文件 通过MOVE方法改名
-
后缀绕过(php2,php3,php5,phtml等可以解析的文件)
-
.htaccess绕过(解析文件。强制将jpg解析为php) -
php<=5.3 %00截断(a.php%00.jpg)
-
大小写绕过
1.文件上传原理分析 (1)文件上传方式有很多,但底层的实现都是文件的读写操作(I/O读写)
文件上传的必要前提 1) 提供form表单、method必须是post 2) form表单的entype必须是multipart/form-data 3) 提供input type=“file”类的上传输入域
(2)文件上传到本地服务器的缺点:
-
当服务器重启,本地服务的文件没了
-
搭建服务器集群:A服务器1000, B服务器......... 客户第一次上传时访问的是A服务器。 客户第二次访问文件,访问的是B服务器
(3)如何解决本地服务器上传的缺点:
(1)自己搭建一个文件服务器;不会重启,维护
(2) 使用第三方的文件服务器