安全面试4

news/2025/2/24 10:25:46

文章目录

  • 给的源码是ThinkPHP框架的话,审计起来和没有使用框架的有什么不同,从流程上或者从关注的点上有什么不同
    • 框架代码审计的流程
    • 无框架代码审计的流程
  • 反序列的时候,unserialize()反序列一个字符串的时候,对象会有一些魔术方法会被自动调用到,在找反序列化的链时,有哪些魔术方法是可以作为一个入手点去找的
  • 如果用白名单策略修复ssrf,从用户输入的变量里拿出要访问的目标,这个要注意哪些,因为一些url会通过特殊的字符做白名单绕过,对取变量这个操作有哪些要注意的细节?
  • php中三个等号和两个等号有什么区别
  • php代码常见入口函数怎么找
    • 超全局变量
    • 输入处理函数
    • 数据库操作函数
    • 文件操作函数
  • PHP的变量覆盖
  • 有一个php的程序,本身就允许文件包含的操作,同时想要避免文件包含漏洞,写代码的时候要注意哪些
  • 远程文件包含和本地文件包含,这两种涉及的php设置有什么
    • 远程文件包含(RFI)
  • 本地文件包含能不能通过php配置限制文件包含的路径(不通过代码直接通过配置项来解决)

给的源码是ThinkPHP框架的话,审计起来和没有使用框架的有什么不同,从流程上或者从关注的点上有什么不同

框架代码审计的流程

  1. 框架熟悉:首先需要熟悉ThinkPHP的目录结构、配置文件、路由机制、模型-视图-控制器(MVC)架构等。例如,ThinkPHP的配置文件加载顺序为惯例配置->应用配置->模块配置->动态配置
  2. 漏洞复现:针对ThinkPHP的历史漏洞(如SQL注入、反序列化漏洞等)进行复现和分析,了解其成因和利用方式
  3. 工具辅助:使用自动化工具(如Seay源码审计系统、PHPStorm)进行初步扫描,结合手动审计验证结果

无框架代码审计的流程

  1. 代码结构分析:需要手动分析代码的目录结构和逻辑,因为没有框架的约束,代码可能分散且不规范。
  2. 手动审计为主:由于缺乏框架的规范性,自动化工具的效果有限,更多依赖手动审计。

反序列的时候,unserialize()反序列一个字符串的时候,对象会有一些魔术方法会被自动调用到,在找反序列化的链时,有哪些魔术方法是可以作为一个入手点去找的

  1. __wakeup():在unserialize()反序列化对象时自动调用。
  2. __destruct():在对象被销毁时自动调用(如脚本执行结束或手动调用unset())。
  3. __toString():当对象被当作字符串使用时自动调用(如echo、print、字符串拼接等)。
  4. __call():当调用对象中不存在的方法时自动调用。
  5. __get():当访问对象中不存在的属性时自动调用。
  6. __set():当给对象中不存在的属性赋值时自动调用。
  7. __invoke():当尝试将对象作为函数调用时自动调用。

