php代码审计实战(一)

article/2025/10/9 20:23:45

前言:这套漏洞好水,为什么审他呢?原因是虽然一直挖漏洞 也用白盒摸出过不少洞,但是还没有彻彻底底的通审过一套系统
所以就找了套简单的摸摸鱼

源码:熊海CMS_1.0

安装方法:这里是用宝塔直接搭建的

①数据库
需要宝塔建立一个数据库导入那个数据库文件就好了
然后安装的时候输入的数据库,账户,密码跟宝塔的数据库是一样的就好了
②php版本问题:需要将php设置为5.6才可以进行运行
且注意:如果无法运行<?php phpinfo(); ?>需要去查看短标签和php配置禁用函数

审计过程

看个人习惯和时间去确定自己的审计方法吧
我的话

快审的话:
1.过一遍功能点,然后猜存在的漏洞,找到对应的代码进行审计
2.直接seay这些审计系统通审一遍,一个一个去逆推细审。
慢审:
通审全部代码,这种最好的就是可以审到别人审不到的逻辑漏洞

这里因为学习为主,所以选择的方式是通审
①目录结构
在这里插入图片描述

前台

index.php入口文件
漏洞
①任意文件包含

发觉这里是通过r这个值来判断接受的文件名字-->然后直接包含在include里面
且r这个值可控利用条件:必须在该文件的什么目录下拥有相应的文件,才可以拿到shell 这里的文件指的是txt之类的 不是shell.php别误解

在这里插入图片描述
复现
在files目录下建立一个shell文件
文件内容为<?php phpinfo();?>
在这里插入图片描述

接着通读files/index.php文件
简单的分为三部分
php部分:包含三个文件是简单的2个功能 第一个包含文件里面啥都无,第二个文件是作为获取数据库文件值即进行简单的连接,第三个文件是获取当前时间的
一个外部实体声明
html里面:写死了几个sql查询语句即查询功能的含义,其他的话就是简单的展示功能模块,没啥东西
所以重点看php的包含部门

很简单的处理逻辑,可能mysql_error可能会导致一些问题
但是先不急,先跟踪到die()命令中的/install模块去看看
在这里插入图片描述
install模块里面只有一个index.php文件
一样也是分为三个部分
php处理部分,外部实体模块部分,html展示部分
php里面的逻辑
这里简单说一下

根据是否存在InstallLock.txt文件来进行判断是否成功安装,如果安装即退出

在这里插入图片描述

然后写完后即向InstallLock.txt文件中写入内容防止重复安装的情况出现.
这里防止了重装的这个漏洞情况

html的内容就不说了 就一个简单的展示功能

自此安装与整个数据库连接的模块就到此结束,只有一个任意文件包含的漏洞

又回头了
回头看files/index.php模块,看里面的html内容
获取一些基础的title这些东西,然后加载头文件模块和body内容
尾文件模块

在这里插入图片描述
header模块里面没啥东西
在这里插入图片描述
就是一个获取页面的
利用这玩意来获取标签
在这里插入图片描述
跟数据库里面的内容相关的这个中间的
界面对应就这样

在这里插入图片描述

接着跟踪吧,因为header里面的头是写死了的,所以这里直接跟踪这个
在这里插入图片描述
即对应这些功能点–>翻数据库可以看的到
在这里插入图片描述

r=about
r=list
这些
这些功能点的php里面倒是有些sql可控的参数
但是被addslashes过滤了 绕的话太麻烦了
在这里插入图片描述
回到files/index.php里面接着审
发觉就是传数据库的值的
没啥东西
自此整个前台的洞就审完了

接着去审后台的洞

后台

一样的道理 从admin/index.php入手
又是一个文件包含
在这里插入图片描述
直接包含

在这里插入图片描述
然后接着摸admin/files/index.php这个文件
和前台的差不多
就是多了一些js文件的包含而已
在这里插入图片描述
老规矩接着审包含的文件
这玩意就是一个checklogin.php 然后就连接

在这里插入图片描述
而对于这个这里就简单的判断了下cookie是否为空
这不是又是一个漏洞吗?
登录绕过
在这里插入图片描述
在这里插入图片描述

然后接着审

top.php这些文件
在这里插入图片描述
这不是又是一个sql注入
在这里插入图片描述
接着审
?r=manageinfo和?r=outlogin
manageinfo这个逻辑挺简单的–>一样也要经过checklogin.php文件判断 绕就完事

存入需要更改资料的值
然后对2次输入的密码判断是否相同和文件传输进行判断
最后通过判断后更改该资料的值
在这里插入图片描述
这里重点分析处理图片上传的机制
大概就是先获取上传的名字
然后在判断最开始文件的名字是否为空 为空的话即进入到里面进行上传
然后获取上传文件的名字与将密码加密为md5的

