php代码审计思路,php代码审计思路有哪些

本文目录一览:

如何用grep对PHP进行代码审计

解决楼主的问题的方法就是,分开写代码,即:

$filearr = split(“.”,$filename);

$filetype = end($filearr);

split 函数用来分割字符串的时候,基本等同于函数 preg_grep,分割表达式可以是一个正则表达式,也可以是一个普通字符串,所以本身的执行效率很低,这一点你要记得……

所以,实现你现在的这个需求的话,最好用explode函数,使用普通字符作为分割表达式……

但是也的确如楼上所说,split 函数(PHP里)已经弃用,你可以使用 preg_match、preg_match_all 、preg_grep 等使用正则表达式作为分割的函数来替代。

就整个你的需求而言,你的思路还不很好,当一个文件名是【a.b.c.d.e.f.g.php】的时候,程序要浪费多余的资源来分割其实你不用的a、b、c……,

所以要简单满足你取后缀名的需求的代码应该是:

$filetype=substr(strrchr($filename,’.’),1);

此外还有:$path_info = pathinfo($filename); $filetype = $path_info[‘extension’]; 其实不是很推荐。

下面比较一下它们各自的执行效率:

设文件名是:aaa.bb.php、循环执行10000次;执行10次取平均值:

split + end :0.067644s

explode + end :0.016251s

pathinfo + [‘extension’] :0.018983s

strrchr + substr :0.008611s

【以上文字现场版纯手敲,2012-2-25 10:41,谢谢】

php漏洞与代码审计过程中需要注意的几点

1.xss + sql注入

其中占大头的自然是XSS与SQL注入,对于框架类型或者有公共文件的,建议在公共文件中统一做一次XSS和SQL注入的过滤。写个过滤函数,可由如下所示:

$_REQUEST = filter_xss($_REQUEST);

$_GET = filter_xss($_GET);

$_POST = filter_xss($_POST);

$_COOKIE = filter_xss($_COOKIE);

$_POST = filter_sql($_POST);

$_GET = filter_sql($_GET);

$_COOKIE = filter_sql($_COOKIE);

$_REQUEST = filter_sql($_REQUEST);

这里有一点需要说明,$_REQUEST虽然等于$_GET+$_POST,但他们是独立的数组,也就是说假设改变了$_GET的值,但$_REQUEST的值还是原来的值,所以过滤时都不能落下,至于其他的如$_FILE之类的就可忽略了。

最简单的filter_xss函数是htmlspecialchars()

最简单的filter_sql函数是mysql_real_escape_string()

当然,谁都知道这种过滤filter_sql只能过滤字符型和搜索型的注入,对于数字型是没有办法的,但也说明做了这层过滤后,只需在后面注意数字型的SQL语句就可以了,遇到了加intval过滤就可以了,这就变得容易多了。

2. 命令执行

对于命令执行,可以从关键字入手,总共可分为3类

(1) php代码执行 :eval等

(2)shell命令执行:exec、passthru、system、shell_exec等

(3) 文件处理:fwrite、fopen、mkdir等

对于这几类需要注意其参数是否用户可控。

3.上传漏洞

对于上传漏洞,也是重点关注的地方,要仔细分析它的处理流程,针对上传的绕过方式是很多的,最保险的方式:在保存文件是采用文件名随机命名和后缀白名单方式。其次要注意的一点是上传文件的地方可能不止一处,不要有遗漏,可能会碰到这样的情况,突然在某个目录里面包含了一个第三方的编辑器在里面。

文件包含漏洞涉及的函数如include() 、include_once()、require()、require_once()、file_get_contents()等

最常见的还是出在下载文件功能函数,例如download.php?file=///etc/passwd 这种类型中。

4. 权限绕过

权限绕过可分为两类吧

(1)后台文件的未授权访问。后台的文件没有包含对session的验证,就容易出现这样的问题

(2)未作用户隔离,例如mail.php?id=23显示了你的信件,那么换个ID, mail.php?id=24就查看到了别人的信件,编写代码是方便,把信件都存在一个数据表里,id统一编号,前端展现时只需按id取出即可,但未作用户隔离,判定归属,容易造成越权访问。

这样的例子是很常见的,给某银行做评估是就经常发现这种漏洞。

5. 信息泄露

信息泄露算是比较低危的漏洞了,比如列目录这种就属于部署问题,而与代码审计无关了,而像暴路径、暴源码这种是需要防止的。曾经遇到这样的代码

?php if(empty($_GET[‘a’])) {…} ?

