这段时间学了一点jsp,然后就拿来使一使。
这个邮箱的影响范围就不在重复叙述了,详情看以前大牛发的漏洞
WooYun: TurboMail邮箱系统默认配置不当可进入任意邮箱及获取管理员密码(官网也中招及大量实例)
我们首先反编译class文件,可以得知AjaxMain是全局控制类,当type是不同值时,就会调用不同的类和对应方法,对请求数据进行处理。并且看一下访问控制,发现使用session获得一个get方式传入的sessionid进行身份确认,当用户登录后会创建一个表示用户身份的sessionid,每次请求时,都会携带该数据表示用户已经登录.
--------------------------------------------------------------------------------------------------------------------------------------------------
首先我们反编译turbomail.jar
看到turbomail\bulletin\BulletinAjax.java
在这个servlet里面
然后我们跟进 BulletinUtil这个对象里面的getTotal方法
可以看到这里的数据库操作没有用到占位符,也是就没有预编译,然后造成sql注入。其中
bulletintype subject context domain publisher publisher 这些变量都可以注入。
我选择domain演示
其中sessionid=4e64aa7H1_0 是登陆后系统分配的id
延时2S。
这个邮件系统的mysql账号是root的,所以在windows本版本中可以写shell。
--------------------------------------------------------------------------------------------------------------------------------------------------
看到turbomail\bulletin\BulletinAjax.java
然后跟进 getMsg(request, response);
然后跟进BulletinUtil.getBulletinItem方法
很明显id存在注入。
--------------------------------------------------------------------------------------------------------------------------------------------------
看到turbomail\bulletin\BulletinAjax.java
这儿都存在注入
BulletinUtil.updateBulletinReadNum(bi.id, bi.readnum);
BulletinUtil.saveReadLog(bi.id, userinfo.getUseraccount_str());
注入9
注入10
注入11
看到turbomail\bookmark\BookmarkTreeServlet.java
id可以注入
注入12
注入13
注入14
注入15