在这里插入图片描述

r=outlogin
即将cookie设置为0
在这里插入图片描述
接着审header.php
这里面没啥东西 sql语句几乎都写死了的
siderbar.php
就一个输出内容的
审这些文件就完事
在这里插入图片描述
newwz.php文件
又是一堆sql注入

在这里插入图片描述

除了内容有简单的过滤外
其他的内容全是直接就插进去的

在这里插入图片描述
且插入后会进行一次query判断是否插入成功
在这里插入图片描述

newsoft.php也是一样
在这里插入图片描述
wzlist
一样直接拼接query

在这里插入图片描述
在这里插入图片描述
softlist
一样的情况
在这里插入图片描述

newcolumn.php,conlumnlist,newlink,linklist,commentlist,siteset,seniorset,imageset这几个文件几乎都是一样的问题 插入或者删除的时候没有进行任何过滤 全都有sql注入
在这里插入图片描述
审到这里大部分的漏洞就审的差不多了

不过也要回过头去看看login这个文件
因为cookie可以伪造 所以就一直没分析他
login.php
漏洞
①开局送sql注入

在这里插入图片描述
user没进行任何过滤,注就完事

在这里插入图片描述

②password通过MD5进行比较的
在这里插入图片描述
可以绕过

对这套cms的审计差不多到这里就结束了

大概的漏洞点

①两个文件包含
②后台登录绕过
③sql注入-->无数个

当然这里面肯定还有一堆的xss漏洞 因为全局没有经过任何过滤
但是懒得审了,xss审出来也挺简单的

反向审:直接搜echo语句,从输出的点然后回头看相关的变量是否有过滤
正向审:看存储没有过滤的变量是否在其他地方输出

修复方法的话

①sql注入的话
用mysql_real_escape_string进行过滤就好了
②登录绕过的话 更改判定方式吧 这玩意不是很好修
③文件包含 写死自己要包含的文件
然后根据返回的key进行修复

http://chatgpt.dhexx.cn/article/qbeJ5r6D.shtml

相关文章

PHP代码审计环境配置教程

PHP代审环境配置 1.vscode的配置2.PHPstudy配置3.使用xdebug调试代码 1.vscode的配置 安装插件 code runner PHP debug 2.PHPstudy配置 软件管理 — PHP设置 — 开启XDebug调试组件 开启XDebug调试组件之后&#xff0c;可以看到php.ini文件底部多了如下几行&#xff1a; [X…

PHP代码审计系列(一)

PHP代码审计系列&#xff08;一&#xff09; 本系列将收集多个PHP代码安全审计项目从易到难&#xff0c;并加入个人详细的源码解读。此系列将进行持续更新。 extract变量覆盖 源码如下 <?php$flagextractFlag.txt; extract($_GET);if(isset($shiyan)){ $contenttrim(f…

php代码审计学习-baijiacms v4

php代码审计学习&#xff08;baijiacms v4代码审计-system任意命令执行&#xff09; 文章目录 前言一、危险函数查找二、访问测试三、 构造 payload&#xff0c;触发漏洞总结 前言 最近及将来一段时间都会利用空闲的时间学习PHP代码审计 记录代码审计学习过程&#xff0c;最近…

PHP代码审计之基础篇

最近在学PHP代码审计&#xff0c;那就将学习的笔记都整理一遍吧~ 前期准备&#xff1a; 当然&#xff0c;最基本的前提是至少大致学过PHP的语法。 1、安装相关软件&#xff0c;如Sublime text、 Notepad、editplus、 Seay源代码审计系统等 2、获得源码&#xff0c;可以到网上…

PHP代码审计-2

Fortify扫出来个反序列化&#xff0c;来看看吧 PHP反序列化用到的函数无非就是unserialize()、serialize()在unserialize()前会先调用__wakeup()方法&#xff0c;再看看在__wakeup()在哪&#x1f447; 来看看 load() 这个函数是干啥的&#x1f447;再来看看 getSource() 这个函…

【PHP代码审计】ThinkPHP代码审计

目录 0x001 开发方式0x002 审计流程1&#xff09;启用调试开关2&#xff09;版本查看3&#xff09;定位函数4&#xff09;测试是否存在漏洞5&#xff09;版本自身漏洞 0x001 开发方式 在审计源码时根据不同的开发方式对应不同的审计方法。 自写&#xff1a;有的站点虽然使用了…

PHP代码审计敏感函数合集

