freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

代码审计--常用导致漏洞函数
2021-03-09 14:14:43

1.文件包含

A、本地文件包含

include() 向上包含,向下包含,如果包含出错继续向下执行

include_once() 同上,只进行包含一次

require() 向上包含,向下包含,如果包含出错不下向下执行

require_once() 同上,只进行包含一次

B、远程文件包含:

在php.ini文件中

allow_url_include = on

C、文件包含截断

a、%00截断(php版本小于5.3)

b、问号截断(问号后面相当于请求的参数,伪截断)

c、英文(.) 反斜杠(/) 截断

2、文件读取(下载)漏洞:

搜索关键函数:

file_get_contents()

highlight_file()

fopen() 打开文件

read file() 读取文件

fread()

fgetss()

fgets()

parse_ini_file()

show_source()

file()

3.文件上传漏洞:

搜索关键函数:

move_uploaded_file() 接着看调用这个函数的代码是否存在为限制上传格式或者可以绕过

(1) 未过滤或本地过滤:

服务器端未过滤,直接上传PHP格式的文件即可利用

(2) 黑名单扩展名过滤:

限制不够全面:IIS默认支持解析.asp,.cdx, .asa,.cer等

扩展名可绕过:

(3)空格绕过

不被允许的文件格式.php,但是我们可以上传文件名为1.php(注意后面有一个空格)

(4)文件头 content-type验证绕过:

getimagesize()函数:验证文件头只要为GIF89a,就会返回真

限制$_FILES["file"]["type"]的值 就是人为限制content-type为可控变量。

防范:

使用in_array()或 利用三等于===对比扩展名

保存上传文件是重命名,规则采用时间戳拼接随机数:md5(time() + rand(1,1000))

4.文件删除漏洞(不常见)

搜索关键函数:

unlink()利用回溯变量的方式

老版本下的session_destroy(),可以删除文件,现已基本被修复

Metinfo的任意文件删除漏洞$action = delete即可删除.sql的文件,如果文件不是sql直接删除提交的文件名

target.com/recovery.php?&action=delete&filename=../../index.php

5、代码执行

常规函数:

eval()

assert()

preg_replace(), 

call_user_func(), 

call_user_func_array(), 

array_map()

array_filter 依次将array数组中的每个值传递到callbach函数。如果callback函数返回true,则array数组的当前值会被包含

create_function

usort:使用自定一函数对数组进行排序

${}:中间的php代码将会被解析

执行函数:

preg_replace()函数:

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

当$pattern处存在e修饰符时,$replacement 会被当做php代码执行

6.命令执行

搜索关键函数:

system()

exec()

shell_exec()

passthru()

pcntl_exec()

popen()

proc_open()
# 审计分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录