FragranceM 发表于 2018-12-24 07:08:00

PHP代码审计小计

  0x01 工具篇
  编辑器(notepad++,editplus,UE等等,看个人习惯)
  TommSearch(字符串检索) || grep
  HttpProtocolDebugger(http协议调试器)
  Fiddler(分析包,改包)
  Seay PHP代码审计工具(php-code-audit分析辅助)
  几个有趣的项目
  dvwa(代码审计测试平台)
  phpmvs
  php security audit check
  PHP Vulnerability Hunter
  0x02 函数篇
  addslashed()添加反斜杠
  stripslashed()去掉反斜杠
  get_magic_quotes_gpc() 判断是否开启gpc
  expode(".",$array)分割成数组
  is_numeric()判断是否为数字
  sizeof()判断长度
  trim() 去除字符串开头和末尾的空格或其他字符
  system() 输出并返回最后一行shell结果。
  exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
  passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
  EscapeShellCmd(),把一个字符串中所有可能瞒过Shell而去执行另外一个命令的字符转义。这些字符在Shell中是有特殊含义的,象分号(;),重定向(>)和从文件读入 ( (大于) 成为 >
  move_uploaded_file() 函数将上传的文件移动到新位置。
  extract() 函数从数组中把变量导入到当前的符号表中。
  对于数组中的每个元素,键名用于变量名,键值用于变量值。
  第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。
  本函数返回成功设置的变量数目。
  语法
  extract(array,extract_rules,prefix)
  parse_str() 函数把查询字符串解析到变量中. (常见于变量覆盖漏洞)
  语法
  parse_str(string,array)
  参数    描述
  string    必需。规定要解析的字符串。
  array    可选。规定存储变量的数组名称。该参数指示变量存储到数组中。
  针对变量指定***
  不使用foreach遍历$_GET变量,改用$_GET[(index)]
  eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码,且必须以分号结尾。
  如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。
  preg_replace 执行一个正则表达式的搜索和替换
  /e参数执行代码
  0x03 漏洞篇
  -----------------------------------------------
  .Sql-Injection
  留意:cookie及x-forward-for,宽字节,报错注射等
  挖掘漏洞参考
  变量
  $_GET[""],$_POST[""],$_COOKIE[""], $SERVER[""]
  数据库操作函数
  mysql_query()
  数字型注入防范:
  1.is_numeric() ctype_digit() intval()
  2.str_length()确定长度
  字符型注入防范:
  1.mysql_real_escape_string()
  2.数据库查询语句前加@防爆错
  3.str_length()确定长度
  -----------------------------------------------
  .Command-Execution
  函数:
  system(),passthru(),popen(),exec()
  数据库操作函数:
  exec,system,popen,passthru,proc_open,shell_exec
  执行命令管道符 % | >
  测试如0 | dir c:
  || 双竖线的作用,前面语句执行错误则执行后面语句
  如xx"+||+whoami+||+echo
  -----------------------------------------------
  .File-Inclusion
  函数:
  include(),require(),include_once(),require_once()
  远程文件包含漏洞要求
  allow_url_fopen()allow_url_include()file_get_contents()
  绕过:zlib://和ogg://
  5.2.0之后版本
  data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+//
  @eval(file_get_contents('php://input'));//POST phpinfo();
  配合%00截断,新版本自动转义\0
  -----------------------------------------------
  .CSRF
  CSRF防范策略
  1>验证http-referer字段
  安全性低,易被伪造
  2>在请求地址中添加token并验证
页: [1]
查看完整版本: PHP代码审计小计