freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试 | 黑白盒测试配合实战经验分享(第二篇)
2024-06-28 14:20:33

前言

在上一篇文章【渗透测试 | 黑白盒测试配合实战经验分享】,我们共同踏上了黑白盒渗透测试的旅程,探索了黑白盒测试的奇妙配合。那篇文章中,我们接触某个系统的PHP源代码,如同打开了一扇通往系统内部的隐秘之门。对于那些熟悉代码语言的人来说,这或许是一段轻松的旅程,但对于初学者来说,这片代码的海洋却充满了未知与挑战。然而,我们并非仅仅满足于代码审计,更重要的是要洞察代码背后的隐患,随后我找来了一个Web系统,让我我们再次踏上 - 渗透测试 | 黑白盒测试配合实战经验分享(第二篇)。

常见PHP风险函数

其实我把风险函数放出来,是因为我上期没有加进去,这是句废话,但是我想起来了!在巨量代码面前,直接审直接肝爆,所以还得需要借助代码审计工具,目前有些特定的代码审计工具运行逻辑是模式匹配工具会使用预定义的正则表达式或模式,匹配代码中可能存在漏洞的代码片段,还有就是词法分析、语法分析、语义分析

1. 命令执行函数:

  • exec(): 执行系统命令并返回命令执行后的最后一行输出结果。

  • system(): 执行系统命令并将命令执行结果直接输出到浏览器。

  • passthru(): 执行系统命令并将命令执行结果直接输出到浏览器,不会进行任何过滤。

  • shell_exec(): 执行系统命令并返回命令执行结果。

  • popen(): 打开一个进程管道,用于与进程进行通信。

  • proc_open(): 打开一个进程,并返回一个资源句柄用于与进程进行交互。

这些函数如果接收了来自用户输入的未经验证的命令,就可能被攻击者利用来执行任意系统命令,造成严重的安全风险。

2. 代码执行函数:

  • eval(): 将字符串作为 PHP 代码进行执行。

  • assert(): 与 eval()相似,将字符串作为 PHP 代码进行执行。

  • preg_replace(): 当使用 /e修饰符时,会将匹配到的字符串作为 PHP 代码进行执行。

  • create_function(): 创建一个匿名函数,该函数可以使用 eval()执行。

  • include()include_once()require()require_once(): 用于包含外部文件,如果包含了来自用户输入的未经验证的文件,就可能被攻击者利用来执行恶意代码。

这些函数如果接收了来自用户输入的未经验证的代码,就可能被攻击者利用来执行任意代码,造成严重的安全风险。

3. 数据库操作函数:

  • mysql_query()mysqli_query()pdo_query(): 用于执行 SQL 查询,如果使用不当,就可能导致 SQL 注入漏洞。

  • mysql_fetch_array()mysqli_fetch_array()pdo_fetch_all(): 用于从数据库中获取数据,如果接收了来自用户输入的未经验证的数据,就可能被攻击者利用来读取敏感数据。

4. 文件操作函数:

  • file_get_contents(): 读取文件内容,如果接收了来自用户输入的未经验证的文件路径,就可能被攻击者利用来读取敏感文件。

  • file_put_contents(): 写入文件内容,如果接收了来自用户输入的未经验证的文件路径和内容,就可能被攻击者利用来写入恶意文件。

  • fopen(): 打开文件,如果接收了来自用户输入的未经验证的文件路径,就可能被攻击者利用来访问敏感文件。

5. 其他风险函数:

  • parse_str(): 将字符串解析成变量,如果接收了来自用户输入的未经验证的字符串,就可能被攻击者利用来覆盖系统变量,造成安全风险。

  • extract(): 将数组中的键值对提取成变量,如果接收了来自用户输入的未经验证的数组,就可能被攻击者利用来覆盖系统变量,造成安全风险。

  • header(): 设置 HTTP 头部信息,如果接收了来自用户输入的未经验证的头部信息,就可能被攻击者利用来进行重定向攻击或跨站脚本攻击 (XSS)。

以上是在PHP代码审计中会存在的一些风险函数,当然你需要结合实际的代码逻辑和接收的输入数据是否有验证或者过滤的一些代码层来发现缺陷,其实在新手可以尝试先挖掘后审计,通过功能点在找到相关的代码和运行逻辑进行审计,当然如果是在有指导下学习知识点比较容易吸收,至少不会绕很大的弯子甚至便秘!

黑白盒测试

先用黑盒测试从外部攻击者的视角进行测试,模拟真实攻击场景,看看能够发现什么漏洞,首先是这样的类似于线上兼职做任务那些。

1719535844_667e08e46c25ac0452da5.png!small?1719535844405

可以注册,我们先落地一个账号,进行登陆!

1719535988_667e097403a579ef1414e.png!small?1719535989850

头像功能 - 文件上传漏洞

在我的-账号信息-头像功能,修改头像,直接上传任意上传文件,生成一个冰蝎Shell直接传上去先看看有没有杀掉,如果有安全防护估计上传到目录会被杀掉!这个审计可以看下面的【聊天室 -  反射型XSS漏洞+文件上传】章节,都是同一个方法。

1719536346_667e0adae1a55278b3250.png!small?1719536346331

可以上传,上传成功了,后面继续看,没有返路径!

1719536375_667e0af7b156d3dc3b5c3.png!small?1719536375136

然后在下一个包以GET方式返回了路径 - http://XXX.XX.XX.XX/uploads/20240628/41b6384e8f7dd5434c55ab5f1573dde0.php?imageMogr2/auto-orient/thumbnail/!200p/blur/1x0/quality/10|images

# 渗透测试 # web安全 # 漏洞分析 # php代码审计 # 代码审计入门
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录