命令执行漏洞
Windows下的管道符:
|
: 直接执行后面的语句
||
:如果前面的语句执行出错,则执行后面的语句,前面的语句只能为假
&
:如果前面的语句为假,则执行后面的语句,前面的语句可真可假
&&
:前面的语句为假直接出错
Linux下的管道符:
;
:执行完前面的语句再执行后面的
|
:显示后面语句的执行结果
||
:当前语句执行出错,直接执行后面的语句
&
,&&
同windows
PHP命令执行
PHP提供了部分函数用来执行外部应用程序,例如:system()、shell_exec()、exec()、passthru()
-
命令执行
cmd.php:
<?php $host = &argv[1]; system("ping ".$host); ?>
payload: php.exe cmd.php "|net user"
-
代码执行
cmd.php:
<?php eval($_REQUEST['code']) ?>
payload:
http://www.xsser.com/cmd.php?code=phpinfo();
-
动态函数
PHP解析器可以根据&fun的值来调用响应的函数
cmd.php:
<?php $fun = $_GET['fun']; $fun(); ?>
payload:
http://www.xsser.com/cmd.php?fun=phpinfo
PHP解析器会调用phpinfo()函数并显示在页面上
有的程序员还会给函数传递参数:
cmd.php:
<?php $fun = $_GET['fun']; $par = $_GET['par']; $fun($par); ?>
payload:
http://www.xsser.com/cmd.php?fun=system&par=net user
最终执行的函数为system(“net user”)
-
PHP函数代码执行漏洞
在PHP中,像preg_replace、ob_start()、array_map()等函数都存在代码执行的问题,以array_map()为例:
<?php $arr = $_GET['arr']; $array = array(1,2,3,4,5); $new_array = array_map($arr,$array); ?>
payload:
http://www.xsser.com/cmd.php?arr=phpinfo
其他函数代码执行漏洞:(160条消息) PHP中常见的命令执行函数与代码执行函数_红烧兔纸的博客-CSDN博客_php代码执行函数有哪些
Java命令执行
Java体系非常庞大,其纵横包括Java SE、Java EE、Java ME,无论分支还是框架,都是以Java SE为基础的
Java EE之前被称为J2EE,它是在Java SE的基础上构建的,它提供Web服务、组件、模型、管理和通信API
在Java SE中,存在Runtime类,在该类中提供了exec方法用来在单独的进程中执行指定的字符串命令。
模型代码如下:
框架执行漏洞
-
Struts2(Java三大框架之一)代码执行漏洞
-
ThinkPHP命令执行漏洞
命令执行漏洞的防范
- 尽量不要使用系统执行命令
- 在进入执行命令函数/方法之前,变量一定要做好过滤,对敏感字符进行转义;
- 在使用动态函数之前,确保使用的函数是指定的函数之一;
- 对PHP语言来说,不能控制的危险函数最好不要使用