导致系统漏洞的原因包括程序逻辑结构设计不合理,不严谨、编程人员程序设计错误以及目前为止硬件无法解决特定的问题:
①.、编程人员在设计程序时,对程序逻辑结构设计不合理,不严谨,所以呢产生一处或者多处漏洞,正是由于这些漏洞,给病毒入侵用户电脑提供了入口.
扩展资料:
在不同类型的硬件和软件设备、相同设备的不同版本、不同的系统由不同的设备组成,以及同一系统在不同的设置下,都会存在不同的安全漏洞.
所以呢,随着时间的推移,旧的系统漏洞会消失,新的系统漏洞会继续出现.系统中的漏洞也依然存在.
首先和ASP一样,对敏感字符过滤不严会导致注入..
还有PHP很有特点,他得运行程序是很人性化得,如果设置不好,随便提交个有错得地址之类就会告诉你绝对路径之类得敏感信息.
PHP包含过滤不严会导致读取任意文件.
变量过滤不严会导致伪造数据欺骗服务器.
等等等等好多..我说得这些都是比较常见和常用得
①xss ◆ sql注入
其中占大头的自然是XSS与SQL注入,对于框架类型或者有公共文件的,建议在公共文件中统一做一次XSS和SQL注入的过滤.写个过滤函数,可由如下所示:
$_REQUEST = filter_xss($_REQUEST);
$_GET = filter_xss($_GET);
$_POST = filter_xss($_POST);
$_COOKIE = filter_xss($_COOKIE);
$_POST = filter_sql($_POST);
$_GET = filter_sql($_GET);
$_COOKIE = filter_sql($_COOKIE);
$_REQUEST = filter_sql($_REQUEST);
这里有一点需要说明,$_REQUEST虽然等于$_GET◆$_POST,但他们是独立的数组,也就是说假设改变了$_GET的值,但$_REQUEST的值还是原来的值,所以过滤时都不能落下,至于其他的如$_FILE之类的就可忽略了.
最简单的filter_xss函数是htmlspecialchars()
最简单的filter_sql函数是mysql_real_escape_string()
当然,谁都知道这种过滤filter_sql只能过滤字符型和搜索型的注入,对于数字型是没有办法的,但也说明做了这层过滤后,只需在后面注意数字型的SQL语句就可以了,遇到了加intval过滤就可以了,这就变得容易多了.
(1) php代码执行 :eval等
对于这几类需要注意其参数是否用户可控.
文件包含漏洞涉及的函数如include() 、include_once()、require()、require_once()、file_get_contents()等
权限绕过可分为两类吧
(1)后台文件的未授权访问.后台的文件没有包含对session的验证,就容易出现这样的问题
这样的例子是很常见的,给某银行做评估是就经常发现这种漏洞.
信息泄露算是比较低危的漏洞了,比如列目录这种就属于部署问题,而与代码审计无关了,而像暴路径、暴源码这种是需要防止的.曾经遇到这样的代码
php if(empty($_GET['a'])) {...} ?
表面上似乎没问题,可是当请求变为 xx.php?a[]=1时,即参数变为数组的时候,就会发生错误以致路径泄露,而用isset判断则不会,当然一个个防太麻烦,建议在配置文件中关闭错误提示,或者在公共文件中加入如下代码以关闭错误显示功能:
php error_reporting(0);?
假如你的 include 中包含 可变的参数,而且可悲外部修改,例如:
php
include("inc/".$_GET['file']);
这样的话,就会引发漏洞,用户可以构造任意参数来读取你的文件.
以下代码(Code)实现了根据浏览器地址栏参数的文件名称包含不同文件的功能.
复制代码
代码如下:
$file_name
=
$_GET["filename"];
//获得当前文件名
include("$file_name
");
//包含文件
//一些其他操作
这时,通过在地址栏上指定不同的文件名就可以实现包含不同文件并执行的功能.例如,通过在浏览器上访问就可以在代码(Code)中包含并执行myinc.php文件.
由于上面的代码(Code)没有进行任何错误处理,在浏览器上不加参数运行,所以将得到以下运行结果.
Warning:
include(.php)
[function.include]:
failed
to
open
stream:
No
such
file
or
directory
in
C:\Program
on
line
include()
Failed
opening
'.php'
for
inclusion
(include_path='.;C:\Program
Files\xampp\php\pear\')
echo
"hello
world!";
这时,通过在浏览器中访问就可以运行hello.txt中的脚本了.
为了解决这个问题,一种方式是完善代码的错误信息,使访问者无法知道当前脚本正在包含参数中指定的文件.修改后的代码(Code)如下所示.
if(!@include("$file_name.php"))
{
die("页面在浏览过程中出现错误");
}
修改后,如果在被包含的文件无法找到时将出现"页面在浏览过程中出现错误"的错误信息,访问者将无法获得当前页面的具体操作信息.
第二种方式可以更加有效地防止远程文件包含攻击.方式是替换地址栏参数中的斜线"/".这样,在地址栏参数中输入远程文件地址时,代码将无法正确地获得参数.修改后的代码(Code)如下所示.
str_replace('/',
'',
$_GET["filename"]);
这样,在浏览器中访问
主要是查上传漏洞.可以百度下,够学习一段时间的.
以上就是土嘎嘎小编为大家整理的php文件型包含漏洞总结相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!