代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等。 3、代码审计挖掘漏洞根本: 可控变量及特定函数,不存在过滤或过滤不严谨可以绕过导致的安全漏洞。 4、代码审计展开计划: 审计项目漏洞原理->审计思路->完整源码->应用框架->验证并利用漏洞。 代码审计两种方法: 功能点或关键字分析可能存在的漏洞 -抓包或搜索关键字找到代码出处及对应文件。 -追踪过滤或接收的数据函数,寻找触发此函数或代码的地方进行触发测试。 -常规或部分MVC模型源码可以采用关键字的搜索挖掘思路。 -框架 MVC 墨香源码一般会采用功能点分析抓包追踪挖掘思路。 1.搜索关键字找敏感函数 2.根据目标功能点判断可能存在的漏洞 常见漏洞关键字: SQL注入: select insert update mysql_query mysqli等 文件上传: $_FILES,type="file",上传,move_uploaded_file()等 XSS跨站: print print_r echo sprintf die var_dump var_export等 文件包含: include include_once require require_once等 代码执行: evalassert preg_replace call_user_func call_user_func_array等 命令执行: systemexec shell_exec ` ` passthru pcntl_exec popen proc_open等 变量覆盖: extract()parse_str() import_request_variables() $$ 等 反序列化: serialize()unserialize() __construct __destruct等 文件读取: fopen file_get_contents fread fgets fgetss file fpassthru parse_ini_file readfile等 文件删除: unlink()remove()等 文件下载: download() download_file()等 通用关键字: $_GET,$_POST,$_REQUEST,$_FILES,$_SERVER等 案例:审计-BossCMS1.0-未授权访问漏洞 1.CNVD发现漏洞基础信息,得知漏洞存在于Bosscms1.0版本 2.查看官方更新文档,得知在bosscms1.2版本修复了漏洞 3.下载好1.0和1.2版本,使用工具Beyond Compare进行对比 打开工具——选择文件夹对比——分别将源码拖入工具左右两边——点击差别显示差异——点开源码各个文件——两个文件中间显示不等于的就是有更改的地方 4.通过两个版本的代码差异成功找到漏洞产生位置 5.使用phpstorm打开源码,来到admin.classs.php漏洞产生位置。通关配合官方修复代码发现:检测代码只检测了用户是否登录后台,并没有在代码中停止未登录用户的未授权请求(如:修路工人(检测代码)告诉我不可以往前走(检测到我没有登录),但是只拦住了我的车(跳转到登录验证)并没有拦住我(没有停止我的请求),所以我还是可以继续往前走(代码继续执行),达到我的目标)。 6.知道了漏洞如何产生,就可以全局搜索看看都有哪些文件继承了admin类,这些继承了admin类的类都是存在未授权访问漏洞的。 7.在这些类中找到一个拥有删除方法的类。删除方法中的$file变量是由变量$id控制,而$id的值是由get方式传递由id接收的。因为方法中还有一个if判断:所以删除的时候还需要以post方式给url传递参数。 8.在网站根目录创建一个1.txt文件,退出管理员登录后访问删除方法的地址并且传递参数进行未授权删除。 创建文件: 退出登录: 访问地址传递参数进行删除: 执行的时候会跳转到登录验证 但是来到网站根目录下1.txt文件已经被删除了。成功在没有登录管理员账户的情况下执行了管理员才能进行的删除操作 |
|
来自: xiaoheizi安全 > 《待分类》