返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php代码审计
  • 441
分享到

php代码审计

php开发语言 2023-09-01 08:09:41 441人浏览 安东尼
摘要

🌕写在前面 🍊博客主页:Scorpio_m7,github🎉欢迎关注🔎点赞👍收藏⭐️留言📝

🌕写在前面

  • 🍊博客主页:Scorpio_m7github
  • 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
  • 🌟本文由 Scorpio_m7原创,CSDN首发!
  • 📆首发时间:🌹2023年2月10日🌹
  • ✉️坚持和努力一定能换来诗与远方!
  • 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!

文章目录

准备工作

了解CMS的基本信息

  1. 该CMS使用的是什么设计模式
  2. 该CMS每个目录大概负责的功能(视图、缓存、控制器等)。
  3. 该CMS处理请求的基本流程是如何走的?
  4. 以及在系统中使用的全局过滤函数是如何对数据进行处理的?

代码审计方法

敏感函数回溯

大多数的漏洞主要是PHP的函数的使用不当造成的,只要找到这些使用不当的函数,就可以快速的发现想要挖掘的漏洞。

定向功能分析

该方法主要是根据程序的业务逻辑和业务功能进行审计的。

通读全文

通过对整个项目的代码进行阅读从而发现问题,这种方法是最全面的但也是最麻烦的。

php开发模式

常见的程序编写模式

  1. 面向过程写法的程序,常见的普通类型
  2. 常见的PHP框架,如Thinkphp、Laravel、Yii。
  3. 基于原框架上经过二次开发的PHP框架,如Thinkcmf、ThinkBlog。
  4. 企业自行开发的自用的框架。

总的来说一种是基于mvc(M:模型、V:视图、C:控制器)模型开发的程序,一种是普通面向过程的开发程序,针对不同的设计模式的系统我们应该采用不同的方法做审计。

普通程序设计模式

  • 安全性较低,维护困难常常会出现安全性问题,开发者必须在每个文件开头加上include。
  • 分析回溯较为简单,没有复杂的函数转发。
  • URL模式:Http://localhost/test.php
  • 可维护性较低。
  • 写法多基于原生代码。
  • 可以利用Seay代码审计工具辅助做代码审计。

MVC程序设计模式

  • 安全性较高,大团队开发维护,单入口应用安全性好,只需要统一在入口处做好过滤即可。
  • 分析回溯较为复杂,复杂的函数转发。
  • URL模式:http://localhost/index.php?m=home&c=user&a=login,http://localhost/index.php/home/user/login
  • 可维护性较高
  • 写法多基于已封装好的函数,使用方便简单,减少代码冗余。
  • 手工审计更为实际,工具只能起到辅助作用。

yccms代码执行

用Fortify扫描后发现三个高危代码执行漏洞,针对最后一个漏洞,分析一下\public\class\Factory.class.php文件

static public function setModel() {$_a = self::getA();if (file_exists(ROOT_PATH.'/model/'.$_a.'Model.class.php')) eval('self::$_obj = new '.ucfirst($_a).'Model();');return self::$_obj;}static public function getA(){if(isset($_GET['a']) && !empty($_GET['a'])){return $_GET['a'];}return 'login';}

getA()方法接受a的参数,作为加载模型的文件名,如果该文件存在则执行eval函数实例化该模型。回溯查找setModel()方法,在\controller\Action.class.php中找到了,在加载Action类时会执行该类的构造函数,从而执行setModel()方法。

