http://**.**.**.**/bugs/wooyun-2014-063422
通过此处获取了源代码(以前泄露)
进入webmail\main文件夹下
所有代码均加载了
其中login_inc.php为核心权限验证文件
通过上面可知,$G_USERNAME 变量就是控制整个邮件登录过程的唯一因素,而$G_USERNAME的来源为session方式赋值,所以目前来看,无法绕过。
但是通过对所有代码进行审计
发现如下位置
webmail/main/mailcurlapi.php
webmail/main/sendstatusapi.php
我们可以看到直接对session值进行了操作,以post方式进行赋值,在后续
又进行了权限验证。
这是什么逻辑? 这就导致直接绕过邮箱验证,直接可登陆邮箱,造成任意邮件读取。
所以后台所有页面操作,均可以采用如下方式绕过赋值
一、任意邮件读取
通过POST提交方式即可构造G_USERNAME G_DOMAIN G_HOME G_NICKNAME G_ID即可绕过登陆任意人邮箱
二SQL注入漏洞(举10例分析)
1、webmail/tools/getpopmail.php
popid为注入点,
2、webmail\tools\cardList.php
$_REQUEST[sort_by] 注入,此处为order by 注入
3、webmail\tools\cardCmd.php
跟踪insertAddress方法
在这里的$this->TMID又是前面我们伪造session值的
$G_ID即为我们可控的值,又是注入
三、任意文件删除
webmail\main\doAction.php
跟踪方法deleteAttach
四、命令执行
五、任意文件读取
mail\webmail\main\mime.php
演示如下:
默认访问http://**.**.**.**/webmail/tools/getpopmail.php?Cmd=Get&popid=1
即为跳转,所以我么通过如下方式先赋值session
再次访问
http://**.**.**.**/webmail/tools/getpopmail.php?Cmd=Get&popid=1 and 1=2 union select 1,2,3,4,user(),6,7,8
案例
通过写个爬虫把所有邮箱爬下来
mx620.**.**.**.**
**.**.**.**
mx603.**.**.**.**
**.**.**.**
mx606.**.**.**.**
mx622.**.**.**.**
mx605.**.**.**.**
mx623.**.**.**.**
**.**.**.**
mx621.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx600.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx601.**.**.**.**
**.**.**.**
**.**.**.**
webmail.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx620.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx623hk.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**/
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
http://**.**.**.**/bugs/wooyun-2014-063422
通过此处获取了源代码(以前泄露)
进入webmail\main文件夹下
所有代码均加载了
其中login_inc.php为核心权限验证文件
通过上面可知,$G_USERNAME 变量就是控制整个邮件登录过程的唯一因素,而$G_USERNAME的来源为session方式赋值,所以目前来看,无法绕过。
但是通过对所有代码进行审计
发现如下位置
webmail/main/mailcurlapi.php
webmail/main/sendstatusapi.php
我们可以看到直接对session值进行了操作,以post方式进行赋值,在后续
又进行了权限验证。
这是什么逻辑? 这就导致直接绕过邮箱验证,直接可登陆邮箱,造成任意邮件读取。
所以后台所有页面操作,均可以采用如下方式绕过赋值
一、任意邮件读取
通过POST提交方式即可构造G_USERNAME G_DOMAIN G_HOME G_NICKNAME G_ID即可绕过登陆任意人邮箱
二SQL注入漏洞(举10例分析)
1、webmail/tools/getpopmail.php
popid为注入点,
2、webmail\tools\cardList.php
$_REQUEST[sort_by] 注入,此处为order by 注入
3、webmail\tools\cardCmd.php
跟踪insertAddress方法
在这里的$this->TMID又是前面我们伪造session值的
$G_ID即为我们可控的值,又是注入
三、任意文件删除
webmail\main\doAction.php
跟踪方法deleteAttach
四、命令执行
五、任意文件读取
mail\webmail\main\mime.php
演示如下:
默认访问http://**.**.**.**/webmail/tools/getpopmail.php?Cmd=Get&popid=1
即为跳转,所以我么通过如下方式先赋值session
再次访问
http://**.**.**.**/webmail/tools/getpopmail.php?Cmd=Get&popid=1 and 1=2 union select 1,2,3,4,user(),6,7,8
案例
通过写个爬虫把所有邮箱爬下来
mx620.**.**.**.**
**.**.**.**
mx603.**.**.**.**
**.**.**.**
mx606.**.**.**.**
mx622.**.**.**.**
mx605.**.**.**.**
mx623.**.**.**.**
**.**.**.**
mx621.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx600.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx601.**.**.**.**
**.**.**.**
**.**.**.**
webmail.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx620.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
mx623hk.**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**/
**.**.**.**
**.**.**.**
**.**.**.**
**.**.**.**