返回介绍

7.3 命令执行测试

发布于 2024-10-11 00:03:32 字数 1902 浏览 0 评论 0 收藏 0

7.3.1 测试原理和方法

在应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函

数。如 PHP 中的 system、exec、shell_exec 等,当用户可以控制命令执行函数中的参数时,

将可注入恶意系统命令到正常命令中,造成命令执行攻击。测试中如果没有对参数(如

cmd=、command、excute=等)进行过滤,就可以直接造成命令执行漏洞或配合绕过及命

令连接符(在操作系统中,“&、|、||、;”都可以作为命令连接符使用,用户通过浏览器

提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况

下就执行命令)等进行命令执行漏洞测试。

7.3.2 测试过程

攻击者发现疑似存在命令执行的漏洞链接,添加命令执行 payload,确认漏洞,如图 7-18 所示。

图 7-18 命令执行漏洞测试流程

以某网络安全审计系统为例,由于未对 register_key 参数进行过滤可能存在命令执行漏

洞,抓包并对其进行测试,构造命令执行语句并执行成功,证明此参数未经严格过滤造成

命令执行漏洞,如图 7-19 和图 7-20 所示。

图 7-19 抓包并进行测试

图 7-20 漏洞成功执行

再以自己搭建的网站 http://localhost/DVWA/为例。

在 dvwa 处提供了一个免费的 ping 命令,如图 7-21 所示。

图 7-21 ping 命令

步骤一:我们 ping 一下自己的主机并抓包,如图 7-22 所示。

步骤二:由于 ip 接收一个参数并执行 ping 命令,如果接收的参数没有过滤就可以

用“&、|、||、;”构造语句,进行命令执行漏洞测试,成功执行系统命令,如图 7-23 所

示。

图 7-22 抓取请求包

图 7-23 漏洞成功触发

7.3.3 修复建议

尽量少用执行命令的函数或者直接禁用,参数值尽量使用引号包括在使用动态函数之

前,确保使用的函数是指定的函数之一,在进入执行命令的函数/方法之前,对参数进行

过滤,对敏感字符进行转义。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文