PHP代码审计基础_漏洞银行_笔记整理(一)

PHP 主要适用于Web开发领域

用户输入经过操作,进入危险函数,执行危险操作
用户输入指GPCSF、数据库、文件等输入点,危险函数包括include、system等。

用户输入的危险操作要是被转义或者过滤就不能被执行成功(这也是我们写代码时要注意的,代码中得有过滤和转义部分,以防留下非常简单的漏洞)

人工审计

(1) 跟踪用户可控的输入,比如GET参数,看它到哪一步,是否进入危险函数中;
(2) 找到危险函数,看进入这个函数的参数是否可控,找来源,判断输入点。
分析时,最好首先看看是否有框架、MVC,是否有通用过滤等,便于审计。

源码结构

一般库文件都是在include文件夹
注重点有:

函数集文件:命名中包含functions,common等关键字;
配置文件:命名中包含config关键字;
安全过滤文件:filter,safe,check;
index文件:程序的入口文件。

PHP代码可能存在的漏洞

  • XSS

基本的包括 反射型存储型 ,关键在于寻找没有过滤就被输出的参数
常用的输出函数有:

echo,print,print_r ,printf,sprintf,die,var_dump,var_export

用户输入没有经过过滤函数,同时在函数执行时也没有相应的过滤和转义,直接输出到html代码中造成xss漏洞,找到这些输出函数来挖掘XSS漏洞。

若 Head头可控,并没有过滤任何xss字符,可以伪造IP,构造payload.

  • SQL 注入(SQLi)

用户的输入最终可以直接当作代码执行,没有任何转义和过滤
危险函数mysql_query

GetIP()函数,ip可以伪造,构造一个Payload。

addslashes()函数:在每个预定义字符前加反斜杠
预定义字符:单引号、双引号、反斜杠、NULL。
默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。
对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

  • 文件包含

可用于文件包含的函数有

include(),include_once(),require(),require_once()。

审计时注意以上函数
文件操作类漏洞,寻找跟文件操作有关的函数

file_get_contents(),highlight_file(),fopen(),readfile(),fread(),fgetss(),fgets(),parse_ini_file(),show_source(),file().

文件删除漏洞常用函数unlink(),老版本下session_destroy()函数也可以用于删除文件。

  • 命令执行漏洞

可以执行命令的函数有

system(),exec(),shell_exec(),passthru(),pcntl_exec(),popeb(),proc_open(),

反引号(`)也可以调用shell_exec()函数进行命令执行

  • 变量覆盖

可以用自定义的参数值替换原有的变量值,常见函数:

extract(),parse_str(),

<?php
$b=1;
$a=array('b'=>'2');
extract($a);
print_r($b);
?>

这样b就被覆盖为2

<?php
$b=1;
parse_str('b=2');
print_r($b);
?>

这样b也被覆盖为2

还有一种利用$$的方式注册变量没验证已有变量导致变量覆盖的情况也有发生

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值