ToB企服应用市场:ToB评测及商务社交产业平台
标题:
文件上传漏洞
[打印本页]
作者:
没腿的鸟
时间:
2024-5-14 01:34
标题:
文件上传漏洞
漏洞描述
文件上传漏洞是指由于程序员未对上传的文件进行严格的验证和过滤,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。如常见的头像上传,图片上传,oa 办公文件上传,媒体上传,允许用户上传文件,如果过滤不严格,恶意用户使用文件上传漏洞,上传有害的可以执行脚本文件到服务器中,可以获取服务器的权限,或进一步危害服务器。
漏洞危害
非法用户可以上传的恶意文件控制整个网站,甚至是控制服务器,这个恶意脚本文件,又被称为 webshell,上传 webshell 后门可以很方便地查察服务器信息,查察目次,执行系统命令等。
1、与文件上传的相关知识
文件上传的过程
客户端 选择发送的文件->服务器接收->网站程序判定->暂时文件->移动到指定的路径
服务器 接收的资源程序
服务器接收资源的代码
1 <?php
2 if ($_FILES["file"]["error"] > 0)
3 {
4 echo "Error: " . $_FILES["file"]["error"] . "<br />";
5 }
6 else
7 {
8 echo "Upload: " . $_FILES["file"]["name"] . "<br />";
9 echo "Type: " . $_FILES["file"]["type"] . "<br />";
10 echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
11 echo "Stored in: " . $_FILES["file"]["tmp_name"];
12 }
13 ?>
复制代码
客户端文件上传的代码
1 <?php
2 if ($_FILES["file"]["error"] > 0)
3 {
4 echo "Error: " . $_FILES["file"]["error"] . "<br />";
5 }
6 else
7 {
8 echo "Upload: " . $_FILES["file"]["name"] . "<br />";
9 echo "Type: " . $_FILES["file"]["type"] . "<br />";
10 echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
11 echo "Stored in: " . $_FILES["file"]["tmp_name"];
12 }
13 ?> 2 3 4 5 Filename: 6 7
8 9 10 11
复制代码
文件上传代码
文件上传时会返回一些代码给客户端,客户端根据这些值判定上传是否正常
值:0 没有错误发生,文件上传乐成
值:1 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值
值:2 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定 的值
值:3 文件只有部门被上传
值:4 没有文件被上传
文件上传漏洞
文件上传漏洞分为直接文件上传,这种漏洞类型是属于高危漏洞的一种,能直接 getshell,而且没有任何限制,攻击者很容易通过上传点,获取网站的控制权限。另外一种是有条件的上传漏洞,这种漏洞一般是开发者经验不足,对文件上传做了简单的限制,如简单的前端认证,文件头文件检测,这种检测行为是可以完全绕过的,另外就是权限认证没处理,没有对文件上传页面进行权限认证,匿名者就能访问上传文件,上传网页后门到网站目次,控制整个网站。另有一些上传逻辑有题目,导致文件上传可以被绕过,上传后门到网站上。有的文件上传漏洞则是通过中心件大概系统特性上传可以被服务器解析脚本文件,从而导致网站可被控制。
修复方案
文件上传目次设置为禁止脚本文件执行,如许纵然被上传后门的动态脚本也不能解析运行
在网站中需要存在上传模块,需要做好权限认证,不能让匿名用户可访问
设置上传白名单,白名单只允许图片上传,如 jpg png gif 其他文件均不允许上传
上传的后缀名,肯定要设置成图片格式,如 jpg png gif
攻击方法
寻找测试网站的文件上传的模块,常见头像上传,修改上传,文件编辑器中文件上传,图片上传、媒体上传等,通过抓包上传恶意的文件进行测试,上传后缀名 asp php aspx 等的动态语言脚本,查察上传时的返回信息,判定是否能直接上传,如果不能直接上传,再进行测试上传突破。例如上传文件的时间只允许图片格式的后缀,但是修改文件时,却没有限制后缀名,图片文件可以修改成动态语言格式如 php,则大概访问这个文件的 URL 直接 getshell,可以控制网站。
常见网站文件后缀名
可执行脚本的文件后缀名,可被网站目次解析
以下是常见的后缀名
asp asa cdx cer php aspx ashx jsp php3 php.a shtml phtml
有些网站会对 asp 大概 php 进行过滤,转成空可用这些后缀名
aspasp asaspp phpphp
2、任意文件上传漏洞
任意文件上传漏洞又名文件直接上传漏洞,这种漏洞危害极大,如果攻击者能直接上传恶意脚本到网站存放的目次,且这个目次可解析动态脚本语言,那么攻击者就可以大概直接获取网站权限,进一步权限提升,从而控制服务器
代码分析
直接获取文件名,把上传的暂时文件移动到 hackable/uploads 目次下
直接上传文件,网页会返回路径,访问 url 即可 getshell
上传的文件可以改成其他恶意脚本大概后门,如中国菜刀一句话,后门大马等,即可获得 webshell
3、绕过前端 js 检测上传
在文件上传时,用户选择文件大概提交时,有些网站会对前端文件名进行验证,一般检测后缀名,是否为上传的格式。如果上传的格式不对,则弹出提示文字,此时数据包并没有提交到服务器,只是在客户端通过 js 文件进行校验,验证不通过则不会提交到服务器进行处理。
代码分析
客户段 html 上传文件时会调用 checkFile 函数,首先获取文件后缀名。如果文件为空,则弹出“请选择要上传的文件”,如果文件不为空,获取上传的文件后缀名不是 .jpg、.png 、.gif 此中一种则提示“该文件不允许上传”,上传失败。
绕过 js 检测方法
按 F12 使用网页审计元素,把校验的上传文件后缀名文件删除,即可绕过上传
把恶意文件改成 js 允许上传的文件后缀,如 jpg、gif、png 等,再通过抓包工具抓取 post 的数据包,把后缀名改成可执行的脚本后缀如 php 、asp、jsp、 net 等,即可绕过上传
删除 js 文件
抓包修改后缀名
4、绕过 contnet-type 检测上传
有些上传模块,会对 http 的类型头进行检测,如果是图片类型,允许上传文件到服务器,否则返回上传失败。由于服务端是通过 content-type 判定类型, content-type 在客户端可被修改,则此文件上传也有大概被绕过的风险。
代码分析
首先进行 submit 提交判定,再检测文件类型如果是 image/jpeg 大概 image/png 即允许上传
content-type 检测上传攻击
上传脚本文件,抓包把 content-type 修改成 image/jpeg 即可绕过上传
参考网站:https://www.runoob.com/http/http-content-type.html
5、绕过黑名单上传
上传模块,有时间会写成黑名单限制,在上传文件的时间获取后缀名,再把后缀名与程序中黑名单进行检测,如果后缀名在黑名单的列表内,文件将禁止文件上传。
代码分析
首先检测 submit 是否有值,获取文件的后缀名,进行黑名单对比,后缀名不在黑名单内,允许上传
绕过黑名单上传攻击
上传图片时,如果提示不允许 php、asp 这种信息提示,可判定为黑名单限制,上传黑名单以外的后缀名即可
在 iis 里 asp 禁止上传,可以上传 asa cer cdx 这些后缀,如果网站允许.net 执行,可以上传 ashx 代替 aspx
在不同的中心件中有特殊的情况,如果在 apache 可以开启 application/x-httpd-php
在 AddType application/x-httpd-php .php .phtml .php3 后缀名为 phtml 、php3 均被解析成 php 有的 apache 版本默认就会开启,即上传目标中心件可支持的环境的语言脚本即可,如.phtml、php3
6、htaccess 重写解析绕过上传
htaccess 文件的作用是可以帮我们实现包括:文件夹密码保护、用户主动重定向、自界说错误页面、改变文件扩展名、封禁特定 IP 地址的用户、只允许特定 IP 地址的用户、禁止目次列表,以及使用其他文件作为 index 文件等功能
在 htaccess 里写入 SetHandler application/x-httpd-php 则可以把文件重写成 php 文件,要 htaccess 的规则见效,则需要在 apache 开启 rewrite 重写模块,由于 apache 是多数都开启这个模块,以是规则一般都见效
代码分析
如果 submit 有值,$deny_ext = array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf");
此中包括了所有的执行脚本,上传的文件后缀名在列表内则禁止上传
htaccess 重写解析攻击
上传.htaccess 到网站里,其内容是
SetHandler application/x-httpd-php
再上传恶意的 jpg 到.htaccess 雷同目次里,访问图片即可获取执行脚本
重点 fck 编辑器
7、大小写绕过上传
上传模块的后缀名采用黑名单判定,但是没有对后缀名的大小写进行严格判定,导致可以更改后缀大小写绕过
如 PHP、 Php、 phP、pHp
代码分析
获取文件后缀名进行判定,如果后缀在这个字典里则禁止上传。 $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
黑名单大小写绕过攻击
仔细阅读黑名单,查察是否有被忽略的后缀名,当前可以使用 phP 绕过
8、空格绕过上传
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4