class Action {protected $_tpl = null;protected $_model = null;protected function __construct() {$this->_tpl = TPL::getInstance();$this->_model = Factory::setModel();Tool::setRequest(); //表单转义和html过滤}

在\Controller\ArticleAction.class.php中可以发现ArticleAction类继承了Action类,并调用了父类的构造方法,可以通过访问此类的方法并构造合适的payload去触发漏洞

//文章控制器class ArticleAction extends Action{private $_total='';public function __construct(){parent::__construct();$this->_sys=new SystemModel();$this->_model=new ArticleModel();}

一个个控制器找,找到了直接实例化SearchAction方法的类,这里明显调用了我们正好需要的方法,这样一来就可以访问到最开始的EVAL函数了。

//require str_replace('\\','/',substr(dirname(__FILE__),0,-7)).'/config/run.inc.php';define('ROOT_PATH',str_replace('\\','/',substr(dirname(__FILE__),0,-7))); require ROOT_PATH.'/config/config.inc.php';require ROOT_PATH.'/public/smarty/Smarty.class.php';//自动加载类function __autoload($_className){if(substr($_className,-6)=='Action'){require ROOT_PATH.'/controller/'.ucfirst($_className).'.class.php';}elseif(substr($_className, -5) == 'Model'){require ROOT_PATH.'/model/'.ucfirst($_className).'.class.php';}else{require ROOT_PATH.'/public/class/'.ucfirst($_className).'.class.php';}}$_tpl=TPL::getInstance();$_search=new SearchAction();$_search->index();?>

回到最开始的地方,首先要经过file_exists函数,再经过ucfirst函数,ucfirst函数是将首字母转换成大写。file_exists函数只要目录存在文件不存在结果也为真的

echo file_exists("f://test/../../");?>

最终Payload构造为:yccms/search/index.php?a=AdminModel();phpinfo();//../,AdminModel();用来闭合前面的实例化,phpinfo();是我们要执行的代码,//用来注释后面的多余代码,…/用来返回上一级目录。

ThinkCMF框架

各目录功能

api

api目录

app

应用目录

portal

门户应用目录

config.php

应用配置文件

common.php

模块函数文件

controller

控制器目录

model

模型目录

common.php

应用公共(函数)文件

config.php

应用(公共)配置文件

database.php

数据库配置文件

route.php

路由配置文件

public

WEB 部署目录(对外访问目录)

api

api入口目录

plugins

插件目录

static

静态资源存放目录(CSS,js,image)

themes

前后台主题目录

upload

文件上传目录

index.php

入口文件

robots.txt

爬虫协议文件

router.php

快速测试文件

.htaccess apache

重写文件

simplewind

cmf

CMF核心库目录

extend

扩展类库目录

thinkphp

thinkphp目录

vendor

第三方类库目录(Composer)

代码执行漏洞

当在后台【URL美化】功能中插入PHP代码保存后,重新访问该页面PHP代码会被执行,在public下创建11.php,导致产生代码执行漏洞。

在这里插入图片描述

尝试抓包,看看我们在保存设置到最后执行PHP代码之间经历了什么
在这里插入图片描述
一共提交了两个请求,第一个请求提交到admin目录下route控制器中的editpost方法
在这里插入图片描述

该方法是用来接收参数后更新到数据库。流程应该就是当某个URL地址被访问后,路由机制会从数据出中读取是否存在该URL的地址转发,如果有,则访问到相对应的路径。
在这里插入图片描述
第二个请求对route表中的数据排序后调用getRoutes方法
在这里插入图片描述

跟进getRoutes方法
在这里插入图片描述

最后构造payload:'.file_put_contents('1.php','').'
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_45161658/article/details/128976429

--结束END--

本文标题: php代码审计

本文链接: https://lsjlt.com/news/387871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php代码审计
    🌕写在前面 🍊博客主页:Scorpio_m7,github🎉欢迎关注🔎点赞👍收藏⭐️留言📝...
    99+
    2023-09-01
    php 开发语言
  • PHP代码审计(全)
    前言 官方文档:php.net php官方文档是非常详情,好用的,在遇到不清楚作用的函数时可以进行查询 白盒测试做代码审计最主要的知识是要去了解一个漏洞应该有哪些防御方式,因为大部分的漏洞都是因为修...
    99+
    2023-08-31
    php 开发语言 安全 代码复审 web安全
  • PHP中的代码审计
    随着网络技术的不断发展,各种应用程序逐渐成为生活中不可缺少的一部分。而PHP作为一种广泛应用于Web开发的编程语言,在众多应用程序中也扮演着重要的角色。然而,对于PHP代码的安全性,经常被忽视和忽略。对于黑客和攻击者来说,PHP应用程序成为...
    99+
    2023-05-24
    PHP 代码审计 安全漏洞
  • PHP代码审计-sql注入
    文章目录 前言sql注入字符型注入魔术引号编码注入base64编码url编码宽字节注入 过滤方法代码审计实战 前言 最近想学代码审计了,但是我本身的代码水平不高,学的比较基础,适...
    99+
    2023-09-17
    1024程序员节
  • PHP函数的代码审计
    PHP函数是一种重要的编程语言特性,它可以帮助程序员大大提高编程效率和程序的可维护性。但是,在使用PHP函数的过程中,我们也需要对它们进行代码审计,以确保程序的安全性和可靠性。本文将从以下几个方面介绍PHP函数的代码审计:一、PHP函数的基...
    99+
    2023-05-18
    代码审计 PHP函数 函数审计
  • 代码审计-8 ThinkPHP框架代码审计 2
    文章目录 熟悉网站结构确定网站的路由1.通过分析url直接得出路由2.查看app/route.php 了解参数过滤情况SQL注入举例任意文件下载与删除任意文件下载代码分析任意...
    99+
    2023-09-10
    php apache 服务器
  • php代码审计,php漏洞详解
    文章目录 1、输入验证和输出显示2、命令注入(Command Injection)3、eval 注入(Eval Injection)4、跨网站脚本攻击(Cross Site Scripting...
    99+
    2023-09-02
    php chrome 开发语言
  • PHP代码审计SQL注入篇
    什么是SQL注入SQL注入***(SQL Injection),简称注入***,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作...
    99+
    2024-04-02
  • 怎样学习PHP代码审计
    怎样学习PHP代码审计,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。以Emlog 6.0  beta版本为引,一篇关于PHP语言CMS的代码审计文章,...
    99+
    2023-06-17
  • 后端代码审计——PHP基础
    文章目录 PHP基础1. php格式2. php变量2.1 变量声明与初始化2.2 php变量特点2.3 变量命名方式2.4 变量释放2.5 可变变量2.6 变量类型2.6.1 bool2.6...
    99+
    2023-10-23
    php 开发语言 安全
  • 【代码审计-PHP】审计方法、敏感函数、功能点
      前言: 介绍:  博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocu...
    99+
    2023-09-05
    php
  • ctfshow代码审计篇
    文章目录 web301-SQL注入web302- sql写shellweb303- insertweb304- 报错注入web305- 反序列化蚁剑连接数据库web306- 反序列化web30...
    99+
    2023-09-07
    php 数据库 开发语言
  • PHP代码审计之MVC与ThinkPHP简介
    今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP代码审计之MVC与ThinkPHP简介。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自...
    99+
    2023-09-17
    php 代码审计 MVC ThinkPHP 框架
  • PHP代码审计:专家指导,提升代码质量
    代码审计是代码质量保证过程的重要组成部分,其目的是识别代码中的潜在缺陷和漏洞,从而确保代码的可靠性和安全性。PHP代码审计作为一种针对PHP代码的审查过程,旨在发现代码中的错误、不安全实践和潜在的安全漏洞。通过代码审计,开发人员可以及时...
    99+
    2024-02-09
    PHP 代码审计 代码安全 质量保证 漏洞
  • “快看”cms代码审计
    零基础学网络安全配套资料点击领取 环境安装 github源码地址:https://github.com/erichuang2015/kkcms 使用phpstudy 5.6.27+mysql5.5.5...
    99+
    2023-09-20
    php web安全 网络安全 渗透测试 安全
  • VauditDemo靶场代码审计
    靶场搭建 将下载好的VAuditDemo_Debug目录复制到phpstudy的www目录下,然后将其文件名字修改成VAuditDemo,当然你也可以修改成其他的 运行phpstudy并且访问in...
    99+
    2023-09-06
    php 网络安全 web安全 网络攻击模型
  • Seay代码审计工具
    一、简介 Seay是基于C#语言开发的一款针对PHP代码安全性审计的系统,主要运行于Windows系统上。 这款软件能够发现SQL注入、代码执行、命令执行、文件包含、文件上传、绕过转义防护、拒绝服务、XSS跨站、信息泄露、任意URL跳转...
    99+
    2023-09-01
    php 代码审计 Powered by 金山文档
  • 梦想cms1.4代码审计
    目录 一、环境搭建 二、代码审计 1、后台漏洞  (1)BookAction.class.php (2)BackdbAction.class.php任意文件删除 (3)file.class.php任意文件读(写)漏洞 2、前台漏洞 (1)T...
    99+
    2023-09-01
    数据库 安全 web安全 php
  • 熊海cms1.0代码审计
    目录 一、环境搭建 二、代码审计 (1)后台存在登录绕过漏洞 (2)登录后台user处存在SQL注入  (3)前(后)台文件包含漏洞 (4)后台SQL注入 1、admin/files/editcolumn 2、admin/files/edi...
    99+
    2023-09-05
    php web安全 数据库 mysql
  • PHP代码审计:快速发现并修复代码漏洞
    PHP代码审计的重要性 PHP是世界上最流行的Web开发语言之一,它被广泛用于开发各种Web应用程序。由于PHP的广泛使用,PHP代码审计变得尤为重要。PHP代码审计可以帮助开发人员快速发现并修复代码中的漏洞和安全问题,从而提高代码安全...
    99+
    2024-02-09
    PHP 代码审计 安全漏洞 代码安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作