漏洞描述
系统命令执行是指应用程序对传入命令行的参数过滤不严导致恶意用户能控制最终执行的命令,进而入侵系统,导致严重破坏的高危漏洞。
漏洞危害
利用这个漏洞攻击者可以执行服务器上的命令。
修复建议
a) 严格检查程序参数,特别是 "&", "&&", "|", "||"。
b) 在代码中去除system等直接命令行执行函数或者禁止把外部传入参数传入到该类可执行函数的参数中。
修复实例参考
ASP漏洞代码示例
- <%
- Dim cmd
- Set cmd=Request.QueryString("cmd")
- response.write server.createobject("wscript.shell").exec("cmd.exe /c "&cmd).stdout.readall
- %>
ASP修复范例
- <%
- Dim cmd
- Set cmd=Request.QueryString("cmd")
- if cmd == "dir" then
- response.write server.createobject("wscript.shell").exec("cmd.exe /c "& "dir").stdout.readall
- end if
- %>
PHP漏洞代码示例
- <%php
- $myvar = "varname";
- $x = $_GET['arg'];
- // 默认通过url传入ls -al 进行执行
- system($x);
- %>
PHP修复范例
- <%php
- $myvar = "varname";
- $x = $_GET['arg'];
- // 默认通过url传入ls -al 进行执行
- if($x=='/bin/ls -al'){
- system('/bin/ls -al');
- }else{
- return;
- }
- %>