让命令执行漏洞无所遁形:详解其利用方式和危害因素

数据来源

00 简介

        命令执行漏洞指的是攻击者能够通过某种方式将恶意代码注入到应用程序或系统中,从而实现在受攻击的主机上执行任意命令的攻击。这种漏洞常见于Web应用程序和操作系统中。为避免此类漏洞的产生,建议开发人员在编写代码时进行输入校验和过滤,对用户输入的数据进行严格限制、过滤和验证,不信任来自用户端以及其他非受信任来源的输入,并且限制使用不可靠的外部命令。同时,在运行服务的服务器上,应该加强安全策略,限制进程的权限并且定期更新补丁,以避免已知的漏洞被攻击利用。

01 命令执行漏洞 

命令执行漏洞- 例子1(无防御

 让命令执行漏洞无所遁形:详解其利用方式和危害因素_第1张图片

示例:(我这里使用dvwa靶场做演示)

解决靶场响应结果的中文乱码 

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第2张图片

charset=utf-8,修改为charset=gb2312 

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第3张图片

把安全等级调到:low(最低级)

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第4张图片

选择命令注入 

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第5张图片

可以查看源码

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第6张图片

没有做任何防御 

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第7张图片

        靶场这里的网页命令使用的是ping,但是我们可以通过连接符在操作系统中连续执行命令, & 、&& 、| 、 || 都可以作为命令连接符使用,此漏洞可以注入命令开启后门。

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第8张图片

如:127.0.0.1&&ipconfig             (ipconfig是查看主机的ip信息,如果要执行其他DOS命令:DOS 命令)

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第9张图片

命令执行漏洞- 例子2 

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第10张图片

把靶场的安全等级调到:Medium

        从DVWA的medium级别源码可以看到,对参数进行了一些简单的过滤,此时可以通过&|或者根据过滤的字符进行组合等绕过防御。

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第11张图片

 此时继续使用&&进行拼接是会报错的

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第12张图片

 以通过&|或者根据过滤的字符进行组合等绕过防御

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第13张图片

命令执行漏洞- 例子3

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第14张图片

把靶场的安全等级调到:High

源码:

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第15张图片

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第16张图片

命令执行漏洞- 例子4

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第17张图片

 把靶场的安全等级调到:Impossible(最高级,号称不可能有漏洞)

 源码:


{$cmd}
"; } else { // 行动 让用户名出错 echo '
ERROR: You have entered an invalid IP.
'; } } // 生成反CSRF令牌 generateSessionToken(); ?>

02 php命令执行

php命令执行反弹 shell

 让命令执行漏洞无所遁形:详解其利用方式和危害因素_第18张图片

php命令执行写 shell 

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第19张图片

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第20张图片让命令执行漏洞无所遁形:详解其利用方式和危害因素_第21张图片

// echo 需要添加的字符串 >>[路径\]文件名.扩展名
// >> 追加  > 覆盖  文件不存在就创建
127.0.0.1|echo "" >D:/1.php

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第22张图片

让命令执行漏洞无所遁形:详解其利用方式和危害因素_第23张图片

03 命令执行漏洞防护

为了防范命令执行漏洞,可以采用以下措施:

  1. 实施输入验证与过滤: 在输入参数时,实现对非预期字符的规避处理,验证来自客户端的输入是否包含恶意代码或特殊字符,限制输入参数的长度和格式等。

  2. 防止命令注入攻击:使用安全的API或Web框架,例如OWASP ESAPI,使用预编译语句,禁止使用字符串拼接来构建可能存在风险的命令,如sql、shell、ldap等语句。对所有外部输入都要进行严格地过滤、验证以及转义。

  3. 最小化依赖: 避免使用不必要的功能或库,在实现功能时尽量减少使用第三方模块、组件和插件。

  4. 加强访问控制:在应用程序中实施源IP地址、角色、会话ID等身份验证和访问控制机制,限制某些用户只访问本应用程序所必需的资源。

  5. 加强日志监控: 增加安全日志记录机制和审计轨迹跟踪功能,在应用程序中捕获异常请求和潜在威胁事件,并进行及时的告警与响应。

  6. 定期更新维护: 及时在应用程序或系统中安装最新的操作系统、补丁和软件更新,保持系统处于最新、最安全的状态。

以上是一些常见的命令执行漏洞防护措施。但应注意,在实际开发过程中需要根据具体情况采取不同的针对性措施,并建议在项目代码审查、安全测试和评审阶段进行全面的安全检测与验证。

你可能感兴趣的:(网络安全,安全,web安全)