您现在的位置是:首页 >技术杂谈 >pikachu靶场-Unsafe Upfileupload网站首页技术杂谈

pikachu靶场-Unsafe Upfileupload

mlws1900 2024-06-14 17:19:50
简介pikachu靶场-Unsafe Upfileupload

文件上传漏洞简述


什么是文件上传漏洞?
 ​ 凡是存在文件上传的地方均有可能存在文件上传漏洞,关于上传文件操作的时候对方代码写的是否完整、是否安全,一旦疏忽了某个地方可能会造成文件上传漏洞。

文件上传的原理


  网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护

文件上传漏洞有哪些危害


 文件可以自定义,可以成为Webshell,通过文件上传来上传后门,直接获取网站权限,属于高危漏洞。上传漏洞与SQL注入或者XSS相比,其风险更大。可以获取数据库信息,可以对服务器提权,获取内网权限。

文件上传漏洞如何查找及判断

1.黑盒查找

文件后台

        进入网站后台不一定能获得网站权限,可以从后台获取网站权限

会员中心

        通过图片上传

​ 文件扫描

        使用工具扫描出后台路径

2.白盒查找

​         通过代码分析到上传漏洞

​         查找文件上传功能

文件上传如何防御

将上传文件与web服务隔离
使用白名单过滤、限制上传文件类型
文件上传路径设置为不可执行权限
检查文件上传路径
自带函数检测,自定义函数检测
图片渲染 对上传文件重命名
对文件内容压缩,重新生成文件内容 检查文件内容


文件上传漏洞绕过的方式有哪些

文件包含绕过
前端限制绕过
文件扩展名绕过
ashx上传绕过
特殊文件名绕过
00截断绕过上传
htaccess解析漏洞
突破MIME限制上传
解析漏洞绕过
条件竞争绕过
CONTENT-LENGTH绕过

一、 client check(客户端检测)

说明:在前端通过js脚本对上传文件的后缀名进行验证,通过设置黑、白名单限制用户上传的文件类型。这种验证方式很不安全,很容易被绕过。可以通过拦截修改数据包轻松绕过,甚至直接在浏览器关闭js都可以绕过。

(1)这里设置了白名单,所以直接将一句话木马改成jpg后缀上传

(2)bp抓包,将后缀修改回php后,放包上传

 (3)上传成功,得到文件保存路径为uploads/qjkhcmd.php(很多实际情况并不会返回文件保存的路径,需要自己爆破或猜解获得)

(4)用蚁剑进行连接
成功连接:

二、MIME type服务端检测


说明:服务端会对上传的数据中的content-type字段进行检测,判断其是否为指定的文件格式。

(1)绕过只需要抓包将字段修改为image/jpeg图片类型即可(你开始上传的是图片,就自动变成image/jpeg的类型了),绕过的步骤和上面一样:抓包,修改后缀以及content-type字段,放包,蚁剑连接就行。

这里就不放连接shell的截图了

三、getimagesize()检测


说明:getimagesize函数会去读取文件头部的几个字符串,判断是否为正常图片的开头(各种文件头都是有固定格式,jpg、png等图片都有自己的文件头)

这种方式只能将含有一句话木马的图片上传至服务器端,不能解析,所以要利用文件包含漏洞包含上传的图片,将其解析。

文件包含漏洞


程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。服务器解析执行php文件时能通过包含函数加载另外一个文件中的php代码,当被包含的文件中存在木马时,木马就能被成功执行。

所以,这题可以采用制作图片马,利用文件包含漏洞,让图片中的木马解析成功。

(1)步骤:在一句话木马前面添加GIF89a(这是GIF图片文件头,我上面的实验都用的这种形式的一句话木马)

代码如下:

GIF89a
<?=@eval($_POST['cmd']);

 发现上传成功

利用靶场的文件包含漏洞进行利用

拼接url如下:

http://xxxxx/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2023/05/10/233506645b518282129043202491.jpg&submit=%E6%8F%90%E4%BA%A4

 这个路径是根据上面已经连接的shell拼接出来的,实战环境中只能自己去试它的相对路径

可以看到包含的jpg已经被解析为php且用蚁剑可以连接 ,漏洞利用成功

实战中遇见白名单加这个函数检测可以让你上传图片,但是找不到文件包含点就很难受

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。