小康's Blog

关于代码审计的初步讲解

预定义变量[常规外部提交的变量]
   GPC $_ENV/SERVER/SESSION $HTTP_RAW_POST_DATA等
register_globals = on [未初始化的变量]
   PHP » 4.20 默认为off
变量覆盖[未初始化及覆盖前定义的变量]
     如:extract() 、遍历初始化变量、parse_str()等
变量的传递与存储[中转的变量]
   存储于数据库、文件[如配置、缓存文件等]

文件包含包含漏洞
代码执行执行任意代码漏洞
命令执行执行任意命令漏洞
文件系统操作文件(目录)读写等漏洞
数据库操作SQL注射漏洞
数据显示 XSS等客服端漏洞

phplist-2.10.4[old ver]远程包含漏洞

//phplist-2.10.4\public_html\lists\admin\index.php
if (!ini_get("register_globals") || ini_get("register_globals") == "off") {
......
//经典的变量覆盖漏洞模式
  foreach ($_REQUEST as $key => $val) { 
    $$key = $val;                   
  }
}
......
//覆盖$_SERVER[“ConfigFile”],经过is_file()判断后进入include()
if (isset($_SERVER["ConfigFile"]) && is_file($_SERVER["ConfigFile"])) {
  print '<!-- using '.$_SERVER["ConfigFile"].'-->'."\n";
  include $_SERVER["ConfigFile"];


评论