Free Reality v3.1-0.6 - Multiple Web Vulnerabilities
Free Realty 这款房产管理软件,原本是为房产经纪人和办公室设计的,方便他们把房源信息挂在网上。用户不需要懂网页设计,开箱即用。它其实是 Jon Roig 开发的 Open Realty 的一个分支——Jon 后来跑去搞 3.0 版本了,但不少用户觉得 2.x 系列还不够完善,希望继续维护下去。结果呢,这次在 3.1-0.6 版本里,漏洞实验室团队一口气发现了三个安全漏洞,一个比一个棘手。
漏洞概述
本次漏洞由 Vulnerability Laboratory Researcher Team 发现,影响 Free Reality v3.1-0.6。问题类型涵盖远程攻击、持久化注入和跨站请求伪造,风险等级从低到高,其中 SQL 注入被评为危重。
技术分析
1.1 远程 SQL 注入漏洞
第一个漏洞是远程 SQL 注入,攻击者不需要任何用户交互就能直接利用。简单来说,攻击者可以在数据库管理系统中注入并执行自己的 SQL 命令。成功利用的话,整个数据库和应用系统都会被拿下。
漏洞模块:
- agentdisplay.php?view=
- /admin/admin.php?edit=
1.2 持久化输入验证漏洞
第二个漏洞是一组持久化输入验证问题。攻击者可以在应用端注入恶意脚本代码,并且这些代码会长期保留下来。一旦管理员或经理访问了受影响的页面,就可能被劫持会话,或者页面内容被篡改。攻击者只需要低级别的用户交互就能触发。
漏洞模块:
- admin/agenteditor.php - 注入 Agent 备注
- agentadmin.php?edit=2 - 注入标题、预览描述、详细描述、备注
- agentadmin.php?action=addlisting - 注入标题、预览描述、详细描述、备注
- admin/adminfeatures.php - 添加新功能时注入
1.3 跨站请求伪造漏洞
第三个漏洞是跨站请求伪造(CSRF)。攻击者需要很高的用户交互才能成功,比如诱导管理员点击一个精心构造的链接。如果管理员当时会话未过期,攻击者就可以通过伪造的表单来修改用户账户信息,包括添加或修改袋里账户。由于表单没有令牌或任何 CSRF 保护,攻击者可以把自己的值塞进去。
漏洞模块:
- admin/agenteditor.php?action=addagent - 添加袋里
- admin/agenteditor.php?adminmodify=2 - 修改袋里
测试证明
1.1 SQL 注入
远程攻击者无需任何用户交互即可利用。演示如下:
https://127.0.0.1/FR/agentdisplay.php?view=1[SQL-INJECTION!]
https://127.0.0.1/FR/admin/admin.php?edit=2[SQL-INJECTION!]
1.2 持久化输入验证
远程攻击者只需低到中等的用户交互即可利用。在创建对象功能中插入恶意脚本代码,代码就会在应用上下文中持久执行。示例字符串:
>"< 或
>"
