关键词:
一、前言
php代码审计如字面意思,对php源代码进行审查,理解代码的逻辑,发现其中的安全漏洞。如审计代码中是否存在sql注入,则检查代码中sql语句到数据库的传输 和调用过程。
入门php代码审计实际并无什么门槛要求,只需要理解基础的php语法规则,以及理解各种类型漏洞的出现原因则可以开始尝试审计php源代码。通常的漏洞演示中sql语句会直接传入php自带的函数传入数据库执行,但在实际的软件项目中,通常以面向对象的思想进行编程,则会涉及各种形式的封装,调用,以及不同风格的框架,在这个条件下,只需要保持耐心跟踪其调用过程即可。
另外关于代码审计的思路而言,一种是通读代码逐行分析逻辑,另外一种是通过正则快速定位一些问题函数,再反向定位调用过程。这两种方式也对应代码审计的工具主流的实现思路,一种是通过语法分析的过程发现漏洞,另一者是定位问题函数实现。
不管什么方式,重点还是实战阅读代码,累积经验。
以上为个人观点,谨慎吸收。
二、基础知识要求
PHP语法
主流漏洞原理
三、入门阅读 & 参考
《代码审计入门总结》:http://bbs.ichunqiu.com/thread-8954-1-1.html
《php手册》:http://php.net/manual/zh/
《代码审计:企业级Web代码安全架构》:https://read.douban.com/ebook/16642056/
四、审计实战
基础系列
基础系列中的4篇文章基本是通过一些直观的小案例来让人理解从用户的交互到代码的执行这个过程中漏洞是以什么形式存在的,又是如何被利用的,初学者阅读这几篇文章可以让人更加快速的理解代码审计的过程,以及基本的审计思路。
常见WEB漏洞原理分析及利用方式——SQL注入篇 :
http://bbs.ichunqiu.com/thread-12694-1-1.html
常见WEB漏洞代码层原理分析及利用方式——文件操作漏洞篇 :
http://bbs.ichunqiu.com/thread-13008-1-1.html
常见WEB漏洞代码层原理分析及利用方式之Php代码执行篇 :
http://bbs.ichunqiu.com/thread-13465-1-1.html
常见WEB漏洞代码层原理分析及利用方式——文件操作 :
http://bbs.ichunqiu.com/thread-13408-1-1.html
高级系列
高级系列的几篇其实就代码审计的整个大的领域来说并不算高级,但是都有其特色,并且大部分是从真实的软件项目开始讲解,可以让初学者理解实战中可能会遇到的一些问题,以及实战中的思考过程。
代码审计之绕过后台权限限制,继续sql注入:
http://bbs.ichunqiu.com/thread-10102-1-1.html
代码审计之突破路径限制删除文件:
http://bbs.ichunqiu.com/thread-8979-1-1.html
代码审计之任意用户密码找回漏洞:
http://bbs.ichunqiu.com/thread-10497-1-1.html
代码审计之伪全局机制使用不当导致的致命后果:
http://bbs.ichunqiu.com/thread-11390-1-1.html
代码审计之绕过addslashes总结:
http://bbs.ichunqiu.com/thread-10899-1-1.html
mel 和 bees系列都是指定了对某个实际软件项目的审计,初学者可以跟随作者的脚步进行挖掘,联系,其他的类型则是一些杂乱的文章。
Melcms分析集合
代码审计就该这么来 Mlecms Getshell:
http://bbs.ichunqiu.com/thread-13703-1-1.html
代码审计就该这么来2 Mlecms 注入:
http://bbs.ichunqiu.com/thread-13714-1-1.html
{代码审计思路} (通读+审计) Mlecms(中危漏洞/不简单):
http://bbs.ichunqiu.com/thread-11510-1-1.html
beescms分析集合
【代码审计初探】beescms v4.0_R SQL:
http://bbs.ichunqiu.com/thread-12635-1-1.html
对Beescms SQL注入漏洞的进一步思考:
http://bbs.ichunqiu.com/thread-13606-1-1.html
代码审计就该这么来3 beescms getshell:
http://bbs.ichunqiu.com/thread-13977-1-1.html
Beecms任意文件删除:
http://bbs.ichunqiu.com/thread-14540-1-1.html
其他
PHP代码审计:Null 字符问题:
http://bbs.ichunqiu.com/thread-4349-1-1.html
一个CMS案例实战讲解PHP代码审计入门:
http://bbs.ichunqiu.com/thread-16775-1-1.html
PHP代码审计储存XSS形成防御加利用篇:
http://bbs.ichunqiu.com/thread-10532-1-1.html
ZZCMS的代码审计:
http://bbs.ichunqiu.com/thread-14684-1-1.html
另外要提的一点是,不同语言编写的web应用其实都有相似性,当你熟练了解一门语言的代码审计过程后其实便可以进一步扩展到别的语言。你会发现基本原理是相似的,当然不同还是存在的,比如其中的addslashes和null的文章便是如此,它是php这门语言独有的问题,其他还有的一些差异在这里不细说明。
五、i春秋课程推荐
PHP代码审计实战:
http://www.ichunqiu.com/course/54473
六、代码审计工具推荐
RIPS
它能检查出XSS ,sql注入,敏感信息泄漏,文件包含等常见漏洞;能够采用正则方式扫描代码发现漏洞;也可以采用自定义的语法扫描代码发现问题。
下载链接:http://rips-scanner.sourceforge.net/
参考文章
工具推荐:三款自动化代码审计工具:http://bbs.ichunqiu.com/thread-16776-1-1.html
七、关联阅读
Mybatis框架下SQL注入漏洞面面观:
http://bbs.ichunqiu.com/thread-12574-1-1.html
如何用grep对PHP进行代码审计:
http://bbs.ichunqiu.com/thread-16779-1-1.html
python 安全编码&代码审计:
http://bbs.ichunqiu.com/thread-16770-1-1.html
结语
本帖旨在帮助大家更好更系统的学习代码审计,大家有任何建议望不吝赐教,
下期技术专题调研:
我们将在这两天确定下周的技术专题,大家有想学习的指定的技术可以留言申请,我们会根据需求来调整策划专题,感谢大家支持啦!
js中你不知道的一些概念知识(代码片段)
DOM元素e的e.getAttribute(propName)和e.propName有什么区别和联系e.getAttribute(),是标准DOM操作文档元素属性的方法,具有通用性可在任意文档上使用,返回元素在源文件中设置的属性e.propName通常是在HTML文档中访问特定元素的... 查看详情
说说java中你不知道switch关键字的奥秘(代码片段)
Switch语法switch作为Java内置关键字,却在项目中真正使用的比较少。关于switch,还是有那么一些奥秘的。要什么switch,我有if-else确实,项目中使用switch比较少的一个主要原因就在于它的作用能被if-else代替,况且switch对类型的限制... 查看详情
vue中你不知道但却很实用的黑科技(代码片段)
...容大多在iView项目中使用,大家可以前往关注,并结合源代码来研究其中的奥妙。项目地址:https://github.com/iv 查看详情
asp.netcore中间件应用实践中你不知道的那些事(代码片段)
一、概述这篇文章主要分享Endpoint终结点路由的中间件的应用场景及实践案例,不讲述其工作原理,如果需要了解工作原理的同学,可以点击查看以下两篇解读文章:Asp.NetCoreEndPoint终结点路由工作原理解读ASP.NETCORE管道模型及中... 查看详情
javascript中你不知道的5个json-使用技巧(代码片段)
开发中,经常使用 JSON.stringify(object) 来序列化对象,但除了第一个参数外,还有其它参数可用...格式化//默认的JSON.stringify(object)出来数据是一行字符串constuser=name:'JackieDYH',age:30,isAdmin:true,friends:['小可爱... 查看详情
云栖大会中你不可以错过的技术盛宴!
2017阿里云杭州云栖大会ClouderLab探秘带上电脑去云栖,与专家面对面顺便拿认证!报名9月30日截止! 杭州云栖大会推出的4场ClouderLab开放实验室,为企业级技术人员提供了一个动手实操的实验平台,帮助他们清晰理解云计算... 查看详情
代码审计学php还是java
代码审计学是php。本文不是技术文章,主要给出大家java代码审计学习方向的资料、资源推荐,如何从小白一点一点成长。因为最近好多人私信我,怎么去学java代码审计,这里尽量把小白刚入门存在的问题给解答出来。对于没有... 查看详情
你不知道的vscode代码高亮原理(代码片段)
全文5000字,解读vscode背后的代码高亮实现原理,欢迎点赞关注转发。Vscode的代码高亮、代码补齐、错误诊断、跳转定义等语言功能由两种扩展方案协同实现,包括:基于词法分析技术,识别分词token并应用高亮样式基于可编程语... 查看详情
springcloudzuul那些你不知道的功能点(代码片段)
本文摘自于《SpringCloud微服务入门实战与进阶》一书。1./routes端点当@EnableZuulProxy与SpringBootActuator配合使用时,Zuul会暴露一个路由管理端点/routes。借助这个端点,可以方便、直观地查看以及管理Zuul的路由。将所有端点都暴露出来... 查看详情
p3047[usaco12feb]附近的牛nearbycows(代码片段)
我呦呦呦又回来啦! 再来发一篇树形dp~ 昨晚看的这道题,想了好久也不会(然后我就去睡觉了),今天突然明白是怎么回事了,一次A!(好感动) 简单分析一下,首先如果你想拿部分分,那是超级简单的,每... 查看详情
代码审计根据功能点定向审计bugfreezswiin重装案例
(哦对了!这些CMS代码不要安装在服务器上,先不说它们用来代码审计本身就是有漏洞的,而且在网上下载下来,也不能保证没有源码是否被篡改而留有后门,就安装在本地进行代码审计的练习即可)我们先下载BugFree的源代码ht... 查看详情
1.初识代码审计-基础
刚开始接触代码审计,写点基本功,分享下新手心得。下面是测试的代码,也有注释本地搭建暗转wamp,能支持PHP文件的加载,然后用NOTEPAD++编写,就可以运行<?php//单行注释/**/多行注释$moon="moon";//1//print$moon;//基本的调用//echo$m... 查看详情
[luogup1588]丢失的牛(代码片段)
本题抽象一下就是从一个点出发,然后经过坐标x2或+1或-1到另一个点。显然这就是一个搜索题,而且显然可以看出步数最多就是两个点坐标之差。但是数据范围105,直接暴搜肯定要么MLE要么TLE,肯定不行,一定要加上优化。我们... 查看详情
luogup2341[haoi2006]受欢迎的牛(代码片段)
这道题应该也是经典的SCC题了吧印象中不知道在在班里上课的时候在紫书,ACM竞赛的那些书上看到多少次(有点奇怪)首先思路很明显,就是要找出有多少个点,以它们为起点可以遍历整个图首先考虑一种情况,这种情况是多数... 查看详情
ctf:lottery(代码审计|==比较绕过)(代码片段)
...看发现这里面需要用到config.php文件和api.php文件审计api.php代码:<?phprequire_once(‘config.php‘);header(‘Content-Type:applicat 查看详情
你不知道的javascript(上卷)小结
上卷主要讲了作用域、闭包、this以及原型方面的内容。整体在github上瞥了一眼了原版的ydkjs,到目前修改篇幅有点大了,this和原型部分的目录已经不见了,应该是改动不少。说说本书的小缺点,一是,有些东西已经和实际不一... 查看详情
espcms代码审计(代码片段)
以前的代码审计都是在CTF比赛题里面进行对于某一段代码的审计,对于后端php整体代码和后端整体架构了解的却很少,所以有空我都会学习php的代码审计,以提高自己环境就直接用的是phpstudy,学习的前期对于环境的搭建以能够... 查看详情
e语言代码如何审计
参考技术Ae语言代码审计方法:1、php代码审计的几个方向,也是容易出问题的地方。2、代码审计也就是拿到某网站的源码,进行审计,从而发现漏洞,当属Seay源代码审计系统2.1优先选择。3、注入和二次注入。 查看详情