一、实验环境
操作机:kali2.0
目标机:Centos 6.0
Squirrelmail版本:1.4.22-4el6
二、漏洞原理
1、有一个可以登录的邮箱账号和密码
2、Squirrelmai的MAT(因特网邮件传送代理)需要配置Sendmail
3、Squirrelmail的edit_identity配置为true(默认配置)
该漏洞的触发点位于Squirrelmail源码中的Deliver_SendMail.class.php文件中,在initStream函数中,使用了escapeshellcmd()来过滤用户的信息,然后将处理后的字符串传入popen函数(打开一个指向进程的管道)。
但是由于escapeshellcmd()函数只对以下字符进行转义(在字符前面添加\):
三、复现过程
1、解压文件使用poc.sh验证漏洞是否存在
四、漏洞修复
触发漏洞文件以及函数位置
/usr/share/squirrelmail/class/deliver/
initStream函数
将此代码 用以下代码替换
附 POC