PHP代码审计 通常去代码审计的时候基本是正则的挖掘思路 通常代码审计的话&#xff0c;大部分就是通过关键的函数&#xff0c;和关键的变量去审计 ​ ​ 敏感函数 PHP操作数据库函数 mysqli_connect() //建立与MySQL数据库的连接 mysqli_connect_errno() //判断连接数…

代码审计思路之PHP代码审计

000 前言 最近也是边挖src边审计代码&#xff0c;总结下最近的php代码审计的一些思路&#xff0c;我一般按照顺序往下做&#xff0c;限于能力水平&#xff0c;可能会有不对或者欠缺的地方&#xff0c;希望各位师傅能够指导。 001 前期工作,需要的工具&#xff08;我使用的) …

PHP代码审计 -- 文件上传

工具&环境 工具&#xff1a;Seay源代码审计系统&#xff0c;文本编辑器一个 环境&#xff1a;phpstudy&#xff0c;网站源码是 zbzcms步骤 1&#xff0c; 将zbzcms网站源码放入phpstudy&#xff0c;根据网站安装引导完成网站搭建&#xff1b; 2&#xff0c;打开Seay&…

PHP代码审计

代码审计顾名思义就是检查源代码中的缺点和错误信息&#xff0c;分析并找到这些问题引发的安全漏洞&#xff0c;并提供代码修订措施和建议。 PHP代码审计 审计套路 通读全文法 (麻烦&#xff0c;但是最全面) 敏感函数参数回溯法 (最高效&#xff0c;最常用) 定向…

【PHP代码审计】——开启你的代码审计生涯

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

【代码审计】--- php代码审计方法

代码审计需要掌握的点 PHP编程语言的特性和基础Web前端编程基础漏洞形成原理代码审计思路不同系统、中间件之间的特性差异 代码审计思路 方法一 ---- 检查敏感函数的参数&#xff0c;然后回溯变量&#xff0c;判断变量是否可控&#xff0c;并且有没有经过严格的过滤&#xf…

DAY31:代码审计基础( PHP 篇)

DAY31&#xff1a;代码审计基础( PHP 篇) 1、PHP 代码审计基础 1.1、代码审计概述 ​ 代码审计&#xff08;Code audit&#xff09;是一种以发现程序错误&#xff0c;安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析&#xff0c;旨在…

PHP代码审计(全)

前言 官方文档&#xff1a;php.net php官方文档是非常详情&#xff0c;好用的&#xff0c;在遇到不清楚作用的函数时可以进行查询 白盒测试做代码审计最主要的知识是要去了解一个漏洞应该有哪些防御方式&#xff0c;因为大部分的漏洞都是因为修复没有做的全面&#xff0c;或…

PHP代码审计——PHP中常见的敏感函数列表

文章目录 前言一、PHP中的敏感函数——命令注入漏洞 1&#xff09;exec() 2&#xff09;system () 3&#xff09;passthru () 4&#xff09;shell_exec () 5&#xff09;popen() **/** proc_open() 二、PHP中的敏感函数——代码注入漏洞 1&#xff09;…

Idea快速选中一行的四种方式

一、鼠标连续点三下 二、end键将光标移到行尾 &#xff0c; ctrlw 选中行 三、end键将光标移到行尾 &#xff0c; shift home 选中行 四、home 键 光标移到行首、然后 点击shift end

Xcode快捷键修改 复制一行、删除一行

快速目录 Xcode快捷键修改 复制一行、删除一行0.移动选中行1.修改权限2.修改快捷键配置文件复制一行删除一行 3.设置修改Xcode快捷键4.其它注意参看 Xcode快捷键修改 复制一行、删除一行 主要是用Android Studio 开发习惯了&#xff0c;在Xcode上又没有&#xff0c;比如复制当…

竖行选中快捷键

今天选中代码时需要竖行选中&#xff0c;就回顾了一下竖行选中的快捷键 这是个很实用的快捷键。 在myeclipse中竖行选中是AltShiftA&#xff0c;进入竖行选中状态&#xff0c;按Esc退出 在idea中竖行选中的快捷键是Alt鼠标选中

idea 删除当一行或者选中行的快捷键

之前前端开发一直使用VSCode&#xff0c;常用快捷键删除一行或者当前选中的几行代码&#xff0c;使用idea的时候发现快捷键并不相同&#xff0c;查看发现idea的快捷是&#xff1a;Ctrl Y&#xff0c;比手动删除代码方便很多。 通过File->Setttings->Keymap可以查看已经…

java开发银行柜员业务绩效考核系统

导读:当今社会己进入信息社会时代,信息己经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料、能源、信息)之一。信息是管理的基础,是进行决策的的基本依据。在一个组织里,信息己作为人力、物力、财力之外的第四种能源,占有重要的地位。然而,信息是一种非…