web代码审计与渗透测试.pptVIP

  • 11
  • 0
  • 约3.56千字
  • 约 38页
  • 2019-12-03 发布于浙江
  • 举报
审计与渗透测试 应用程序代码审计 程序的两大根本:变量与函数 漏洞现成的条件: 、可以控制的变量 【一切输入都是有害的 】 、变量到达有利用价值的函数[危险函数] 【一切进入函数的变量是有害的】 漏洞的利用效果取决于最终函数的功能 变量进入什么样的函数就导致什么要的效果 像 偶只知道这些了; 应用程序代码审计 为什么只是? 、跨平台、应用广泛、复杂 、变量处理灵活[如变量覆盖、全局变量等] 、代码审计的思路是可以通用的 、函数库巨大 [导致漏洞类型多,既有通用的又有特有的] 其实我还是没有理解什么是代码审计呀 变量 预定义变量[常规外部提交的变量] $ $等 [未初始化的变量] ? 默认为 变量覆盖[未初始化及覆盖前定义的变量] 如:() 、遍历初始化变量、()等 变量的传递与存储[中转的变量] 存储于数据库、文件[如配置、缓存文件等] 作为自学里初学者的我,果然看不懂这是什么变量 危险函数 文件系统操作?文件(目录)读写等漏洞 数据库操作?注射漏洞 数据显示 ?等客服端漏洞 文件包含?包含漏洞 代码执行?执行任意代码漏洞 命令执行?执行任意命令漏洞 …… 什么样的函数导致什么样的漏洞! 更多的变量处理与危险函数 《高级应用程序漏洞审核技术》 代码审计的本质 找漏洞找对应变量与函数 变量跟踪的过程 通过函数找变量[逆向跟踪变量] 函数($)? $$?…? $$[‘’] 通过变量找函数[正向跟踪变量] $$[‘’]?$$?…?函数($) 变量的传递与二次漏洞 中间函数处理的过程诞生新的变量,新的变量达到新的漏洞函数?诞生新的漏洞[二次漏洞] 变量存储、提取、传递是一个复杂的立体的过程 过程中经过多个不一样的函数的处理后继续传递,最终达到漏洞函数 传递的过程中任意环节可控就可能导致漏洞 二次漏洞 什么是二次漏洞? 年提出的一个概念 主导思想:通过一个现有漏洞,创造新的漏洞使得漏洞利用最大化 一个 ($[‘’]); ? 一个典型的文件删除漏洞 [注意:与的区别] 二次漏洞 又一个 然而: ($[‘’]); 一个貌似不可以直接控制的新变量$[‘’]进入了危险函数() ,’’ 当然我们没有那个注射漏洞,只要我们对数据库有控制权限一样可以通过、控制$[‘’]。 一个注射漏洞 $ $[‘’]”; $ ($, $); $($); 一个实例: [ ]远程包含漏洞 覆盖$[“”],经过()判断后进入() (($[]) ($[])) { .$[]..\; $[]; \\\\ (() () ) { ...... 经典的变量覆盖漏洞模式 ($ $ $) { $$ $; } } ...... 但是()是不支持远程文件的,所以到目前代码只是一个本地包含漏洞 单独看上面的代码是没有办法提交$变量的!但是我们结合\\\\里的变量覆盖漏洞,我们就可以提交$变量了,那么我们就可以控制$[“”] 实现远程包含 : [][][] 实现了一次完美的又本地包含转为远程包含的二次漏洞利用过程 ? \\\\\\\\ ...... (($[])) $[] $[]( ). []; ...... (); $[] . ; 又一个实例: ![ ]远程代码执行漏洞 效果图:【实现“给我一个注射点,我给你一个”的目标】 注射得到中…. 利用得到[代码执行] 得到的关键在于论坛的借口里:里()对配置文件有读写操作 继续跟下()的调用: $[]的处理: 通过$ (“\(‘’,\*‘.*?’\)”, “(‘’, ‘$’);”, $); 闭合(‘’, 来注射我们的代码 整过只要得到了就可以通过调用()对写操作了! 另外()的个参数都没有魔术引号的处理: $ ($); $ ((‘’));[数据流不受魔术引号限制] 二次漏洞的启示 漏洞的类型是可以转换的:最终的目的是攻击效果最大化! 如对于,去寻找可以找到的途径:注射、文件读取[里存有]、控制的管理权限[]等等 一切进入函数的变量是有害的:变量在传递过程任意个环节可控就可能导致漏洞! 变量传递的途径是多样的:我们的攻击思路多元化! 其他的因素与代码审计 版本与代码审计[变量与函数] 包括: [主要是文件操作] 服务器: [主要文件解析类型] 《系统特性与安全 》 默认设置问题 本身函数的漏洞[缺少自动升级的机制] 系统特性与代码审计 数据库类

文档评论(0)

1亿VIP精品文档

相关文档