【技术分享】某防火墙远程命令执行

阅读量239669

|

发布时间 : 2017-11-17 11:23:02

http://p7.qhimg.com/t0160507ecdbe007386.jpg

作者:chu@0kee

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

后门账号

防火墙的管理服务默认运行在 22、23 端口,需登录才能使用,默认的管理员用户密码为████。除此之外,系统中还存在另一个用户,此用户在官方文档中并未提及,或者可以称为后门账号?


dumpsh 命令注入

漏洞原理

dump 用户登录后的 console 为 dumpsh,该程序内对关键字做了较完善的黑名单+白名单过滤。

如图,程序中过滤了大量字符以避免命令注入:

http://p6.qhimg.com/t017f0385eac554eda4.png

具体实现为:

http://p8.qhimg.com/t01b4f29af60148b170.png

被过滤的字符为:;<>|`&~!@#$%^*()/'

并且限制了命令必须为 arpclosscputcpdump 等其中之一:

http://p9.qhimg.com/t018954c1b09e3f3a8e.png

若命令为 tcpdump 则进入到 parse_tcpdump 函数,其中又过滤了 -w、-f、-F 参数:

http://p8.qhimg.com/t01787fd33b8aa4c8cf.png

最后调用 system 执行命令:

http://p0.qhimg.com/t0178a06ffcf7de7a70.png

绕过字符过滤

可以看到用户的输入被带入到 system 函数中,但程序做了较严格的过滤导致无法注入特殊字符。这里的绕过用到了一个 tcpdump 命令的 tip,-z 参数:

http://p1.qhimg.com/t012e044d3727d30bde.png

通过 -z 参数可以执行一个 binary 文件,测试如下:

http://p5.qhimg.com/t01b44dddf52f556d62.png

但问题是这个执行的命令不能自定义参数,只提供了 file 即保存的文件名一个参数,也就是说实际上执行的命令是 cowsay /tmp/1。那如何利用这个参数去执行自定义的命令呢?我想到的一个办法是「执行可以执行命令的程序」

说起来比较绕,举个栗子:vi、ftp 等,以 vi 为例,执行如下命令:

tcpdump -n -i eth0 -G1 wrfile -z vi

然后在 vi 中执行命令或读写文件:

读写文件:

e /etc/passwd

http://p2.qhimg.com/t015b7e38fe2eedd87b.png

执行命令:!ls

http://p8.qhimg.com/t0106c744ea6f293639.png

本文由0keeTeam原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/87260

安全客 - 有思想的安全新媒体

分享到:微信
+10赞
收藏
0keeTeam
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66