文件上传漏洞
为什么会出现文件上传漏洞:
上传文件的时候,如果服务器端脚本语言,未对上传的文件进行严格的验证和过滤,就有可能上传恶意的脚本文件,从而控制整个网站,甚至是服务器。
文件上传漏洞的危害:
网站被攻击者控制并对文件增删改查,执行命令,链接数据库进行操作
如果服务器长久未更新,可以利用各种手段提权,导致服务器沦陷
同服务器的其他网站沦陷(旁站)
存在文件上传漏洞的前提:
1. 网站有上传文件的功能
2. 上传到的目录能够解析脚本语言
3. 能够访问到上传的文件(即能知道上传文件后的路径)
文件上传漏洞的实操演示-pikaqiu:
Pikaqiu文件上传第一关:
告诉我们文件不符合规范,但是是通过js代码弹窗告诉我们的.而对于绕过前端检测,我们应该考虑直接先绕过前端检测,然后再通过BP去抓包获得通过前端检测后的数据包,然后再去进行操作.
整体的一个思路是:先把我们的PHP文件的后缀名改为jpg或者其他可以通过前端检测的图片格式.等通过前端检测后,再通过抓包把我们修改的后缀名再改回到PHP,因为服务器是通过后缀名来判断你的文件格式
在点击之前打开BP抓包.然后进行修改后缀名的操作
修改后缀名
然后放开BP,文件上传成功,然后再访问该文件,检查是否成功
Pikaqiu文件上传第二关:
我们发现当我们上传一个不是以上格式的图片,就会告诉我们只能是这几种格式才能上传,否则都不能成功.基于此我们猜测是否有可能是白名单过滤,即只有这几种的后缀名的图片才能上传,其他的都不行.为了验证我们的猜想,我们随机创造一个后缀名,来检查是否能成功上传.
仍然不成功,证明是白名单过滤,基于此,我们的绕过思路与第一关一致,先改后缀名,再抓包,去进行修改
此次所用文件与仍然为第一关所用文件
修改后缀名
检查是否成功,成功.说明绕过
Pikaqiu文件上传第三关:
这一关经过检测,先改后缀名,再抓包改后缀名的方法已经无法实现绕过,且只要是其他文件改为图片格式的图片都无法通过,它会告诉你这是一个假文件.基于此,我们的所有方法几乎都无法绕过.
这时我们就要考虑当一个漏洞无法达到我们的目的时,进行漏洞联动,使用其他的漏洞一起去协助我们达到我们的目的.pikaqiu当中有一关是关于包含文件的,即下面的图片.
这时我们就要考虑到一个函数的特殊性,include
只要是在php文件当中使用了include,include所包含的文件都会当成php代码进行执行,即使不是php文件.
基于此,我们应该把php的代码写入到图片当中,即把图片以记事本或者其他方式打开,然后把php代码写进去,然后通过文件上传漏洞进行上传,再通过另外一个漏洞来打开该文件.
这里提供图片加php代码上传绕过的三种方式:
- 直接把php代码写入到一个真的图片(即本就是图片)当中
- 在php文件前面加上GIF89a这一串代码,再把php文件转为图片格式上传,可以绕过."GIF89a" 是 GIF 图像格式的标识符,用于标识一种特定的GIF文件格式。
- 通过此命令进行写入copy /b 1.png + 1.php 2.png ,该命令在cmd当中写入,但要确保在写入的当前目录下,存在1.png和1.php这两个文件.该命令的含义是将1.php与1.png这两个文件以二进制的方式合并成一个2.png.
上传成功,再通过include漏洞进行引用,从而触发我们的代码
注意所引用的文件位置要写对,否则无法成功
所有的php内容均可以替换为木马内容,使用蚁剑进行连接,进而控制服务器.