extract
parse_str
import_request_variables
mb_parse_str
$$
不过还有个特殊的配置 , 也可能造成变量覆盖
register_globals全局变量覆盖
php.ini中有一项为
register_globals
, 即注册全局变量 , 当register_globals=On
时 , 传递过来的值会被直接的注册为全局变量直接使用 , 而register_globals=Off
时 , 我们需要到特定的数组里去得到它 。注意:register_globals已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除 。
当register_globals=On , 变量未被初始化且能够用户所控制时 , 就会存在变量覆盖漏洞:
<?php
echo “Register_globals: “ . (int)ini_get(“register_globals”) . “<br/>“;
if ($a) {
echo “Hacked!”;
?>
通过GET和POST方式输入变量a的值:
当然 , 也可以从COOKIE中输入:
6.2.9. 代码执行漏洞审计要素
- php.ini文件中的disable_function是否有禁用函数 。
- 是否存在代码执行的敏感函数 。
- 是否输入变量可控 。
eval
asser
preg_replace
create_function
array_map
call_user_func
call_user_func_array
array_filter
usort
uasort
$a($b)(动态函数)
6.2.10. 命令执行漏洞审计要素
- 参数是否用户可控
- 是否配置了全局过滤器 , 过滤规则是否符合安全规范
- 是否所有的命令执行参数都经过了过滤器 , 或受白名单限制
exec
passthru
proc_open
shell_exec
system
pcntl_exec
popen
“(被反引号包裹的变量也可以执行)
6.2.11. 任意文件下载/下载漏洞审计审计要素
- 是否存在…/、.、…\\等特殊字符过滤 。
- 参数是否用户可控
- 是否配置了相对路径或者绝对路径 。
fgets
fgetss
file_get_contents
readfile
parse_ini_file
highlight_file
file
fopen
readfile
fread
**Tip:**前两天遇到个 , 过滤了config/database.php这样的正则匹配 , 还过滤了… , 目的是防止目录穿越 , 读取服务器其他目录的文件 , 可是没过滤一个.
这样我使用config/./database.php绕过了正则 , 照样把敏感文件读取出来了 。。。
6.2.12. 任意文件删除和上面的下载一样
搜索的关键词变了
rmdir
unlink
6.2.13. 任意文件写入还是一样 , 关键词为
copy
file_put_contents
fwrite
6.2.14. 会话认证漏洞会话认证漏洞实际上涉及的方面比较广 , 如cookie、session、sso、oauth等 , 当然这个漏洞比较常见是在cookie上 , 服务端直接取用cookie中的数据而没有校验 , 其次是cookie加密数据在可预测的情况下 。
审计要素
- 是否cookie中的加密数据可预测 。
- 是否cookie中的数据可预测 。
- 服务端是否只依赖cookie来判断用户身份 。
鉴权是只通过cookie中的userid来判断 , 如果我遍历userid , 可以达到登录绕过或越权的目地 。
6.2.15. 反序列化漏洞一般实际审计的时候 , 项目中见的比较少 , 框架中见的比较多 。
全局搜索serialize 。 看看存不存在可控变量 。
- |有人说浏览器内核有上千万行代码,那它真的有这么复杂吗?
- 程序员|为什么程序员会有代码能跑就不要动的观点?是有毒吗?还是怎样?
- C++|编写现代C++代码:GSL 4.0.0 正式可用
- PHP|MD5绕过的技巧
- 程序员|程序员该怕吗,又一个人工智能会写代码了
- 阿里巴巴|爆测一周!22年必看最细致代码托管工具测评
- 事业单位|星原AI+RPA低代码平台1.0版本发布
- 数据隐私法|小米通过欧洲数据隐私法 GDPR 年度合规审计
- 易用性|简道云单兰杰:低代码市场竞争加剧,差异化愈发重要|探路2022
- 乔布斯|【2022/01/25】thinkphp源码无差别阅读(二十九)