PROP——PHP 网络应用程序的保护外文翻译资料
2022-11-25 14:59:48
英语原文共 15 页,剩余内容已隐藏,支付完成后下载完整资料
国际计算机科学与信息技术杂志(IJCSIT)7卷,2号,四月2015
PROP——PHP 网络应用程序的保护
Sireesha C,Jyostna G,Raghu Varan P 和 P R L Eswari
先进计算机发展中心,海德拉巴,印度
摘要
PHP是一种开发网站的最常用的语言,因为它简单,容易学习,它可以很容易地嵌入任何数据库。一位具有基础知识的网络开发者开发一个应用程序,而不使用职业安全指引,用户输入不恰当的验证导致各种源代码漏洞。在应用程序设计、实施和主持的逻辑上的缺陷导致工作流程偏差攻击。在本文中,我们通过静态和动态分析方法分析了一个完整的网络应用行为。
关键字
身份验证和授权旁路,跨站点脚本,会话劫持,代码注入,命令注入。
1.介绍
互联网和网络使全世界都在一起。同时现在正在使用网络大力提供公民服务,包括银行和管理服务。然而,这些先进的互联网技术正被利用来造成不利影响。网络应用程序的漏洞被用作媒介来发动各种攻击。据赛门铁克调查报告-2013[1],小企业和组织正在被攻击者作为目标。流行的网络应用威胁根据OWASP[2]包括SQL注入,跨站脚本(XSS)[4],认证和授权旁路[5][6] ,会话劫持[7],跨站点请求伪造(CSRF)[8]。其中最流行的威胁是SQL注入,它在网络应用中的目标后台数据库。攻击者利用妥协的网络应用程序和获得未经授权的访问数据库。[9]显示前十名发生在特定的应用程序或组织的技术冲击和业务所产生的影响的攻击中的危险因素。
XSS攻击是通过用户提供的数据注入了恶意代码。通常这种攻击是通过java脚本代码,攻击者对用户输入的字段提供恶意网站的链接,其内部电话或重定向到攻击者提供的网页链接。CSRF是另一个攻击者插入恶意链接的形式或引诱用户点击这些链接导致恶意活动的合法网站的论坛的危险攻击。
另一个攻击是“会话劫持”,攻击者更侧重于在会话实现中寻找弱点。通过使用会话固定,预测和捕捉方法攻击者获取误用的会话信息。会话固定[10]发生在当一个攻击者能够使用他所选择的预定义的会话标识欺骗用户。通常会话标识是作为网址参数以及与客户端的页信息。如果Web服务器在不需要再生的情况下,将与来自客户端的预定义会话标识填充会话细节一个新的会话标识会有攻击的可能性。另一种可能的攻击是序列旁路攻击,攻击者可以使用相同的权限访问未经授权的网页或强制浏览。
除了上面,代码注入和命令执行是其他流行的攻击。在代码注入攻击中,恶意代码被添加作为应用程序本身的一部分,它得到在访问应用程序时执行。壳牌代码属于这一类。在命令执行攻击中,攻击者注入和执行命令通过脆弱的应用程序。
配置文件设置也被用来发动攻击。例如,PHP[11][12]],如果register_global是“打开”配置文件会自动将数据从超级全局数组($_GET, $_POST, $_SERVER, $_COOKIE, $_REQUEST 和 $_FILE),分配他们给全局变量,意味着 $_POST[password] 将会自动分配给全局变量$password。这些全局变量的细节被攻击者使用,以获得未经授权的应用程序访问。所有这些攻击都是由妥协的任一网络应用程序或利用配置文件的配置细节造成的。为了防止这些攻击,各种研究工作在开发浏览器端,以及网络应用程序的安全性解决方案被进行。通过本文,我们代表PROP--PHP Web应用程序的保护,分析和检测源代码的漏洞,并防止运行时执行攻击。该安全方案的实施和测试基于PHP的Web应用程序和结果是有前途的。
- 现有的解决方案
为了检测和防止网络应用程序的攻击,源代码以及运行时分析方法[13][14][15]。现有的解决方案,pixy[16],rips[17],MIMOSA[18]和IBM Rational AppScan[19]需要Web应用程序的脚本代码以检测代码漏洞。Swaddler[20]是一个解决方案,其中漏洞被检测在基于会话的值在PHP解释器在运行Web应用程序的状态水平。另一个解决方案Acunetix网络漏洞扫描器[21],审核Web应用程序通过检查利用黑客漏洞通过静态分析。Nemesis[22]方法定位与程序员提供的在文件和数据库条目的访问控制规则的认证和授权旁路攻击。为了提供网络应用程序级别的安全另一个可能的解决方案是使用Web应用防火墙(WAF)[23]。但是WAFS是由白色列表规则设计的。应用防火墙设置的规则,描述了应用程序的行为。但这些防火墙未能防止会话劫持;特权升级和在网络应用程序中逻辑上存在的缺陷,由于无法在白色列表中缺陷代码和会话维护的规则。
在本文中我们提出了PROP来检测源代码中的漏洞,如XSS,SQL注入,代码注入,命令注入,文件包含和文件操作攻击,防止工作流量偏差像SQL注入攻击;认证和授权旁路通过会话窃取和在运行时执行的序列旁路攻击。解决方案不干扰应用程序数据库,无需打开任何外部端口。
- 方法
PROP包括静态分析器和动态分析器,它分别遵循源代码分析和运行时分析技术。图1显示了PROP的工作功能。静态分析器分析PHP Web应用程序的源代码和检测源代码漏洞。它维护的漏洞清单包括识别php易受攻击的功能列表和被利用的源的漏洞,如用户输入,文件和数据库访问方法。分析从标记源代码开始,解析和识别漏洞攻击提供的易受攻击的功能检查表。它产生一个关于确定的漏洞的报告,报告中包括信息,如扫描多少文件,检测到的漏洞列表和总扫描时间。检测到的漏洞列表包含该漏洞的文件名和行数。这也保存了PDF格式下漏洞报告进一步分析。
图1:PROP
PROP的动态分析仪通过捕捉网络通信分析运行时间执行流程。它捕获网络请求和响应消息以及会话标志。这些细节都收集到创建一个行为模型的网络应用程序,并存储在服务器数据库。模型中的会话标志表示存在/不存在的会话。这种行为模型以及详细信息,如用户代理和客户端的地址在运行时实施来检测工作流程的偏差攻击。图2显示动态分析仪的功能。
PROP动态分析仪分两个阶段进行:训练阶段和运行时执行阶段。在训练阶段,PROP在攻击自由环境下监控网络应用程序的行为。它利用搜索技术[24]缓慢爬行到内部每一个网页,并通过覆盖网络应用的完整行为生成配置文件,构建模型。在运行时执行阶段,连同网络请求,用户代理和客户端的地址被监测,并对工作流程的偏差进行了检测。检测到的偏差被报告来进行进一步的分析。
图2:动态分析器的功能
4.设计布局
4.1静态分析器
PROP静态分析器执行两种类型的分析:PHP源代码分析和PHP配置文件分析。PHP配置文件分析读取php的配置文件(php.ini) ,检查配置设置和显示错误配置设置的当前值和推荐值。
图3:功能的PHP源代码分析器
PHP源代码分析器分析源代码,它首先确定并列出在本地的PHP脚本中易受攻击从而导致跨站脚本、SQL注入功能,命令注入,代码注入,文件包含和文件操作的安全漏洞的功能,并列出安全功能来防止这些漏洞被开发。
对PHP源码,PHP脚本被标记分离。这些标记用于进一步的分析。在一个数组中,每一个标记都代表一个标记标识符,行数和标记值。这些标记被分析来反对已配置的易受攻击的功能列表,同时,它创建了一个依赖堆栈、一个文件栈、声明变量列表和几个寄存器来指示它现在是否正在扫描一个功能,还是类。如果有任何易受攻击的功能被检测,它通过回溯创建了一个新的父类并检查该功能的参数。如果任何易受攻击的参数,发现它作为一个子类被添加了,节点的细节将被发送来报告。图3显示PHP源代码分析器的功能。相同程序被重复为了所有的标记。最后,它显示检测到的漏洞,可以保存为PDF格式。图4显示源代码分析器的PDF报告。
图4:样本PDF报告
4.2动态分析仪
培训阶段和运行时执行阶段的工作功能如下。
4.2.1培训阶段
图5显示了在训练阶段使用分析器引擎的PROP动态分析器的功能 和模型生成模块。探查引擎捕捉到不同角色的网络通信。对于每一个角色,探查引擎收集请求头信息形式的网络请求,记录,然后传递给网络服务器。服务器的响应被转发到网络客户端。随着请求和响应信息,探查引擎也记录关于当前和以前的网络请求状态的网络请求序列。
图5:在训练阶段的PROP动态分析器
对于每个网络请求,一个单独的通信标识被创建来区分来自网络客户的请求。并在文件中以“communicationid_request”的名字保存相应的请求头信息。它也从头部提取的cookie标识,以检查会话的存在。请求的会话标志被保存在名称为“communication id_srequest”文件。而且每个角色用户的页面抓取序列被保存在“roleid.xml”文件。例如,请求通信标识为1,相应的头信息被保存在1_request,会话标志保存在1_srequestfile。
在记录请求信息后,它将请求转发到网络服务器处理。网络服务器的响应被收集并转发到客户端。
分析器引擎内部搜索每一个网页,并收集请求和响应信息。搜索包括内部的所有网页,以加强应用的模型。同样的过程被重复为了网络应用程序的所有角色。
模型生成器是离线模式下工作的训练阶段的另一个模块。它分析了基于通信标识和角色来记录的配置文件,建立了一个特定的网络应用程序行为的关系模型库。它首先读取“communicationid_request”文件,
根据调用的方法和被请求资源名称创建一个请求标识。如果被要求的URL是http://example.com/login.php使用GET方法,请求ID成为get_login.php。从相应的“communicationid_srequest”文件读取会话标志。基于配置文件记录它创建两种不同类型的模型数据库。
模型set1代表了MySQL数据库表和每一行包括通信ID,请求ID,会议标志和角色。图6显示模式set1。
图6:MySQL表和请求,会议标志和角色
模型set2是指每个角色包括网页序列访问的网页的列表。为每个角色创建单独的XML文件。在XML文件中除了一个根元素以外的其他标记代表一页和可访问页的列表。图7显示两个不同角色的两个不同的XML顺序文件。
从图7中,role1用户可以从home.php访问analysis.php,report.php,view.php和search.php页面。对于role2,可以从home.php访问management.php,report.php,view.php和search.php。
图7:对role1和role2访问的页面序列实例
4.2.2.运行时执行阶段
在执行阶段,模型被执行来不断地处理网络请求和网络回应。它有执行引擎和匹配引擎。图6显示PROP
动态分析器在运行时执行阶段的运行。
图8:PROP动态分析器在运行时执行阶段的运行
执行引擎(EE)在碰上Web服务器前直接捕获Web请求。捕获的请求头信息发送到验证引擎。验证引擎(VE)检查给定请求对照模型集,并发送验证状态到执行引擎。如果请求是一个应用程序真正的行为,然后状态表示为“dont_block”否则,如果出现任何偏差的模型集,然后表示状态为“block”并以导流为基础记录一个错误。根据验证状态执行引擎进一步的处理。如果状态是“dont_block”执行引擎转发到网络服务器应用程序,否则不会发送请求到网络服务器应用程序和内部关于导流的网络客户端。
验证引擎首先对照模型Set1验证网络请求的信息,这有助于通过更改网页用户输入或通过劫持会话寻找通常发生在任何易受攻击的网络应用中的认证旁路攻击。一旦满足了模型Set1行为的价值,就应该进入下一级验证到模型Set2,否则验证引擎将“block”状态发给执行引擎来停止网络通信。
一旦完成了授权,授权检查和序列关于模型Set2被验证。此验证定位了垂直权限升级攻击,其中一个角色用户正在尝试访问其他角色的网页,并定位序列旁路攻击,其中攻击者不跟随序列并强制访问网页。
一旦请求满足2级验证,只有验证引擎发送“dont_block”状态到执行引擎,从那里请求被发送到网络服务器。在任何验证水平的过程中的失败,导致验证引擎发送“block”状态到执行引擎并记录错误日志。执行引擎拒绝该请求并发送错误页面给用户。所有的请求遵循相同的过程。
5.实施细则
5.1静态分析器
PROP静态分析器被部分集成的开源代码实现,分析工具Pixy,RIPS和phpsecinfo。它的目标是基于PHP的网络应用程序的PHP配置,XSS、SQL注入、文件操作,文件包含,命令注入和代码注入的相关漏洞。此外,它对用户输入,文件和数据库相关功能检查这些漏洞。在完成对网络应用程序的扫描后,它会形成一个完成的PDF格式
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[29926],资料为PDF文档或Word文档,PDF文档可免费转换为Word