您的位置:首页 >> LNMPA >> php常见攻击方式
php常见攻击方式
[ 孤狼 | 2015-02-11 17:03:03 | LNMPA ]

       最近接触不少PHP web的安全防护的工作,所以对PHP安全防护处理有所接触,结合网络上各位大神的文献,整理了一片文章,用于以后的开发过程中使用。


       针对PHP的网站主要存在下面几种攻击方式:


       1、命令注入

       2、eval注入

       3、客户端脚本攻击

       4、跨网站脚本攻击

       5、SQL注入攻击

       6、跨网站请求伪造攻击

       7、Session 会话劫持

       8、Session 固定攻击

       9、HTTP响应拆分攻击

       10、文件上传漏洞

       11、目录穿越漏洞

       12、远程文件包含攻击

       13、动态函数注入攻击

       14、URL攻击

       15、表单提交欺骗攻击

       16、HTTP请求欺骗攻击


一、屏蔽自身系统的设置漏洞


       屏蔽自身系统的设置漏洞,那么就必须从php.ini说起。


        No.1:RegisterGlobals

       php>=4.2.0,php.ini的register_globals选项的默认值预设为Off,当 register_globals 的设定为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,而且由于PHP不必事先初始化变量的值,从而导致很大的安全隐患。


73001397459345.jpg


       上面那段代码中,如果我们在提交网址的时候写成 http://gl.paea.cn/login.php?is_admin=true 就可以成功跳过验证。

同样的,通过$_GET、$_POST、$_SESSION都存在这样的问题。所以这个选项需要关掉。


       No.2:safe_mode 安全模式

       安全模式是PHP用来限制文档的存取、限制环境变量的存取,控制外部程序的执行。启用安全模式必须设置php.ini中的safe_mode=On


       1、限制文件存取,不同的地址使用“:”来分割。


91161397459345.jpg


       2、限制环境变量的存取,指定PHP程序可以改变的环境变量的前缀 ,当这个选项的值为空时,php可以改变任何环境变量非常危险。所以默认为PHP_开头的环境变量。


88551397459345.jpg


       3、限制外部程序的执行

70851397459345.jpg

       此选项指定的文件夹路径影响system、exec、popen、passthru,不影响shell_exec和“``”。

27481397459345.jpg

       限制指定的函数运行,不同的函数名称用逗号隔开,此选项不受安全模式影响。


        No.3:magicquotes 魔术转换

