2014攻防系列教程之浅析命令注入攻击.docxVIP

2014攻防系列教程之浅析命令注入攻击.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Web攻防系列教程之浅析PHP命令注入攻击摘要:PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。本文描述了常见的PHP命令注入攻击漏洞存在形式和利用方法,结合漏洞实例进行分析和漏洞利用,并针对如何防范PHP命令注入攻击漏洞给出了可行的方法和建议。PHP命令注入攻击漏洞是PHP应用程序中常见的脚本漏洞之一,国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。本文描述了常见的PHP命令注入攻击漏洞存在形式和利用方法,结合漏洞实例进行分析和漏洞利用,并针对如何防范PHP命令注入攻击漏洞给出了可行的方法和建议。Command Injection,即命令注入攻击,是指由于Web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至Web应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。命令注入攻击最初被称为Shell命令注入攻击,是由挪威一名程序员在1997年意外发现的,他通过构造命令字符串的方式从一个网站删除网页,就像从硬盘中删除一个文件一样简单。下面我们结合PHP语言的特性,对PHP命令注入攻击进行简要的分析和描述。PHP命令注入攻击PHP命令注入攻击存在的主要原因是Web应用程序员在应用PHP语言中一些具有命令执行功能的函数时,对用户提交的数据内容没有进行严格的过滤就带入函数中执行而造成的。例如,当黑客提交的数据内容为向网站目录写入PHP文件时,就可以通过该命令注入攻击漏洞写入一个PHP后门文件,进而实施进一步的渗透攻击。命令执行函数利用在PHP中,可以实现执行外部程序或函数的命令执行函数包括以下5个函数。1.?System:system函数可以用来执行一个外部的应用程序并将相应的执行结果输出,函数原型如下:string system(string command, int return_var)其中,command是要执行的命令,return_var存放执行命令的执行后的状态值。按照PHP程序员的想法,命令执行函数的主要作用是可以通过命令执行函数与Web应用程序进行交互,通过Web应用程序执行外部程序或系统命令,如Web应用程序员想通过system函数获取指定目录的文件内容,那么他可以通过构造如下代码实现。?$dir = $_GET[dir];if(isset($dir)){?echo pre;system(ls -al.$dir);echo /pre;} ?Web应用程序员可以通过提交不同的dir内容来获取不同目录下的文件信息,但是黑客可以通过使用下列URL来进行命令注入攻击:file.php?dir=|cat /etc/passwd结果system函数执行的命令就变成如下内容:System(“ls –al|cat /etc/passwd”);这个命令就会将/etc/passwd文件中的内容反馈给黑客。同样,构造PHP代码如下:?$cmd = $_GET[cmd];echo pre;system($cmd);echo /pre;?在浏览器中访问这个PHP文件,并提交cmd的内容为“net start”,黑客目的是通过命令注入攻击查看Web服务器主机都开启了哪些服务,访问执行后返回的结果如下图1所示:图12.?Exec:exec函数可以用来执行一个外部的应用程序,函数原型如下:string exec (string command, array output, int return_var)其中,command是要执行的命令,output是获得执行命令输出的每一行字符串,return_var存放执行命令后的状态值。可以通过构造如下PHP代码进行测试:?$cmd = $_GET[cmd];$output = array();echo pre;exec($cmd,$output);echo /pre;while(list($key,$value)=each($output)){echo $value.br;}?3.?Passthru:passthru函数可以用来执行一个UNIX系统命令并显示原始的输出,当UNIX系统命令的输出是二进制的数据,并且需要直接返回值给浏览器时,需要使用passthru函数来替代system与exec函数。Passthru函数原型如下:void passthru (string command, int return_var)其中,command是要执行的命令,return_var存放执行命令后的状态值。可以通过构造如下PHP代码进行测试:?$cmd = $_GET[cmd];echo pre;passthru($cmd

文档评论(0)

mPfLSltjAw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档