2017-04-25
by klion
0x01 环境简介
关于 SquirrelMail 就不用多说了吧[一套开源php 邮件程序][说实话,用这套程序的目标还是蛮多的,尼玛,不说了,都是泪……],在重现漏洞利用之前,我们需要先把邮件服务器简单搭起来,这里以centos 6.8 x86 为例 [为了避免安装过程出问题,iptables和selinux已事先全部关闭],大致的配置过程如下,下面是具体测试环境:
1 2 3
| kali 2017: 执行SquirrelMail_RCE_exploit.sh 利用脚本 centos 6.8 x86: 完全模拟真实的生产环境,lamp全程源码包编译配置[后期会把各种配置细节更新上来] SquirrelMail版本 1.4.20
|
0x02 安装前的一点准备工作:
1 2
| # rpm -qa sendmail 检查当前系统有没有装sendmail # rpm -e sendmail 如果装了,就暂时先把它卸载掉
|
1 2
| # vi /etc/hosts 修改本机host,添加下面的指向 192.168.3.30 admin.rootkit.org server
|
1 2
| # vi /etc/sysconfig/network 修改当前系统的机器名 HOSTNAME=admin.rootkit.org
|
1 2
| # shutdown -r now # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 安装epel源
|
0x03 安装,配置,测试Postfix [一款经典的smtp服务器,默认端口25]:
1 2 3 4 5 6 7 8 9 10
| # yum install postfix -y # vi /etc/postfix/main.cf myhostname = admin.rootkit.org mydomain = rootkit.org myorigin = $mydomain inet_interfaces = all inet_protocols = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 192.168.3.0/24, 127.0.0.0/8 home_mailbox = Maildir/
|
1 2 3 4
| # /etc/init.d/postfix start # /etc/init.d/postfix status # netstat -tulnp | grep "25" # chkconfig --level 2345 postfix on
|
1 2 3
| # useradd admin # echo "admin" | passwd --stdin admin # yum install telnet -y 可能没有,顺便装下即可
|
1 2 3 4 5 6 7 8
| # telnet localhost smtp ehlo localhost mail from:<admin> 发件人 rcpt to:<admin> 收件人 data welcome to klion's mail server . 表示写信结束 quit 退出后会自动发送邮件
|
1 2 3
| 查看收到的邮件内容 # ls /home/admin/Maildir/new/ # cat /home/admin/Maildir/new/1497007106.V802I1600f7M865561.admin.rootkit.org
|
0x04 安装,配置,测试 Dovecot [一款开源 IMAP/POP3 邮件服务器,默认端口110,143]
1 2 3
| # yum install dovecot -y # vi /etc/dovecot/dovecot.conf protocols = imap pop3 lmtp 让它支持邮局协议
|
1 2
| # vi /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:~/Maildir
|
1 2 3
| # vi /etc/dovecot/conf.d/10-auth.conf disable_plaintext_auth = yes 不允许明文验证 auth_mechanisms = plain login
|
1 2 3 4 5 6
| # vi /etc/dovecot/conf.d/10-master.conf unix_listener auth-userdb { #mode = 0600 user = postfix group = postfix }
|
1 2 3 4
| # /etc/init.d/dovecot start # /etc/init.d/dovecot status # chkconfig --level 2345 dovecot on # netstat -tuln | grep -E "110|143"
|
1 2 3 4 5 6
| user admin pass admin list retr 1 quit
|
0x05 下载,配置squirrelmail程序[如果你不想把它放到二级目录,单独给它配个虚拟主机也是一样的]:
1 2 3 4 5 6 7
| # wget http://pkgs.fedoraproject.org/repo/pkgs/squirrelmail/squirrelmail-1.4.20-RC2_20090917.tar.bz2/e1828757b34c658a061b009da311f1df/squirrelmail-1.4.20-RC2_20090917.tar.bz2 # tar -jxf squirrelmail-1.4.20-RC2_20090917.tar.bz2 # mv squirrelmail-1.4.20-RC2 /usr/local/apache2/htdocs/squirrelmail # cd squirrelmail/ # mkdir attach # chmod 755 attach/ data/ # cp config/config_default.php config/config.php
|
1 2 3 4 5 6 7
| # vi config/config.php 编辑squirrelmail的主配置文件,修改如下变量 $domain = 'rootkit.org'; $smtpServerAddress = 'localhost'; $imap_server_type = 'dovecot'; $data_dir = '/usr/local/apache2/htdocs/squirrelmail/data/'; $attachment_dir = '/usr/local/apache2/htdocs/squirrelmail/attach/'; # chmod -R 777 squirrelmail/ 这里的权限给的大了点,要不,程序不能写,没法初始化
|
0x06 所有配置完成后,尝试登陆webmail [1.4.20版本]:
0x07 关于漏洞的产生细节,这里就不细说了,网上到处都是,直接来看看具体的利用过程吧,其实非常简单:
1 2
| # vi SquirrelMail_RCE_exploit.sh 因为我这里的路径不是默认的,所以需要先到脚本中去稍微改下 sqspool="/usr/local/apache2/htdocs/squirrelmail/attach"
|
1
| # ./SquirrelMail_RCE_exploit.sh http://admin.rootkit.org/squirrelmail
|
0x08 原谅我等了很久shell也没弹回来,开始以为是shell的问题,后来去看了下代码,很简单啊,本质上还是用bash弹的,也看不出啥情况
0x09 折腾了一会儿,仍未解决
后来仔细看了弹回来的html,原来是发邮件的时候报错了,”501 5.1.7 Bad sender address syntax” ,510错误,谷歌知,可能是发信的格式不正确,然后,就又看了下发信的代码,发现拼接貌似也没什么问题呀,难道是locahost不对,然后我就去掉了localhost试了一下,结果然并卵,感觉不大可能是邮件服务器的配置问题,真心希望哪位表哥要是成功了,能放出来让小弟好好学习下,定感激不尽
最后:
哪位大哥如果测成功了,希望也能告知下小弟问题出在哪里,万分感激…