20621397459345.jpg

       用来让php程序的输入信息自动转义,所有的单引号(“'”),双引号(“"”),反斜杠(“\”)和空字符(NULL),都自动被加上反斜杠进行转义

如提交的数据是“你好”则最后得到的结果是 \“你好\”这样可以有效的防止注入攻击。它会影响HTTP请求的数据GET、POST、Cookies同时也可以使用PHP的函数addslashes来转义提交的HTTP 请求数据,或者用stripslashes 来删除转义。


二、命令注入


       PHP可以使用system、exec、passthru、shell_exec、“(与shell_exec功能相同)系统函数来执行外部程序。所以一般情况下,他们是都要被禁用的,也不推荐直接使用函数调用外部程序,如果非要使用最好单独做接口避免对PHP文件攻击。攻击的方式基本和RegisterGlobals设置攻击一样,通过传入指定变量来配合程序的执行达到目的。如果你执行的是删除文件。就有可能被人修改$dir而删除系统。


注意点:

1、尽量不要执行外部命令

2、自己写函数来代替系统函数

3、如果非要使用系统命令就用escapeshellarg函数来处理命令参数

4、用safe_mode_exec_dir来控制可操作的目录


三、eval注入攻击


       这种攻击是最常见的攻击方式。上面说到开启魔术转换可以在一定基础上防护这种攻击,但是必要的防护措施还是需要单独设立的。


93431397459345.jpg


       上面的代码,如果我们在input框中间输入的是phpinfo()或直接传参访问,就会被被人找到漏洞。


注意点:

1、开启魔术转移

2、如果没法修改php.ini文件就使用php函数addslashes。

3、处理好变量赋值验证问题。


四、客户端脚本攻击


95261397459345.jpg


       这钟攻击最常见的就是在留言板这里。如果用户上传的是<script>alert("username");</script>

那么如果你没有处理,就有可能直接运行了。所以针对留言框,我们可以屏蔽指定的一些关键字并对用户的留言内容用htmlspecialchars函数处理。



注意点:

1、屏蔽关键字

2、使用htmlspecialchars来处理提交内容


五、跨网站脚本攻击


       跨网站脚本攻击也就是XSS攻击,主要攻击方式就是读取网站用户的cookies或者其他个人数据,并伪装成此用户来登录网站,获得此用户的权限。


注意点:

1、使用htmlspecialchars来处理提交内容

2、尽量使用POST提交信息。



六、SQL注入攻击

       SQL注入攻击也是一种非常常见的攻击方式,攻击者在表单中提交sql语句,使原本的sql语句发生变化,如果web程序没有对提交的数据经过检查,那么就会造成sql注入攻击。


49471397459345.jpg


       上面的代码中,如果用户提价提交的数据中含有 and、or 等sql关键字,则会执行。


注意点:

1、使用htmlspecialchars来处理提交内容

2、对于限制为数字的数据,如日期等使用intval,floatval或doubleval函数转换成整数或浮点数

3、字符型的数据实用addslashes来进行转义。

4、开启魔术转换。


七、跨网站请求伪造攻击


       跨网站请求伪造(CSRF或XSRF)。攻击者伪造目标用户的HTTP请求,然后把此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击。


       例如以下链接是具有操作性质的

       http://xxxxx/del.php?id=1

       但是如果你没有登录是执行不了的,在你登录的时候,修改你页面的链接或发给你让你自己点到这个链接上去。就会执行代码。对你造成损失。


注意点:

1、检查网页的来源

2、检查内置的隐藏变量

3、使用POST,不要使用GET

4、对一些危险性的操作执行提示信息确认


八、Session 会话劫持


       会话劫持是指攻击者利用各种手段来获取目标用户的session id。一旦获取到session id,那么攻击者可以利用目标用户的身份来登录网站,获取目标用户的操作权限。


注意点:

1、定期更改session id

2、更改session的名称

3、关闭透明化session id

4、只从cookie检查session id

5、使用URL传递隐藏参数


九、HTTP响应拆分攻击


       可能遭受HTTP请求响应拆分的函数包括以下几个:

       header(); setcookie(); session_id(); setrawcookie();

       HTTP响应拆分通常发生在:

       Location表头:将使用者的数据写入重定向的URL地址内

       Set-Cookie表头:将使用者的数据写入cookies内


注意点:

1、如果你的php版本低,那就请替换CRLF换行字符

2、使用最新版本的PHP


十、文件上传漏洞


       PHP程序中对于文件上传都是统一使用$_FILES数组变量来接收,文件名和文件在上传的过程中会分开,文件存到临时文件夹,名称存到一个变量里。如果米有判断文件的后缀名,则有可能被上传php或其他可执行文件,从而带来破坏。


注意点:

1、判断文件后缀名

2、存储的时候使用随机名称与文件名关联,不直接使用原有名称存储。


十一、目录穿越漏洞

       这个一般是FTP或PHP程序提供目录遍历的时候出现,如一些站点提供开源项目的文件在线遍历,如果没有限制住文件夹,则不断执行 cd ../就有可能到达根目录获取其他文件或破坏。


注意点:

1、限制目录或程序可访问目录



十二、远程文件包含攻击

       如果页面中包含远程文件,如A站点包含一个B站点文件,攻击者可以修改HOST让页面包含一个假的B站点,而使得A站程序出现混乱。


注意点:

1、最好外链文件的防护。

2、信息处理不在外链文件进行。


十三、动态函数注入攻击

十四、URL攻击

十五、表单提交欺骗攻击

十六、HTTP请求欺骗攻击


       最后的四种攻击方式在前面也出现过,大部分攻击方式基本如此,但是也不仅仅是这些,随着一些漏洞等被被人发现,攻击的方式也是不断的进化的。道高一尺魔高一丈,在利益的面前,黑客们还是跃跃欲试的。所以站长们还是要做好防护措施。


转载请注明出处:http://gl.paea.cn/lnmpa/content/2015/02/11/71.html