IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 白帽子讲安全阅读笔记 -> 正文阅读

[PHP知识库]白帽子讲安全阅读笔记

PHP安全

一,文件包含

原理:实际就是代码注入,对用户的输入过滤的不够严格,过分相信。
PHP包含函数: incllude(),include_once(),require(),require_once()。这几个函数把包含进来的文件的内容当作php代码来执行,不管后缀名
本地包含:被包含的文件在目标服务器上
远程包含:被包含的文件在其他主机上
本地包含的利用技巧:

  • 包含本地文件*
  • 包含data:和php;//等伪协议
  • 包含日志,access_log(请求信息)和error_log(出错请求)
  • 包含session文件
  • 包含/proc/self/environ 文件。
  • 包含上传的临时文件
  • 包含其他应用创建的文件,比如数据库文件、缓存文件、应用日志等,需要具体情况具体分析。

注意:

  • 当设置了open_basedir,那么就不能包含web目录之外的文件了
  • php://input和data伪协议,远程包含要求 allow_url_include 设置为 ON

二,变量覆盖漏洞

全局变量覆盖:
注意:register_globals在PHP 5.3.0废弃了,所以这个方法现在应该不能用了
extract()变量覆盖

  • extract()函数能将变量从数组导入当前的符号表
  • 当extract()第二个参数为EⅩTR_SKIP,则不会覆盖已有变量的值
  • 注意:extract( G E T ) 不 能 写 成 e x t r a c t ( _GET)不能写成extract( G?ET)extract(_GET[‘a’])

$$变量覆盖

$a='b';
$b='c';
echo $$a;//相当于echo &b

import_request_variables 变量覆盖

  • GET/POST/Cookie 变量导入到全局作用域中
  • PHP 4 >= 4.1.0, PHP 5 < 5.4.0

parse_str()
定制安全的php环境

  • open_basedir,限制php只能操作特定目录文件,注意/a和/a/的不同
  • allow_url_fopen = Off
  • allow_url_include = Off,远程文件包含
  • display_errors = Off,防止泄露信息
  • log_errors = On,记录错误信息,关闭回显
  • magic_quotes_gpc = OFF,能被绕过,同时会有新的安全问题
  • session.cookie_httponly = 1,防止跨站脚本
  • disable_functions
  • 。。。。。。。。

文件上传漏洞

问题:

  1. 上传文件是 Web 脚本语言,服务器的 Web 容器解释并执行了用户上传的脚本,导致代 码执行;
  2. 上传文件是 Flash的策略文件 crossdomain.xml,黑客用以控制 Flash 在该域下的行为(其 他通过类似方式控制策略文件的情况类似);
  3. 上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行
  4. 上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执 行,被用于钓鱼和欺诈。

条件:

  1. 上传的文件能被容器解释执行=>上传文件所在目录能把web覆盖到
  2. 用户能访问到=>要知道路径
  3. 文件的核心内容没有被改变=>恶意代码没有被过滤掉

解决办法:

  1. 上传目录设置不可执行
  2. 对文件名进行重命名,对文件路径重写
  3. 白名单过滤
  4. 单独设置文件服务器的域名

认证与会话管理

密码与登录

  • 明文密码经过哈希后(比如 MD5 或者 SHA-1)再保存到数据库中
  • 登录时判断用户提交的“密码”哈希值,与保存在数据库中的“密码”哈希值是否一致
  • MD5(Username+Password+Salt),俗称‘加盐’。加的salt是个随机数,这样即使密码相同,最后的哈希值也不一样,杜绝了彩虹表。

Session 与认证

  • 当用户登录完成后,在服务器端就会创建一个新的会话(Session),服务器端维护所有在线用户的 Session。有些服务器会把Session加密储存在Cookie中,让客户端保存
  • 浏览器需要把当前用户持有的 SessionID 告知服务器。
  • 把 SessionID 加密后保存在 Cookie 中跟随http请求发到服务器

单点登录

  • 一次登录就可访问所有的业务
  • 但是对于某些敏感的业务会要求额外认证

访问控制

Web框架安全

MVC架构

  • Ⅴiew 层负责用户视图、页面展示等工作
  • Controller 负责应用的逻辑实现,接收 Ⅴiew 层传入的用户请求,并转发给对应的 Model 做处理;
  • Model 层则负责实现模型,完成数据的处理

防御

  • 在 Ⅴiew 层,可以解决 ⅩSS 问题
  • 使用 security token 解决 CSRF 攻击

浏览器安全

同源策略

  • 同协议,同域名(ip),同端口
  • <script>、<img>等标签不受同源策略限制,但是浏览器限制了 JavaScript 的权限,使其不能读、写返回的内容。
  • 跨域 访问的基础““JavaScript 无法控制该HTTP 头”
  • DOM、Cookie、ⅩMLHttpRequest ,浏览器加载的一些第三方插件也有各自的同源策略

沙箱

  • 多进程
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:13:58  更:2021-07-13 17:16:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/30 17:45:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码