命令执行漏洞(高危)—hack之路

命令执行漏洞

介绍命令执行漏洞

应用程序有时需要调用一些执行命令系统命令的函数,如在PHP中,使用system,exec,shell_exec,passthru,proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞

命令执行漏洞攻击

命令执行攻击的测试地址:http://localhost/vulnerabilities/exec/#
页面exec提供了ping功能,当输入ip127.0.0.1时,会执行ping命令,然后将ping的结果返回到页面上
命令执行漏洞(高危)---hack之路

而如果将参数设置为127.0.0.1 | dir,然后再次访问,从返回结果可以看到,程序直接将目录结构返回到页面上了,这里就利用了管道符”|”让系统执行的命令dir
命令执行漏洞(高危)---hack之路

下面展示了常用的管道符。Windows系列支持的管道符
Windows系列支持的管道符如下所示

  • “|”:直接执行后面的语句。例如:ping 127.0.0.1 | whoami
  • “||”:如果前面执行的语句执行错误,则执行后面的语句,前面的语句只能为假。例如:ping 2 || whomi
  • “&”:如果前面的语句为假则直接执行后面的语句,前面的可真可假

Linux系统支持的管道符如下所示。

  • “;”:执行完前面的语句再执行后面的。例如:ping 127.0.0.1 |;whoami。
  • “|”:显示后面语句的执行结果。例如:ping 127.0.0.1 |whoami
  • “||”:当前面的语句执行出错时,执行后面的语句。例如: ping 1||whoami

命令执行漏洞分析

服务端处理ping的代码如下所示,程序获取GET参数IP,然后拼接到system()函数中,利用system()函数执行ping的功能,但是此处并没有对参数进行过滤和检查,导致可利用管道符执行其他的系统命令

命令执行漏洞的修复建议

  • 尽量不要使用命令执行函数
  • 客户端提交的变量在进入执行命令函数前要做好过滤和检测
  • 在使用动态函数之前,确保使用的函数是指定的函数之一
  • 对PHP语言来说,不能完全控制的危险函数最好不要使用

网站地址:https://www.hackzl.cn;发布者:hack之路,转转请注明出处:https://www.hackzl.cn/index.php/2020/09/29/%e5%91%bd%e4%bb%a4%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e%e9%ab%98%e5%8d%b1-hack%e4%b9%8b%e8%b7%af/

发表评论

邮箱地址不会被公开。 必填项已用*标注