如果用白名单策略修复ssrf,从用户输入的变量里拿出要访问的目标,这个要注意哪些,因为一些url会通过特殊的字符做白名单绕过,对取变量这个操作有哪些要注意的细节?

  1. 检查协议:只允许http和https协议,禁止file://、gopher://、dict://等危险协议。
  2. 检查域名或IP:使用正则表达式或白名单列表验证域名或IP是否合法。
  3. 处理编码问题:对URL进行解码(如urldecode()),确保特殊字符(如%2f、%252f)不会绕过白名单。
  4. 检查路径和参数:确保路径和参数不包含恶意内容(如…/、@、#等)。
  5. 处理重定向:禁止或限制URL重定向,防止攻击者通过重定向绕过白名单。
  6. 解析URL:使用parse_url()函数解析URL,确保提取的域名、路径和参数是规范的。

php中三个等号和两个等号有什么区别

  1. ==:比较两个值是否相等,但在比较之前会进行类型转换(弱类型)
  2. ===:比较两个值是否相等,且类型必须相同。

php代码常见入口函数怎么找

超全局变量

  1. $_GET:获取URL参数。
  2. $_POST:获取POST请求体中的数据。
  3. R E Q U E S T :获取 _REQUEST:获取 REQUEST:获取_GET、 P O S T 和 _POST和 POST_COOKIE的合并数据。
  4. $_COOKIE:获取客户端发送的Cookie。
  5. $_FILES:获取上传的文件。
  6. $_SERVER:获取服务器和执行环境信息。

输入处理函数

  1. file_get_contents():读取文件或URL内容。
  2. fopen():打开文件或URL。
  3. include / require:包含文件。
  4. eval():执行字符串中的PHP代码。
  5. system() / exec() / passthru():执行系统命令。
  6. unserialize():反序列化数据。

数据库操作函数

  1. mysqli_query() / mysqli_prepare():执行SQL查询。
  2. PDO::query() / PDO::prepare():执行SQL查询。

文件操作函数

  1. file_put_contents():写入文件。
  2. move_uploaded_file():处理上传的文件。

PHP的变量覆盖

  1. 通过extract()函数:将数组中的键值对导入当前符号表,键作为变量名,值作为变量值。
  2. parse_str()函数:将查询字符串解析为变量。
  3. 通过$$可变变量:通过变量的值作为变量名来访问或修改变量。
  4. 通过import_request_variables()函数:将GET、POST、Cookie等请求变量导入全局作用域。

有一个php的程序,本身就允许文件包含的操作,同时想要避免文件包含漏洞,写代码的时候要注意哪些

  1. 限制包含的文件范围:只允许包含预定义的文件。
  2. 检查文件路径:确保文件路径在允许的目录范围内。
  3. 禁用远程文件包含,配置PHP:在php.ini中禁用allow_url_include和allow_url_fopen。
  4. 避免直接包含用户输入:使用安全的封装函数。
  5. 移除特殊字符:过滤用户输入中的…/、%00等危险字符。
  6. 避免相对路径:使用绝对路径包含文件,减少路径遍历的风险。

远程文件包含和本地文件包含,这两种涉及的php设置有什么

远程文件包含(RFI)

  1. allow_url_fopen:
    允许PHP通过URL(如http://、ftp://)打开文件。
  2. allow_url_include:允许PHP通过URL包含文件
    本地文件包含(LFI)
  3. open_basedir:限制PHP脚本可以访问的文件目录。
  4. disable_functions:禁用某些危险函数(如exec、system)。

本地文件包含能不能通过php配置限制文件包含的路径(不通过代码直接通过配置项来解决)

  1. open_basedir:限制文件访问路径:open_basedir用于限制PHP脚本可以访问的文件系统路径。所有文件操作(包括文件包含)都会被限制在指定的目录及其子目录中。
  2. disable_functions:禁用危险函数:disable_functions用于禁用某些可能被滥用的PHP函数(如exec、system等),从而减少攻击者通过LFI执行系统命令的风险。
  3. doc_root:设置文档根目录:doc_root用于指定PHP脚本的根目录。所有文件操作(包括文件包含)都会被限制在该目录下。

http://www.niftyadmin.cn/n/5864209.html

相关文章

SpringBoot+Vue+微信小程序的猫咖小程序平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 在当下这个高速发展的时代,网络科技正以令人惊叹的速度不断迭代更新。从 5G …

机器学习数学通关指南——微分中值定理和积分中值定理

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 1. 定义与核心结论 积分中值…

使用Docker部署SearXNG

SearXNG 搜索引擎 SearXNG 是一个整合了超过70个搜索服务结果的免费的私有互联网搜索引擎,用户不会被网站跟踪或被建立档案进行特征分析,良好地保障了用户的隐私。知识库可以有效地弥补大模型的知识欠缺问题,但依旧无法补充或弥补知识库和大…

250223-Linux/MacOS如何跳过Miniconda的条款阅读,直接安装Miniconda

你可以通过将 -b 参数传递给 Miniconda 的安装脚本,来跳过条款阅读并自动同意许可条款。这样安装会自动进行到下一步的选择项。下面是具体的安装命令: bash Miniconda3-latest-Linux-x86_64.sh -b这里的 -b 代表“批量模式”(batch mode&…

Https解决了Http的哪些问题

部分内容来源:小林coding 详细解析 Http的风险 HTTP 由于是明文传输,所以安全上存在以下三个风险: 1.窃听风险 比如通信链路上可以获取通信内容,用户号容易没。 2.篡改风险 比如强制植入垃圾广告,视觉污染&#…

【深度解析】Java接入DeepSeek大模型:从零实现流式对话+多轮会话管理(完整项目实战) —— SpringBoot整合、API安全封装、性能优化全攻略

一、DeepSeek接入全景图:不只是API调用 核心优势对比 特性DeepSeek其他主流模型免费Token额度500万/月通常10-100万响应延迟平均800ms1-3s流式响应兼容性原生支持需定制适配中文理解能力行业Top中等偏上 适用场景推荐 智能客服(实时反馈)…

ubuntu中打包与压缩命令详解

Ubuntu 中打包与压缩命令详解 在 Ubuntu 系统中,打包和压缩文件是常见的操作。通过打包和压缩,可以将多个文件或目录合并为一个文件,并减小文件大小以节省存储空间或方便传输。本文将详细介绍 Ubuntu 中常用的打包与压缩命令及其用法。 目录…

Linux-Ansible模块扩展

文章目录 Archive UnarchiveSetup模块Lineinfile Replace 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2025年02月23日18点11分 Archive Unarchive Archive和Unarchive模块 需求&#x…