web安全之文件上传漏洞
在把文件上传到web服务器时,如果没有对文件进行检查限制,就有可能导致木马进入web服务器,造成控制破坏。
** 原因**
(1)文件上传时检查不严
比如应用在文件上传时根本没有进行文件格式检查,导致攻击者可以直接上传恶意文件。
或应用仅仅在客户端进行了检查,而在专业的攻击者眼里几乎所有的客户端检查都等于没有检查,攻击者可以通过NC,Fiddler等断点上传工具轻松绕过客户端的检查。
(2)文件上传后修改文件名时处理不当
一些应用在服务器端进行了完整的黑名单和白名单过滤,在修改已上传文件文件名时却百密一疏,允许用户修改文件后缀。
如应用只能上传.doc文件时攻击者可以先将.php文件后缀修改为.doc,成功上传后在修改文件名时将后缀改回.php。
(3)使用第三方插件引用时
好多应用都引用了带有文件上传功能的第三方插件,这些插件的文件上传功能实现上可能有漏洞,攻击者可通过这些漏洞进行文件上传攻击。
如著名的博客平台WordPress就有丰富的插件,而这些插件中每年都会被挖掘出大量的文件上传漏洞
执行
web脚本语言被服务器解释执行时
Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为
上传病毒木马文件诱骗他人下载
一些带脚本的图片在某些浏览器将被作为脚本执行
上传WebShell来控制服务器
出现位置
webshell
webshell就是一种可以在web服务器上执行的后台脚本或者命令执行环境。
webshell一方面能帮助站长管理网站和服务器另一方面也被用作网站入侵的脚本攻击工具。
Burp Suite
Burp Suite是一个集成化的渗透测试工具
下载安装可以参考[大佬的博客https://blog.youkuaiyun.com/LUOBIKUN/article/details/87457545?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase)
bp的原理:
简单了解HTTP头
1、Host(请求的web服务器域名地址) — — 你找的是谁?Host: www.sina.com.cn
2、User-Agent (客户端运行的浏览器类型的详细信息)— — 你用的什么浏览器?
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:73.0) Gecko/20100101
Firefox/73.0
3、Accept (浏览器可接受的数据类型)— — 你能看得懂啥?
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
4、Referer(用户从该URL代表的页面出发访问当前请求的页面) — — 你从哪来?
中国蚁剑
两款常用的网络管理软件
木马
php一句话木马
大马:指木马病毒;php大马,就是php写的提取站点权限的程序;带有提权或者修改站点功能。
asp&&aspx一句话木马
<%eval request(“caidao”)%>
<%@ Page Language=“Jscript”%><%eval(Request.Item[“caidao”],"unsa
JSP一句话木马
<% if(request.getParameter(“f”)!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter(“f”))).write(request.getParameter(“t”).getBytes());%>
保存为1.jsp
提交url为 http://localhost/1.jsp?f=1.txt&;t=hello
访问http://localhost/1.txt 出来hello
常见绕过方式
没有对上传的文件做任何的过滤又叫任意文件上传。
例如:
DVWA-Low
前端过滤等同于没有过滤,前端对黑客来说等同虚设。
例如:
Upload-labs-01
方法一:
F12 点击设置,点击禁止JavaScript执行。上传一个php文件
方法二:
把 1.php后缀名改成 1.jpg,然后上传同时burp抓包,burp中修改后缀名为php发包即可。burp中修改后缀名,然后发送。
文件类型校验就是指HTTP头中的 Content-Type,在服务端进行校验。
Content-Type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,在 HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。
根据文件后缀名来判断文件是否允许上传,程序会把不允许上传的文件列到一个小本本里,
一旦发现上传的文件在小本本中就马上制止。
先上传正常文件,试验能否正常上传
再上传需要上传的内容,使用不同后缀名尝试 黑白名单
Windows特性:
(1)上传 shell.php(%80-99)
(2)NTFS ADS特性
①、上传 shell.php::$DATA
②、上传 test.jpg…
③、上传 1.php<> 之类的后缀名,和 ② 类似。
④、上传 1.php:.jpg
1.php:.jpg 这类文件在上传后,在Windows中会被保存为一个 空的 1.php 文件,然后可
以再上传一个 1.php<> 或者 1.php<< 或者 其他Windows不允许的后缀,就会覆盖 前边那个空的1.php
续