文件上传漏洞

文件上传漏洞服务端代码未对客户端上传的文件进行严格的验证,导致漏洞。非法用户可以利用上传的恶意文件控制整个网站,这个恶意文件被称为webshell,也可以称为一种网页后门。

1、常见的WebShell有哪些?

  • 拥有较完整功能的webshell,我们一般称为大马。
  • 功能简易的webshell称为小马。
  • 除此之外还存在一句话木马、菜刀马、脱库马等等的名词,是对于webShell功能或者特性的简称。

将这个保存在php文件中然后将文件传入服务器目录中后用中国蚁剑或中国菜刀等shell管理工具进行连接,连接成功后就可以查看服务器目录了。

2、常见的绕过方式

1、前端检测绕过

1、前端要求必须传入图片,就可以将带有一句马的php文件后缀名改为jpg或gif或png,然后上传时再抓包改变后缀名为php后成功上传

2、前端进行了php后缀过滤,用php3/php4/phtml进行绕过(phtml文件内容格式应如下)

3、若限制了大量文件后缀,此时如果是apache服务器,可以尝试上传 .htaccess后缀文件。文件内容为:


setHandler appliaction/x-httpd-php

意思是所在目录中名字包含png的文件将会被当做php代码解析,然后再上传含有一句话的png文件就好

4、服务器在后台使用函数来判断上传的文件内容是否为图片。所以如果是WebShell文件仅仅是修改了后缀,可能会被pass掉。所以,我们上传的内容必须得有真实的图片内容。

这其中一种方法是在一句话前面加一个文件头如GIF89a,另一种是直接将一句话木马的文件和图片进行合并

D:\文件上传>copy /b hi.png+hello.php hi_hello.png
hi.png
hello.pHp
已复制         1 个文件。

5、.user.ini 绕过
自 PHP 5.3.0 起,PHP支持基于每个目录的INI文件配置( .user.ini )。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。

用法:
.user.ini中两个中的配置就是auto_prepend_file和auto_append_file。这两个配置的意思就是:我们指定一个文件,那么该文件就会被包含在要执行的php文件中(如index.php)。这两个设置的区别:

auto_prepend_file是在文件前插入。
auto_append_file在文件最后插入。

语法:

auto_append_file=hello.png
or
auto_prepend_file=hello.png

6、条件竞争

如果网站的文件上传的过程是:服务器获取文件–>保存上传临时文件–>重命名移动临时文件 这样的步骤时,就可以通过不断地对文件进行上传和访问,从而使服务器还未重命名移动临时文件时,我们就利用时间差打开了文件,成功执行其中的恶意代码。

但是话又说回来,我没试过,不好说,所以跳过

7、二次渲染

文件二次渲染:当你上传一个图片后,服务器会对图片进行处理,你的后门也就很可能被处理了

解决思路:使用脚本,有人分析了图片处理的规律,使用脚本可以把后门代码写入图片而不被处理

可以利用工具来将木马插入到图片中

但是话又又又又说回来,我不会写脚本,所以从网上抄一个吧


 */
?>

上传成功之后访问图片地址,在后面加入&0=system,1=tac flag.php,这个1=需要用POST方式提交

但是话又说回来我也不知道为什么

8、免杀

我们对payload进行处理,使其可以不被杀死

payload1:

 
payload2:

 
payload3:

 
payload4:

还是抄的捏(

9、日志包含

上传了.user.ini之后,访问upload目录显示403,所以我们需要上传一个index.php,构造.user.ini利用条件:上传index.php 内容随意。上传.user.ini包含日志:auto_prepend_file=/var/log/nginx/access.log
访问地址带后门UA头写入日志:

这里其实和160的文件包含是一样的。只是我们需要上传index.php配合.user.ini

爆出403的错误就以为着当前目录的目录文件缺失。

(依旧是抄的)直接贴原文吧:文件上传漏洞(全网最详细)-CSDN博客

总之要想练文件上传可以搞一个upload-lib靶场

你可能感兴趣的:(安全,web安全,网络安全)