一般就这几个函数和关键词
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 。 看看存不存在可控变量 。
- 算法|【2022/1/15】thinkphp源码无差别阅读(二十)
- IT之家1月14日消息|netusbusb共享组件中存在严重的远程代码执行漏洞
- Python双端队列实现回文检测代码示例
- 一加科技|5万行代码来稳帧!一加10 Pro的游戏全程帧率近90,直到关机
- 浏览器|全球十大浏览器,国产浏览器上榜6款,但全部复制了美国公司内核代码
- 上海市|FairySwap现已通过Certik安全审计,PriFi生态生态即将起航
- PHP|iPhone13没创新?这个功能,几大国产旗舰都抄作业了
- PHP|30岁就带着数百亿退休,他才是真正懂得激流勇退的互联网创始人
- 低代码平台想要实现复杂的业务流程,这4个条件不能少!
- 2021年Apache 年度报告出炉,哪个项目的代码贡献最多