PHP代码审计入门
<h2 style="color: black; text-align: left; margin-bottom: 10px;">目录</h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1.代码审计目的</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2.代码审计<span style="color: black;">基本</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3.代码审计思路</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">4. PHP核心配置</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">5.代码审计环境</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">6.手动调试代码</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">7. PHP的弱类型</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">8.学习"漏洞"函数</p>9.代码审计总结<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">1、</span>代码审计目的</h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">代码审计指的是对源代码进行<span style="color: black;">检测</span>,寻找代码中的bug以及安全缺陷(漏洞)。代码审计这是一个<span style="color: black;">必须</span>多方面技能的技术,<span style="color: black;">亦</span>是<span style="color: black;">必须</span><span style="color: black;">必定</span>的知识<span style="color: black;">贮存</span>。<span style="color: black;">咱们</span><span style="color: black;">必须</span><span style="color: black;">把握</span>编程,安全<span style="color: black;">工具</span>的<span style="color: black;">运用</span>、漏洞原理、漏洞的修复方式、函数的缺陷等等,<span style="color: black;">倘若</span>再高级<span style="color: black;">有些</span>,<span style="color: black;">咱们</span><span style="color: black;">必须</span>学习<span style="color: black;">区别</span>的设计模式,编程思想、MVC框架以及<span style="color: black;">平常</span>的框架。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">那样</span><span style="color: black;">针对</span>小白应该是<span style="color: black;">必须</span>一个路线,一个流程。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">先记住一句话"一切存在用户输入的<span style="color: black;">地区</span>都有可能存在漏洞"</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">戳此获取网络安全资源</a></p>
<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">2、</span>代码审计<span style="color: black;">基本</span></h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">代码审计入门<span style="color: black;">基本</span>:html/js<span style="color: black;">基本</span>语法、PHP<span style="color: black;">基本</span>语法 ,面向对象思想,PHP小项目<span style="color: black;">研发</span>(Blog、注册登录、表单、文件上传、留言板等),Web漏洞挖掘及利用,Web安全<span style="color: black;">工具</span>基本<span style="color: black;">运用</span>(burpsuite、sqlmap等),代码审计<span style="color: black;">工具</span>(seay审计系统、zend studio+xdebug等)</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">代码审计两种基本方式:</p>通读全文源码:通读全文发<span style="color: black;">做为</span>一种最麻烦的<span style="color: black;">办法</span><span style="color: black;">亦</span>是最全面的审计<span style="color: black;">办法</span>。<span style="color: black;">尤其</span>是针对大型程序,源码成千上万行。当然<span style="color: black;">认识</span><span style="color: black;">全部</span>Web应用的业务<span style="color: black;">规律</span>,<span style="color: black;">才可</span>挖掘到<span style="color: black;">更加多</span>更有价值的漏洞。功能点审计:<span style="color: black;">按照</span>漏洞对应<span style="color: black;">出现</span>函数进行功能行审计,常会用到逆向溯源数据流<span style="color: black;">办法</span>进行审计。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">代码审计两种基本<span style="color: black;">办法</span>:</p>正向<span style="color: black;">跟踪</span>数据流:跟踪用户输入参数 -> 来到代码<span style="color: black;">规律</span> -> 最后审计代码<span style="color: black;">规律</span>缺陷 -> 尝试构造payload逆向溯源数据流:字符串搜索指定操作函数 -> 跟踪函数可控参数 -> 审计代码<span style="color: black;">规律</span>缺陷 -> 尝试构造payload<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">现cms可分大体两类:</p>单入口cms:不管<span style="color: black;">拜访</span>哪个模块都<span style="color: black;">运用</span>同一个入口文件,<span style="color: black;">平常</span>的MVC框架采用这种模式。多入口cms:<span style="color: black;">每一个</span>模块都有一个入口文件(<span style="color: black;">能够</span>前端设置一个入口文件 index.php,后端创建一个入口文件admin.php,前后端的入口文件是独立的)。<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">3、</span> 代码审计思路</h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">从个人<span style="color: black;">方向</span>出发,<span style="color: black;">倘若</span>环境<span style="color: black;">准许</span>的话,<span style="color: black;">能够</span>先<span style="color: black;">选取</span>做一个”程序员“再来做代码审计。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">由于</span>从<span style="color: black;">研发</span>者的位置去思考问题,<span style="color: black;">能够</span>快速定位问题。学习面向对象编程以及面向过程编程,编写<span style="color: black;">有些</span>项目<span style="color: black;">提高</span>对代码的理解能力,再是对<span style="color: black;">各样</span>漏洞<span style="color: black;">能够</span>独立挖掘利用并能理解漏洞的<span style="color: black;">害处</span>,<span style="color: black;">这儿</span><span style="color: black;">咱们</span><span style="color: black;">重点</span>针对PHP源码做审计</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">接下来<span style="color: black;">咱们</span>从三个层次<span style="color: black;">起始</span><span style="color: black;">咱们</span>的源码审计思路</p>确定要审计的源码是什么语言确定该源码是单入口还是多入口确定该语言的<span style="color: black;">各样</span>漏洞诞生的函数<h2 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">4、</span>PHP核心配置</h2>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">一个漏洞在<span style="color: black;">区别</span>环境<span style="color: black;">导致</span>的结果<span style="color: black;">亦</span>是不<span style="color: black;">同样</span>的。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">因为</span>关于php.ini配置的内容过于多,<span style="color: black;">这儿</span><span style="color: black;">举荐</span>浏览官方文档 <a style="color: black;"><span style="color: black;">https://www.</span><span style="color: black;">php.net/manual/zh/ini.p</span><span style="color: black;">hp</span></a>,<span style="color: black;">咱们</span>在<span style="color: black;">这儿</span><span style="color: black;">重点</span>列下php.ini <span style="color: black;">重点</span><span style="color: black;">运用</span>的安全配置。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">safe_mode = off用来限制文档的存取,限制环境变量的存取,<span style="color: black;">掌控</span><span style="color: black;">外边</span>程序的执行.PHP5.4.0移除。限制环境变量存取safe_mode_allowed_env_vars = string指定php程序<span style="color: black;">能够</span>改变的环境变量的前缀,当这个选项的值为空时,<span style="color: black;">那样</span>php<span style="color: black;">能够</span>改变任何环境变量,<span style="color: black;">倘若</span> 如:safe_mode_allowed_env_vars = PHP_,当这个选项的值为空时,<span style="color: black;">那样</span>php<span style="color: black;">能够</span>改变任何环境变量。<span style="color: black;">外边</span>程序执行目录safe_mode_exec_dir = "/usr/local/bin"当安全模式被激活,safe_mode_exec_dir参数限制<span style="color: black;">经过</span>exec()函数执行的可执行文件到指定的目录。举例<span style="color: black;">来讲</span>,<span style="color: black;">倘若</span>你想限制在/usr/local/bin目录执行功能,你<span style="color: black;">能够</span><span style="color: black;">运用</span>这个指令:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">safe_mode_exec_dir = "/usr/local/bin"禁用函数</p>disable_functions为了更安全的运行PHP,<span style="color: black;">能够</span>用此指令来禁止<span style="color: black;">有些</span><span style="color: black;">敏锐</span>函数的<span style="color: black;">运用</span>,当你想用本指令禁止<span style="color: black;">有些</span>危险函数时,切记把dl()函数<span style="color: black;">亦</span>加到禁
我深感你的理解与共鸣,愿对话长流。 外链论坛的成功举办,是与各位领导、同仁们的关怀和支持分不开的。在此,我谨代表公司向关心和支持论坛的各界人士表示最衷心的感谢! 感谢你的精彩评论,带给我新的思考角度。 回顾历史,我们感慨万千;放眼未来,我们信心百倍。 论坛是一个舞台,让我们在这里尽情的释放自己。 我完全赞同你的观点,思考很有深度。
页:
[1]