深入解析PHP代码审计技术与实战【网络安全】

前言

登录某个网站并浏览其页面时,注意到了一些看起来不太对劲的地方。这些迹象可能是该网站存在漏洞或被黑客入侵的标志。为了确保这个网站的安全性,需要进行代码审计,这是一项专门针对软件代码进行检查和分析的技术。在本文中,我们将深入探讨代码审计的重要性和如何进行有效的代码审计。

1.目录遍历漏洞

进入模板功能-模板管理功能处。

这里说句题外话,之前有不少小伙伴私信我要网络安全相关的资源,我这里都整理好了,需要的自取 《黑客&网络安全入门&进阶学习资源包》免费领取

发现此处的功能点可以遍历目录下的文件,接下来我们抓包查看当前功能点的代码。
深入解析PHP代码审计技术与实战【网络安全】_第1张图片

通过路由找到对应的文件 template.php ,然后接着通过 mudi=manage 进行分支选择进入到对应的函数中。
深入解析PHP代码审计技术与实战【网络安全】_第2张图片

进入template.php文件。
深入解析PHP代码审计技术与实战【网络安全】_第3张图片

在 manage() 函数中,首先传入了两个参数, dirStr 参数则是控制路径的参数,而 sel 参数则是控制是否进入代码的if,而最后将路径传入到File类下的 GetDirList() 函数中。跟进GetDirList() 函数

深入解析PHP代码审计技术与实战【网络安全】_第4张图片

发现使用 opendir() 函数列出目录下的文件
深入解析PHP代码审计技术与实战【网络安全】_第5张图片

漏洞复现:

进入模板管理功能处,然后进行抓包。

深入解析PHP代码审计技术与实战【网络安全】_第6张图片

抓包之后,进行测试。
深入解析PHP代码审计技术与实战【网络安全】_第7张图片

然后在dirStr使用…/…/来测试目录穿越。
深入解析PHP代码审计技术与实战【网络安全】_第8张图片

2.任意文件读取漏洞

全局fread() 函数,发现Read()函数中调用了 fread() 函数。

深入解析PHP代码审计技术与实战【网络安全】_第9张图片

然后搜索 Read() 函数的调用情况。

深入解析PHP代码审计技术与实战【网络安全】_第10张图片

进入classFile.php文件。
深入解析PHP代码审计技术与实战【网络安全】_第11张图片

然后搜索fread()函数的用法。
深入解析PHP代码审计技术与实战【网络安全】_第12张图片

发现在 sysCheckFile_deal.php 文件中调用了 File::read() 函数,跟进该函数。
深入解析PHP代码审计技术与实战【网络安全】_第13张图片

漏洞复现:

根据路由,去构造url路径,然后访问。

深入解析PHP代码审计技术与实战【网络安全】_第14张图片

接着抓包,配合…/进行目录穿越读取文件。

深入解析PHP代码审计技术与实战【网络安全】_第15张图片

3.任意文件删除漏洞

在测试模板管理功能点处,发现该处存在一个删除的功能点,发现存在任意文件删除漏洞。
深入解析PHP代码审计技术与实战【网络安全】_第16张图片

首先我们通过路由找对相应的源代码 template_deal.php 文件,且这里的路由指向为 DelFile() 函数,该函数中接收了三个参数,其中filePath参数为主要控制路径的参数,将filePath参数带入到File::Del()中进行删除。跟进 del() 函数
深入解析PHP代码审计技术与实战【网络安全】_第17张图片
深入解析PHP代码审计技术与实战【网络安全】_第18张图片

该函数很简单,首先判断路径是否为空,不为空修改权限最后进行文件的删除操作。

深入解析PHP代码审计技术与实战【网络安全】_第19张图片

漏洞复现:

进入功能点处。然后点击X号。
深入解析PHP代码审计技术与实战【网络安全】_第20张图片

然后在根路径写入一个xxx.txt文件。
深入解析PHP代码审计技术与实战【网络安全】_第21张图片

然后在filepath参数后配合…/来删除文件。
深入解析PHP代码审计技术与实战【网络安全】_第22张图片

4.msql_getshell

在 黑盒 测试中中存在一个 SQL语句调试 的功能点,该处没有对SQL语句关键字的过滤而造成SQL语句的任意执行,导致getshell。

进入功能点处。

深入解析PHP代码审计技术与实战【网络安全】_第23张图片

然后执行简单的SQL语句进行测试。

深入解析PHP代码审计技术与实战【网络安全】_第24张图片

然后使用抓包工具来定位路由。
深入解析PHP代码审计技术与实战【网络安全】_第25张图片

然后看一下代码,发现文件的开头以条件分支来选择对应要执行的功能点,由于上述 mudi=sql ,所以我们找到该处要执行的sql所对应的函数
深入解析PHP代码审计技术与实战【网络安全】_第26张图片

深入解析PHP代码审计技术与实战【网络安全】_第27张图片

通过 OT::PostStr 方法传入五个参数,其中 sqlContent 中是需要传入的SQL语句,而下面对

into_outfile 、 global general_log 等SQL关键字进行了过滤
深入解析PHP代码审计技术与实战【网络安全】_第28张图片

深入解析PHP代码审计技术与实战【网络安全】_第29张图片

在下面检测你填入的后台密码是否正确,如果正确继续执行下面代码,在代码中执行了我们输入

的SQL语句。未对其进行过滤完全,导致我们可以绕过过滤,来执行SQL语句。

深入解析PHP代码审计技术与实战【网络安全】_第30张图片

漏洞复现:

首先去开启数据库日志功能,发现有过滤。
深入解析PHP代码审计技术与实战【网络安全】_第31张图片

然后我们构造payload成功绕过过滤。
深入解析PHP代码审计技术与实战【网络安全】_第32张图片

然后我们写入phpinfp文件。
深入解析PHP代码审计技术与实战【网络安全】_第33张图片

构造payload,成功写入。
深入解析PHP代码审计技术与实战【网络安全】_第34张图片

访问之后,成功getshell。
深入解析PHP代码审计技术与实战【网络安全】_第35张图片

5.xss漏洞

进入users_deal.php
深入解析PHP代码审计技术与实战【网络安全】_第36张图片

检测type是否为数组中的固定值,不是则带入AlertEnd方法中
跟进AlertEnd方法
深入解析PHP代码审计技术与实战【网络安全】_第37张图片

发现type被带

你可能感兴趣的:(web安全,安全,网络安全,网络,php)