[PHP 安全] pcc —— PHP 安全配置检测工具
2023-04-18 12:28:39 时间
背景
在 PHP 安全测试中最单调乏味的任务之一就是检查不安全的 PHP 配置项。作为一名 PHP 安全海报的继承者,我们创建了一个脚本用来帮助系统管理员如同安全专家一样尽可能快速且全面地评估 php.ini 和相关主题的状态。在下文中,该脚本被称作“PHP 安全配置项检查器”,或者 pcc。
概念
- 一个便于分发的单文件
- 有对每个安全相关的 ini 条目的简单测试
- 包含一些其他测试 - 但不太复杂
- 兼容 PHP >= 5.4, 或者 >= 5.0
- 没有复杂/过度设计的代码,例如没有类/接口,测试框架,类库等等。它应该第一眼看上去是显而易见的-甚至对于新手-这个工具怎么使用能用来做什么。
- 没有(或者少量的)依赖
使用 / 安装
- CLI:简单调用
php phpconfigcheck.php
。然后,添加参数-a
以便更好的查看隐藏结果,-h
以 HTML 格式输出,-j
以 JSON 格式输出. - WEB: 复制这个脚本文件到你的服务器上的任意一个可访问目录,比如 root 目录。参见下面的“防护措施”。
在非 CLI 模式下默认输出 HTML 格式。可以通过修改设置环境变量
PCC_OUTPUT_TYPE=text
或者PCC_OUTPUT_TYPE=json
改变这个行为。 一些测试用例默认是被隐藏的,特别是skipped、ok和 unknown/untested这些。要显示全部结果,可以用phpconfigcheck.php?showall=1
,但这并不适用于 JSON 输出,它默认返回全部结果。 在 WEB 模式下控制输出格式用phpconfigcheck.php?format=...
,format
的值可以是text
,html
或者json
中的一个,例如:phpconfigcheck.php?format=text
。format
参数优先于 PCC_OUTPUT_TYPE。
保障措施
大多数情况下,最好是自己来关注与安全性相关的问题比如PHP的配置。脚本已实现下列保障措施:
- mtime检查:脚本在非CLI环境中只能工作两天。可以通过
touch phpconfigcheck.php
或者将脚本文件再次复制到你的服务器(例如通过SCP)来重新进行mtime检查。可以通过设置环境量:PCC_DISABLE_MTIME=1
,比如在apache的.htaccess
文件中设置SetEnv PCC_DISABLE_MTIME 1
来禁用mtime检查。 - 来源IP检查:默认情况下,只有localhost (127.0.0.1 和 ::1)才能访问这个脚本。其他主机可以通过在
PCC_ALLOW_IP
中添加IP地址或者通配符表达式的方式来访问脚本,比如在.htaccess
文件中设置SetEnv PCC_ALLOW_IP 10.0.0.*
。你还可以选择通过SSH端口转发访问您的web服务器, 比如ssh -D
或者ssh -L
。
下载
可以通过github下载第一个完整的开发版: https://github.com/sektioneins/pcc
如果有好的建议或者遇到bug请给我们提issue:
截图
HTML输出的列表是根据问题严重性排序的,通过颜色代码的形式列出了所有建议。列表顶部的状态行会显示问题的数量。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击