11.13命令执行和代码执行
Phpmyadmin任意文件包含漏洞[CVE-2014-8959]
漏洞范围:4.0.1-4.0.1.6 4.1.1-4.1.14.7 4.2.1-4.2.12
文件包含漏洞防御
1、修改php的配置文件,将open_basedir的值设置为可包含特定目录,后面要加/,例如:open_basedir=/var/www/html
2、关闭allow_url_fopen可以防止本地文件包含和远程文件包含
3、关闭allow_url_include可以防止远程文件包含
4、对可以包含的文件进行限制,可以使用白名单的方式,或者设置可以包含的目录,如open_basedir
5、进行严格的检查,参数中不允许出现../之类的目录跳转符号
命令执行和代码执行
命令执行漏洞产生原因:
1、参数用户可控
2、用户输入的数据被当做命令来执行,没有过滤或过滤不严谨
用作命令执行的函数:
shell_exec()
exec()
passthru()
popen()
proc_open()
命令执行:
简单分类:
Web层命令执行system(‘whoami’)等
第三方组件命令执行漏洞:Wordpress中用来处理图片的ImageMagick、struts2、ElasticsearchGroovy等
系统层面的命令执行(上面shell_exec()等等)
命令执行漏洞的危害性和当前web中间件的权限有关,如果web中间件是以管理员权限运行,则漏洞可以以管理员权限运行
代码执行:
当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能够控制这个字符串,将造成代码注入漏洞
Php中:eval、assert、preg_replace(‘/*/e’,’$ret=”\\1”;’,$data);
asp中:eval、execute、executeglobal
Jsp中:jsp中没有php的eval函数,但是可以使用反射机制,使用基于反射机制的表达式引擎,如OGNL、SpEL、MVEL等.
1、
2、urly Syntax 漏洞利用
关于{${}}这种形式涉及到了php Complex (curly) syntax。
<?php
$a=$_GET["id"];
@eval("@\$sql_a=$a;");
?>
之后http://127.0.0.1/test.php?id=${phpinfo()}