zoukankan      html  css  js  c++  java
  • PHP代码审计学习_day1

    0x00 工具的下载和安装

    RIP、seay、phpstrom等等,自行百度安装。


    0x01 MVC架构

    MVC是一种使用MVC设计创建Web应用程序的模式。MVC模式同时提供了对HTML、CSS和JavaScript的完全控制。
    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。表示应用程序核心(比如数据库记录列表),通常模型对象负责在数据库中存取数据。
    View(视图)是应用程序中处理数据显示的部分。显示数据(数据库记录),通常视图是依据模型数据创建的。
    Controller(控制器)是应用程序中处理用户交互的部分。处理输入(写入数据库记录),通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。


    0x02 常见的PHP框架

    ThinkPHP:全中文,易上手,对环境配置没有什么要求。
    Yaf:据说是世界上最快的PHP框架,用C写的扩展,安装的时候需要编译。
    Laravel、Kohana、Codeigniter、Yii
    Smyfony:这个框架据说很强。
    doitphp:国内PHP框架的后起之秀。
    注:以上顺序没有排名之分。


    0x03 功能点定向审计

    程序安装、文件上传、文件管理、登录验证、备份恢复、找回密码。


    0x04 PHP核心配置php.ini

    (1)基本配置-语法

    大小写敏感
    directive = value(指令 = 值)
    foo = bar ≠ FOO = bar
    运算符
    |、&、~、!
    空值的表达方式
    foo = ;
    foo = none;
    foo = "none";

    (2)基本配置-安全模式

    安全模式
    safe_mode = off
    安全模式,用来限制文档的存取、限制环境变量的存取、控制外部程序的执行。
    注:本特性已在PHP5.4.0被移除
    这里举一个例子,创建一个test.php文件,内容为

    <?php
    $cmd = $_GET['id'];
    system($cmd);
    ?>
    

    访问127.0.0.1/test.php?id=ipconfig,就可以看到ipconfig回显的内容。
    然后去开启safe_mode = on,再次访问,就没有任何的回显了。
    限制环境变量存取
    safe_mode_allowed_env_vars = string
    指定PHP程序可以改变的环境变量的前缀,当这个选项的值为空时,那么php可以改变任何环境变量,如safe_mode_allowed_env_vars = PHP_,当这个选项的值为空时,那么php可以改变任何环境变量。
    外部程序执行目录
    safe_mode_exec_dir = "E:Local TestWWW"(指定一个网站的主目录就可以了,其他的看情况而定)
    禁用函数
    disable_functions = 你想禁用的函数名
    为了更安全的运行PHP,可以用此指令来禁止一些敏感函数的使用,当你想用该指令禁止一些危险函数时,切记把dl()函数也加到禁止列表,攻击者可以利用dl()函数加载自定义的php扩展来突破disable_function。配置禁用函数时可以使用逗号分隔函数名。
    com组件
    com.allow_dcom = false
    PHP设置在安全模式下(safe_mode),仍旧允许攻击者使用COM()函数来创建系统组件来执行任意命令,可以关闭这个函数来防止出现漏洞。
    使用COM()函数需要在PHP.ini中配置extension=php_com_dotnet.dll,如果PHP版本小于5.4.5,则不需要。

    (3)基本配置-控制变量

    全局变量注册开关
    register_globals = off
    默认值为off,在4.2版本之前是默认开启的。当为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,这是对服务器来讲时非常不安全的,所以不能让他注册为全局变量。
    为off时,服务器端通过$_GET['name']来获取数据。
    为on时,服务器端对POST或GET提交的变量,都会自动使用全局变量来接受值。
    魔术引号自动过滤
    magic_quotes_gpc = on
    注:该特性在PHP5.4.0中被移除
    在php.ini中默认关闭。为on时,会自动将所有的单引号、双引号、反斜杠和空字符都加上反斜杠来进行转义,开启会提高网站的安全性,但也会影响HTTP请求的数据。也可以使用addslashes来转义提交的HTTP请求数据,或是用stripslashes来删除转义。

    (4)基本配置-远程文件

    是否允许包含远程文件
    allow_url_include = off
    为on时,可以直接包含远程文件,若包含的变量为可控的,则可以直接控制变量来执行PHP代码。
    是否允许打开远程文件
    allow_url_open = on
    允许本地PHP文件通过调用URL重写来打开和关闭写权限,默认的封装协议提供的ftp和http协议来访问文件。

    (5)基本配置-目录权限

    HTTP头部版本信息
    expose_php = off
    防止了通过http头部泄露的php版本信息
    文件上传临时目录
    upload_tmp_dir =
    上传文件临时保存的目录,如果不设置的话,则采用系统的临时目录
    用户可访问目录
    open_basedir = 自己指定目录
    能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问不应该访问的文件,一定程度上限制了phpshell的危害。

    (6)基本配置-错误信息

    内部错误选项
    display_errors = on
    显示PHP脚本的内部错误,网站发布后建议关闭PHP的错误回显,在调试的时候通常把PHP错误显示打开
    错误报告级别
    error_reporting = E_ALL & ~E_NOTICE
    这个设置的作用是将错误级别调到最高,显示所有问题,方便排错。


    注:以上的php.ini中的配置,在php.ini中都会有注释来进行说明,不明白或是不清楚的都可以查看注释

  • 相关阅读:
    jQuery动画(带参数)
    ajax是什么
    jQuery遍历(3)
    jQuery遍历(2)
    jQuery遍历(1)
    javascript错误处理
    导航菜单的实现
    bootstrap环境搭建
    jQuery动画效果
    MVVM模式下WPF动态绑定展示图片
  • 原文地址:https://www.cnblogs.com/-an-/p/13340827.html
Copyright © 2011-2022 走看看