700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > PHP代码审计基础_漏洞银行_笔记整理(一)

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

时间:2018-10-08 20:12:41

相关推荐

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。