代码审计 | 敏感信息泄露
这里以 TurboMail 5.2.0 里的敏感信息泄露漏洞作为学习。
已知 TurboMail 5.2.0 的敏感信息泄露路径为 /mailmain?type=pm
打开 TurboMail 的安装目录,在 turbomail\web\webapps\ROOT\WEB-INF 下找到 web.xml 文件,发现以下配置信息
<servlet-mapping>
<servlet-name>mailmaini</servlet-name>
<url-pattern>/mailmain</url-pattern>
</servlet-mapping>
<servlet-name>mailmaini</servlet-name>
<servlet-class>turbomail.web.MailMain</servlet-class>
从这些配置信息不难看出 /mailmain 路径对应的 servlet-name 是 mailmaini,而 mailmaini 对应的 servlet-class 是 turbomail.web.MailMain
那么这里就需要找到 turbomail.web.MailMain 类进行分析,假设这个类是在 turbomail.jar 文件里,通过搜索在 /turbomail/web/webapps/ROOT/WEB-INF/lib/ 下找到 turbomail.jar 文件
利用 jd-gui 或者 Intellij IDEA 对 turbomail.jar 进行反编译,可以在 turbomail/web/ 文件夹内找到 MailMain.java 文件,这说明之前的假设是正确的。
在 195 行可以看到接收了 type 参数
195 String type = request.getParameter("type");
196 if (type == null) {
197 type = "";
198 }
在 543 行可以看到如果 type 参数为 pm,则执行 PMAdmin 的 show 方法
543 } else if (type.equals("pm")) {
544 PMAdmin.show(false, request, response);
查看该方法的代码,可以看到并没有对用户身份进行验证
public static void show(boolean bAjax, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PMInterface pm = null;
StringBuffer sb = new StringBuffer();
for(int i = 0; i < alPM.size(); ++i) {
pm = (PMInterface)alPM.get(i);
sb.append(pm.PM());
sb.append("\r\n");
}
String str = sb.toString();
response.getOutputStream().write(str.getBytes(SysConts.New_InCharSet));
}
}
因此直接访问 /mailmain?type=pm 就可以看到已登录的用户邮箱信息
这个地方除了泄露登录用户邮箱外,type 后面跟上不同的参数还会泄露邮箱用户列表以及对管理员密码重置等,读者可以自己尝试去发现发现。
往期推荐
原文链接: https://www.teamssix.com/211215-131111.html
相关文章
- java语言代码大全_java语言代码大全解析
- [12期]-流水线中如何获取代码库分支信息
- 将代码(含密钥)上传 Github“开源” 5 年:296019 个客户信息泄漏
- 2022-10-14:以下go语言代码输出什么?A:0;B:7;C:9;D:不能编译。 package main import “fmt“ func main(
- r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现|附代码数据
- 【代码】给Typecho添加访客信息气泡提醒
- 用Python代码收集每天热点内容信息,并发送到自己的邮箱
- 5 行 Python 代码爬取 3000+ 上市公司的信息
- 【内存泄漏】使用memwatch高效排查代码的内存泄漏问题
- 流水线中如何获取代码库分支信息
- 【C 语言】字符串拷贝 ( 字符串拷贝业务逻辑代码 | 分离 主函数 与 字符串拷贝 业务模型 )
- Redis集群下过期key监听的实现代码
- python用来获得图片exif信息的库代码详解编程语言
- 利用PowerShell代码注入漏洞绕过受限语言模式
- 读深入探索Oracle代码如何被阅读和解读(oracle代码怎么解)
- 一篇文章教你用 11 行 Python 代码实现神经网络
- FormatRemoteUrl函数之asp实现格式化成当前网站完整的URL-将相对地址转换为绝对地址的代码
- javascript下过滤数组重复值的代码
- php对输入信息的进行安全过滤的函数代码
- C#获取计算机名,IP,MAC信息实现代码
- asp.net网站底部的版权信息实现代码且可维护
- C创建链表并将信息存储在二进制文件中读取的实例代码
- php/js获取客户端mac地址的实现代码
- Android获取apk程序签名信息代码示例
- Android中查看USB连接的外接设备信息的代码实例
- 使用Python获取Linux系统信息的代码
- Python中捕捉详细异常信息的代码示例