《代码审计》学习计划 admin 102523文章 87评论 2020年12月27日23:23:46评论89 views字数 1664阅读5分32秒阅读模式 0x00 前言 虽然小黑现在还只是个脚本小子,但心里还是有一个黑客梦的。成为黑客的第一步就是要学会代码审计! 上周从书柜里拿出了尘封已久的Seay著的《代码审计》一书,利用一周时间略读了一遍。根据书中内容制定了代码审计的学习计划。 这周的文章就是梳理并简单介绍一下自己的计划,后面会根据这个计划更详细的水文章输出学习笔记。 《代码审计》一书主要针对的是php的web系统进行审计,以下内容也默认针对php web进行说明。 0x01 环境复现 要审计一个cms,最好是把它在本地搭建出来: (1)黑白盒相结合进行审计可以提高效率。 (2)审计之后能进行漏洞复现确认结果。 环境复现需要注意下面几个方面,如果有明确的攻击目标则下面的几点要最大化的和目标保持一致,如果只是单纯的挖漏洞则最好全面的覆盖下面的各种环境以明确利用条件。 1、操作系统 不同操作系统的特性差异会导致漏洞的利用方式有所变化,这里的差异主要是windows系列和unix系列系统的差异,同系列系统不同版本的差异(如centos和ubuntu)基本不会导致漏洞利用方式的变化。 至于mac目前还没有广泛用于服务器领域,可以先忽略。 2、编程语言 php语言的差异主要在版本和配置上。如php某些版本之后不支持部分函数,某些配置项是否开启也是某些漏洞利用的前提条件。 3、web容器 主要指nginx,apache等等容器之间的差异,目前能想到的是不同容器的解析漏洞的利用方式不同。 4、cms框架 审计的主体,主要在于不同版本的差异,旧版本挖出的漏洞可能在新版本已经被悄悄修复掉了。 0x02 工具辅助 1、自动化审计工具 能对代码进行初步的自动化审计,定位可疑变量、可疑函数以方便后续的人工审计。 2、审计辅助工具 书中提到的主要是黑盒测试工具,作为脚本小子的我这种工具有一大堆。 3、代码编辑器 界面友好,辅助功能多。 0x03 基础漏洞原理 1、sql注入 外部可控的参数拼接到sql语句中并改变了sql语句原本的逻辑,可导致攻击者利用执行查询敏感数据及其他数据库操作。 2、XSS 程序输出在html页面的内容部分可控导致被篡改成恶意js脚本执行。 3、CSRF 敏感操作未鉴权导致攻击者可劫持其他用户进行请求。 4、文件包含 php文件包含可直接执行包含文件的代码,通常配合文件上传漏洞getshell。 5、文件读取(下载) 文件读取(下载)功能的文件路径参数可控导致敏感文件内容泄露。 6、文件上传 用户可上传一个web服务器可解析的文件导致任意代码执行getshell。 7、文件删除 文件删除功能路径可控导致任意文件删除。 8、代码执行 用户可通过请求将恶意代码注入程序中执行。 9、命令执行 用户可通过请求将恶意系统命令注入程序中执行。 0x04 审计思路 1、根据敏感关键字回溯参数传递过程 优点:通过搜索敏感关键字快速挖掘想要的漏洞,可定向、高效高质量。 缺点:没有通读代码,对程序整体框架了解不深入,定位漏洞利用点会花费一点时间,无法挖掘逻辑漏洞。 2、查找可控变量,正向追踪变量传递过程 优点:最后挖到漏洞的同时也直接明确了漏洞的利用点。 缺点:有可能跟到最后发现没有漏洞,效率不高。 3、寻找敏感功能点,通读功能点代码 优点:与全文通读相比可提高审计速度。 缺点:需要一定黑盒测试经验。 4、直接通读全文代码 优点:可以挖掘更多、更高质量的逻辑漏洞。 缺点:花费时间长,很累。 0x05 进阶漏洞原理 1、变量覆盖 用户传入的参数可覆盖程序原本的变量值。 2、逻辑漏洞 种类有很多,业务处理不符合预期。 3、会话认证漏洞 认证标识(cookie)可篡改、可预测、未校验…… 4、二次注入 来自程序内部的注入攻击。 5、其他书中只提到上述四种,不过之前打ctf感觉进阶漏洞应该不止这些。 0x06 审计小技巧 学无止境,后续分享…… 0x07 后记 念叨着要学代码审计已经一年多了,终于在2021年之前开始了…… 下面是学习计划的思维导图: 有一起学习的小伙伴欢迎留言沟通分享~ END. 欢迎留言~ 欢迎关注~ 欢迎点赞~ 我是小黑,喵~ 本文始发于微信公众号(小黑的安全笔记):《代码审计》学习计划 点赞 http://cn-sec.com/archives/221924.html 复制链接 复制链接 左青龙 微信扫一扫 右白虎 微信扫一扫
评论