表面上似乎没问题,可是当请求变为 xx.php?a[]=1时,即参数变为数组的时候,就会发生错误以致路径泄露,而用isset判断则不会,当然一个个防太麻烦,建议在配置文件中关闭错误提示,或者在公共文件中加入如下代码以关闭错误显示功能:

?php error_reporting(0);?

请问谁知道PHP代码审计怎么学习呢

1、工具什么的没用过,不好回答。

2、跟踪函数?应该是指对一些容易被利用的函数的前后代码流程进行审计吧。这种方式应该是较为常用的,需要你平时多积累危险函数的『字典』,但随着 PHP 应用程序安全性的整体提升,常用的危险函数引起的漏洞越来越少了,也越来越难找了。『安全性敏感』这个,需要自己多学习多积累多思考,多读代码,多分析代码,多看漏洞分析,看不懂别人的漏洞分析,就多利用google搜索、查阅手册等手段努力把分析看明白。然后可以找一些不太知名的小程序来练练手,一点一点积累,循序渐进,慢慢应该会形成一定的『安全性敏感』吧。比如说你在看一个程序前,对应这种类型的应用程序,哪些流程容易出现漏洞,哪些功能容易出现漏洞,哪些危险函数会较多用到,应该先从哪入手看源码等等,在自己的头脑里有一个较为清晰的思路,不知道这个是不是你所说的『安全敏感性』。

3、国内这方面的资料挺多的,多上 wooyun、80vul、wolvez 等这些网站上看看。还有就是多看 PHP 手册,如果有能力的话可以看看 PHP 内核源码,推荐去 github 上看 PHP 内核源码,快捷方便,各个分支的源码都有,方便查阅对比。

原创文章,作者:YFWP,如若转载,请注明出处:https://www.506064.com/n/132081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
YFWP的头像YFWP
上一篇 2024-10-03 23:49
下一篇 2024-10-03 23:49

相关推荐

  • 深入了解VMware Workstation许可证

    一、许可模式 VMware Workstation许可证提供两种模式:订阅许可证和永久许可证。 1、订阅许可证: 订阅许可证是一种按年订阅的模式,可以获取最新版本的VMware W…

    编程 2024-10-09
  • Spring Security升级

    一、Spring Security升级5.6.5 Spring Security是一个广泛使用的安全性解决方案,目前已经发布了5.6.5版本。升级到新版本可以解决已知的漏洞和提高系…

    编程 2024-11-26
  • php守护进程可能的内存泄漏,php内存泄漏排查

    本文目录一览: 1、如何将我的php脚本以守护进程的方式一直运行 2、PHP CURL内存泄露的解决方法 3、php内存溢出问题,求教大神! 4、php 执行mysql中查询时内存…

    编程 2024-10-27
  • Linux登录用户管理

    一、用户分类 Linux上的用户可以分为两类: 系统用户和普通用户。 系统用户通常是为了一些系统服务或应用程序而设立的,例如httpd服务,ftp服务等就会有相应的系统用户。 普通…

    编程 2024-12-11
  • 详解ubuntunfs

    一、ubuntunfs挂载 在Linux系统中,通过挂载网络文件系统(NFS)可以让远程NFS服务器上的文件和文件系统以本地文件和文件系统的形式使用。 下面是通过ubuntunfs…

    编程 2024-10-04
  • 使用firefox调试js,firefox firebug

    本文目录一览: 1、火狐浏览器中的javascript怎么调试 2、火狐浏览器怎么调试js呢? 3、如何使用firefox适用于javascript的debugger命令 4、火狐…

    编程 2024-11-19
  • 使用C#处理DataGridView选中行相关操作

    一、从多个方面阐述DataGridView选中一行的数据 DataGridView控件是Windows.Forms中应用非常广泛的控件,在实际使用中,我们经常需要操作选中的行,下面…

    编程 2024-11-01
  • Spyder Python下载指南

    介绍 Spyder是一种基于Python开发的科学数据集成环境,旨在为科学家、工程师和数据分析家设计。 它提供了一个具有强大的交互式开发环境(IDE),可以方便地编写、测试和调试代…

    编程 2024-10-04
  • Adam优化器全称详解

    一、SGD优化器全称是什么? 在介绍Adam优化器之前,我们需要了解一下SGD优化器全称,即“随机梯度下降优化器”,它是最基础的优化器之一,是深度学习模型中最常使用的优化器之一。 …

    编程 2024-10-04
  • 用Python替换文本中的字符串

    一、Python替换文本中字符串 Python作为一种具有高效性和易用性的编程语言,可以轻松地实现字符串的替换操作。字符串替换,即将字符串中指定子串替换为新的子串,是一种常见的字符…

    编程 2024-11-29

发表回复

登录后才能评论