告诉你如何从常见的PHP风险点挖掘PHP漏洞,以及PHP渗透测试中的黑盒和白盒。你和PHP高手只有本文的差距!一、PHP漏洞挖掘特点PHP具有可移植性好、易于部署、开发简单等特点,多用于中小型Web应用的开发。这导致PHP应用的价值大部分体现在整个站点框架/模板的开发上。程序员在设计网站时,总是会把功能实现和开发成本放在首位,而这些恰恰与安全性相矛盾。快速开发带来的后遗症是开发者在完全了解原网站的所有功能之前,将二次开发的网站发布到网上。许多开源模板已经开发了两次甚至三次,并以其他公司的名字命名。这种情况并不少见。2.PHP漏洞PHP开发的系统有很多独特的漏洞。这些漏洞往往隐藏在服务器端的代码逻辑中,通过黑匣子发现是极其困难的。传统的渗透测试几乎无能为力。所以我们需要更深入,看看盒子里发生了什么。3.PHP白盒审计一句话描述了我们要做的工作的起点和终点。被引用多次的图片。一些特殊的代码结构,当然还有“糟糕”的PHP功能。看过很多次的界面。三、如何进行漏洞挖掘-PHP常见风险点1、可操作参数名如果我们提交URL:key.php?=1&bbb=2,会导致xss漏洞。想象一下,如果将这个键值提交给诸如include()之类的函数或者sql查询呢。2、变量覆盖a)这个时候我们提交URL:var.php?a=bye那么***显示效果应该是怎样的呢?b)需要注意的是%3d。mb_parse_str()也会出现这个问题c)当register_globals开启时,请求var.php?GLOBALS[a]=aaaa&b=111,会有什么效果?d)当register_globals被禁用时,import_request_variables也可以起到全局变量赋值的作用。3.magic_quotes_gpcmagicquotesmagic_quotes_gpc在某种意义上其实并不是一个风险点,相反它实际上是一个PHP特有的安全设置。一般而言,懒惰的程序员经常将魔术引号视为一种包罗万象的过滤器,以掩盖他们代码中的缺陷。可惜那些无聊的白帽子总能找到绕过它的方法。4.以下几种情况可能会导致GPC被绕过1.$_SERVERgetenv()获取的变量$HTTP_RAW_POST_DATA和PHP输入输出流5.数据库操作很容易忘记用单引号来保护6.宽字节注入因此,最终被各种编码缠绕的很可能是程序员。可能出问题的编码如下:举个栗子——比如这段奇葩的代码...7。GPC//commit'//magicquoteprocessing\'//我们想要的字符的高级“用法”\8.eval/preg_replace命令执行命令执行无疑是PHP漏洞中最轰动的一类。一个简单的请求,一步搞定shell,是很多黑客的梦想……然而,对于程序员来说,犯这样的错误往往是一念之间。9、ThinkPHP的一键getshellpreg_replace的e修饰符会导致替换参数以PHP方式执行,因为"的作用,除法后的第二个子串(参数值)会作为PHP函数执行。http://www.11jia.net/index.php/module/action/param1/$%7B@phpinfo()%7D10。见命令执行函数11.其他PHP漏洞session_destroy()任意文件删除漏洞(php4<4.3php5<5.14):当我们提交结构体val.php?del=1(cookie:PHPSESSID=/../1.php),sess_/../1.php由于session_destroy的作用会被删除。12.特殊字符截断空字符截断——在“action=/etc/passwd%00”中提交“%00”会截断后面的“.php”13.当然也有一些梦游的程序员...4.黑盒与白盒的统一一、软件测试中的黑盒与白盒PHP渗透测试中的黑盒与白盒黑盒与白盒的典型两种思路二、平时学习中如何加强对PHP站点的web安全评估需要介绍的几点:5.学习资料http://www.php100.com/http://www.5idev.com/http://www.cnseay.com/http://www.w3school.com。cn/http://bbs.phpchina.com/http://www.php-security.org/http://bugs.php.net/http://sebug.ne??t/原文链接:http://blog.nsfocus.net/php-vulnerability-mining/【本文为专栏作者《NSFootball科技博客》原创稿件,转载请联系原作者获得授权】戳这里查看本作者更多好文章
