php漏洞与代码审计

在甲方公司做代码审计一般还是以白盒为主,漏洞无非这么几类,XSS、sql注入、命令执行、上传漏洞、本地包含、远程包含、权限绕过、信息泄露等。

QQ截图20150511123522.jpg

在甲方公司做代码审计一般还是以白盒为主,漏洞无非这么几类,XSS、sql注入、命令执行、上传漏洞、本地包含、远程包含、权限绕过、信息泄露等。



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);?>


当然,漏洞远不止这些,其他如cookie伪造、CSRF等非主流的就不介绍了。

原文转自:http://www.bylongge.com/?post=71

请博主喝杯咖啡呢,谢谢^_^

如果本文“对您或有帮助”,欢迎随意打赏,以资鼓励继续创作!

原创文章《php漏洞与代码审计》,作者:笔者 徐哲钻石会员,未经允许不得转载。
转载或复制时,请注明出处:https://www.xuxiaokun.com/78.html,本文由 Mr.xu 博客网 整理。
本站资源下载仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

(0)
打赏 微信扫一扫赞赏 微信扫一扫赞赏 支付宝扫一扫赞赏 支付宝扫一扫赞赏
上一篇 2014年6月1日 12:22
下一篇 2014年6月1日 18:52

相关推荐

  • VPS简单性能测试命令

    以下来源自互联网

    1.top

    Top命令显示了实际CPU使用情况,默认情况下,它显示了服务器上占用CPU的任务信息并且每5秒钟刷新一次。你可以通过多种方式分类它们,包括PID、时间和内存使用情况。

    第一行的load average即为系统负载,就是说整个VPS资源占用情况,如果正常建站,一般很少有超过5的时候;

    第三行的,这个是CPU占用资源…

    2013年9月26日
    00405
  • Win10高危漏洞来袭[CVE-2020-0601]

    微软在本月的Patch Tuesday修补了49个安全漏洞,其中最受瞩目的为涉及签章验证的CryptoAPI漏洞CVE-2020-0601,虽然它只被微软列为重要(Important)漏洞,但它却是第一个由美国国安局(NSA)所发现并主动提交给微软的安全漏洞。

    2020年1月17日
    00858
  • 更新组策略

    在用AD的企业当中,运维人员会随着企业相关工作流程进行企业AD策略操作,往往不会即时生效,等待自动更新时间较长,那么通过以下方式给予企业AD强制更新组策略,快速解决方法请下载如下附件。

    2013年11月9日
    00388
  • Linux处理目录的常用命令

    处理目录的常用命令 几个常见的处理目录的命令如下: 你可以使用 man [命令] 来查看各个命令的使用文档 如 :man cp 历史上的今天2020年:WordPress后台登录页…

    2023年7月27日
    00312
  • Navicat连接SQL Server数据:报错08001-命名管道提供程序的完美解决方法

    笔者今天根据需求需要提取下ERP客户的ID来批量查询客户对应的姓名和联系方式,通过Navicat Premium工具配置连接远端数据库时报08001错误,此时不方便连接远端服务器数…

    2024年4月23日
    00615
  • 利用NGINX最大化Python性能第一部分Web服务和缓存

    Python 的著名之处在于使用简单方便,软件开发简单,而且据说运行性能优于其它脚本语言。(虽然最新版本的 PHP、PHP 7 可能会与它展开激烈竞争。) 所有人都希望自己的网站和…

    2016年9月13日
    00435

发表回复

登录后才能评论

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

笔者期待与您共勉 · 互赢

有言必答、商务合作、有偿服务

QQ:点击这里给我发消息

邮件:it@xuxiaokun.com

线上沟通时间 ↓↓↓:

周一至周五 9:30 - 17:30

其余时间Mail或QQ我,有言必应。

244439232