ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

小白专用,文件上传漏洞笔记

2021-07-07 09:34:00  阅读:155  来源: 互联网

标签:文件 漏洞 小白 木马 字符串 php 上传


安全学习笔记day02

文件上传

什么是文件上传漏洞:

文件上传漏洞指的是攻击者上传了一个可执行的脚本文件,通过此脚本文件获得了执行服务器端命令的能力,即获得了服务端的某些权限。
常见的场景是:
某个网站或者app上,服务端允许用户上传图片或者普通的文本文件,然后攻击者能绕过这个限制,上传可执行的脚本文件来获取权限。

文件上传漏洞的危害:

1、网站被控制,对文件增删改查,执行命令,链接数据库
2、如果服务器长久未更新,可以利用exp提权,导致服务器沦陷
3、同服务器的其他网站沦陷

文件上传漏洞攻击的流程:

查看文件上传的限制条件

准备上传所用的php文件:

1、上传Web脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行,篡改主页
2、上传Flash策略文件crossdomain.xml,以此来控制Flash在该域下的行为。
3、上传病毒、木马文件,攻击者用以诱骗用户或管理员下载执行,放置后门<?php system($ ['cmd']); ?>
4、上传钓鱼图片或包含了脚本的图片,某些浏览器会作为脚本执行,实施钓鱼或欺诈。
5、创建服务器用户,查看服务器信息 (使用net user 命令)

通过文件上传来将文件上传到服务端
用蚁剑或者中国菜刀连接(或者用apache解析,网页上查看服务器配置信息)
对服务端的文件等进行修改或执行某些命令(或者信息的搜集)

以upload-labs pass-1为例:

直接上传php文件会报错
在这里插入图片描述
考虑可以先将写好的php文件(例子中为一句话木马测试用php文件)改为png格式,再使用bp抓包,在bp中将抓下来的包更改回php格式再将包放出

选择修改好的png格式文件,点击上传:
在这里插入图片描述
bp抓包完成,将抓下来的包重命名:

在这里插入图片描述
在这里插入图片描述
单击forward:

在这里插入图片描述
查看upload上传的位置可知,已经成功绕过,将木马文件上传。利用蚁剑或者菜刀进行连接

tip:
asp一句话木马:

<%eval request(“c”)%>

php一句话木马:

<?php @eval($_POST[value]);?>

Aspx 一句话木马:

<%@ Page Language="Jscript"%>
<%eval(Request.Item["pass"],"unsafe");%>

在这里插入图片描述
成功进入!(ps:使用时需要将php版本设置为5左右,注意密码的填写)php文件若为phpinfo语句则在网页查看其php版本等信息
在这里插入图片描述

对文件上传漏洞利用方式的总结:

初学者可以多看看靶场的源码

1、推断文件上传限制的方式:

文件上传漏洞分为客户端和服务端,在分析该网站是否存在文件上传漏洞时可以先进行js检查(客户端)来判断。

例upload-labs pass1,首先先查看其源代码:

在这里插入图片描述
发现存在js脚本,可以在火狐的about:config中将javascript.enabled改成false或者用bp抓包,在bp上通过修改文件名后缀来实现绕过js。

若不存在,则应该为服务端存在的文件上传限制的拦截:

若想绕过content-type(内容类型)则可以使用图片木马

图片木马:就是将木马放在txt的上面,cmd 融在一起。

制作图片木马:
1、伪造头部GIF89A(gif的文件头)
2、win下的CMD执行:copy /b test.png + muma.php cccc.png
在这里插入图片描述
3、使用图片修改软件,添加备注,写入执行命令。
服务端
	检查后缀
		黑名单
		白名单
	检查内容
		文件头检查(几个常见的文件头对应关系)
			.JPEG;.JPE;.JPG,”JPGGraphic File”
			.gif,”GIF 89A”
			.zip,”Zip Compressed”
			.doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”
		突破getimagesize()	PHP提供的方法,用以判断目标文件是否为图片。
			其返回结果中有文件大小和文件类型(通过读取文件的前八位的十六进制)。因此可将恶意文件从第9位开始写入,以绕过getimagesize()验证
		突破exif_imagetype()	判断是否为图片
		二次渲染		上传的图片会被网站进行二次处理
			bp抓包,在inturder下添加?a=1爆破点,运行多次(条件竞争)进行上传
			将一句话木马插入图片在二次渲染后会保留的那部分数据里面
	代码逻辑	条件竞争
  •  黑名单 		即限制哪些文件类型无法被上传
    
  •  白名单		即限制哪些文件类型可以上传
    

2、根据黑白名单判断具体文件上传漏洞:


> 黑名单
> 	1、	上传特殊可解析后缀
> 	2、	上传.htaccess
> 	3、	后缀大小写绕过
> 	4、	点绕过
> 	5、	空格绕过
> 	6、	::$DATA绕过
> 	7、	配合解析漏洞
> 			Apache陌生后缀解析漏洞
> 			Apache换行解析漏洞
> 	8、双后缀名绕过
> 白名单
> 	1、MIME绕过
> 	2、%00截断
> 	3、0x00截断

3、熟悉各类用于文件上传的php函数:、

  • array() 用于创建数组

  • trim() 移除字符串两侧的空白字符或其他预定义字符

  • deldot() 删除文件名末尾的点

  • strrchr(string,char) 查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符

  • strtolower() 把字符串转换为小写

  • str_ireplace(find,replace,string,count) 替换字符串中的一些字符(不区分大小写)

  • substr(string,start,length) 返回字符串的一部分,从start开始,length表示选取的部分字符串的长度

  • strrpos(string,find,start) 查找查找字符串在另一字符串中最后一次出现的位置

  • rand(min,max) 生成随机整数,在min和max之间

  • rename(oldname,newname,context) 函数重命名文件或目录

  • date() 格式化本地日期和时间,并返回已格式化的日期字符串:

  • fopen() 打开一个文件或 URL

  • fread() 读取打开的文件

  • fclose() 关闭打开的文件

  • @unpack(format,data) 从二进制字符串对数据进行解包

  • @unlink() 删除文件

  • intval() 用于获取变量的整数值

  • imagejpeg() 输出图象到浏览器或文件

  • getReailFileType() 获取真实的文件类型

  • move_uploaded_file() 将上传的文件移动到新位置

  • getimagesize() 取得图像大小

  • image_type_to_extension() 取得图像类型的文件后缀

  • stripos() 查找字符串首次出现的位置(不区分大小写)

  • isImage() 检验图片是否有效

  • imagecreatefromjpeg() 由文件或 URL 创建一个新图象

标签:文件,漏洞,小白,木马,字符串,php,上传
来源: https://blog.csdn.net/jhfjdf/article/details/118479780

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有