我认为写自己的XSS渗透测试时,我认为我应该小心。
#javascript #安全 #php #xss

介绍

这是一篇文章,我谷歌翻译了我的文章,并审查了一些文章。

对不起,我的英语不好。

有一些省略的部分。

文章在下面。 (日本)ðâ€
https://qiita.com/sachiko-kame/items/d6128c0674a75f5ec809

在世界上,
渗透测试工具,例如OWASP ZAP
有有用的XS检查字符串,例如XSS Locator (Polygot)

但是,
检测到多远?
我应该首先如何测试?
是否有检查的预防措施?
如何编写XSS渗透测试以检测更多XSS?
我认为有很多事情要考虑!

我想到了各种各样的事情,所以实际上是这样做的,
我想写我认为您在编写自己的XSS渗透测试时应该小心的内容!
谢谢!

这是一个github link供您尝试!

âowaspzapâvs - XSS定位器(Polygot)ã

首先,在页面上有各种漏洞,
我检查了它可以使用“ Owasp Zap”和“ XSS定位器(Polygot)”!

检测到多少

我从各个站点和我通过查看Polygot的字符串制造的东西中捡起了各种各样的东西。

您可以通过查看下表来看到很多。
â»两个XS可以在一定程度上检测到。
â»有时“ OWASP ZAP”不检查该方案 sample-a9
â»两个基本上都无法使用正则表达式检测漏洞。
â»两个基本上都无法在错误位置检测漏洞。
⻓ Owasp Zap”比“ XSS定位器(Polygot)”。
如果检测方法或输入是错误的,则可能无法检测到⻓ XSS定位器(Polygot)”。 (详细信息)

Owasp Zap
在正常操作期间输入期望值的示例 XSS定位器(Polygot)
中的逃避遗漏 *示例-A1 <br> </td> <td> 1 </td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td> <样式> *sample-a2 </td>的逃避遗漏 <td>红色</td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td> <textarea>中逃脱的省略 *样本-A3 </td> <td>这是我的第一篇文章!</td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td> <script>»sample-a4 </td>中的逃避遗漏 <TD> SSS </td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td> <xmp>中的逃避遗漏»样本-A5 </td> <td>样本</td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td> <pre>'»样本-A6 </td>中的逃避遗漏 <td>样本</td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td>不足 *示例-A7 <br> unescapedâ'和“”â</td> <td>红色</td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td>不足 *示例-A8 <br> unescapedâ'和“”â</td> <td>“颜色:红色” </td> <td> <strong>未检测到</strong> </td> <td>检测到<br>(在“必需”中附上)</td> </tr> <tr> <TD> URL方案检查遗漏 - sample-a9 </td> <td><code>https://sachiko-kame.github.io/</code></td> <td> <strong>无法检测到</strong> </td> <td>检测到</td> </tr> <tr> <td>省略逃避的位置,其中php字符串输出在HTML注释中 *sample-b1 </td> <td>样本</td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td>不适当的逃脱 *样本-B2 <br> PHP输出被JS Escape函数包围</td> <td>样本</td> <td>检测到</td> <td>检测到</td> </tr> <tr> <td>逃逸泄漏用于语句– sample-b3 </td> <TD>良好的天气#事件#天气#AAA </td> <td>检测到</td> <td>检测到的<br>(必须在#之后输入)</td> </tr> <tr> <td> for语句中的逃避遗漏 *sample-b4 <br>我添加了处理,仅播放脚本中的字符</td> <td>这是一个不错的天气#事件#天气#AAA </td> <td>检测到</td> <td>检测到<br>(#supprique)</td> </tr> <tr> <td>由于用户输入在正则表达式中(在php代码中) *示例b5 <br>请勿使用用户输入</td>创建基本正则表达式,因此检查不足 <td><code>https://sachiko-kame.github.io#abc</code></td> <td> <strong>无法检测到</strong> </td> <td> <strong>无法检测到</strong> </td> </tr> <tr> <td>由于用户输入在正则表达式中(在JS代码中) *sample-b6 <br>请勿使用用户输入</td>创建基本正则表达式,因此检查不足 <td><code>https://sachiko-kame.github.io#abc</code></td> <td> <strong>无法检测到</strong> </td> <td> <strong>无法检测到</strong> </td> </tr> <tr> <td>由于某些用户输入在正则表达式中(在PHP代码中) *示例B7 <br>基本正则表达式不是使用用户输入</td>创建基本的正则表达式,<TD>不足 <td><code>http://192.168.99.100:86/sample- b7/?name=sachiko</code></td> <td> <strong>无法检测到</strong> </td> <td> <strong>无法检测到</strong> </td> </tr> <tr> <td>由于某些用户输入在正则表达式中(在JS代码中) *示例b8 <br>基本正则表达式不是使用用户输入</td>创建基本的正则表达式,<TD>不足 <td><code>http://192.168.99.100:86/sample- b8/?name=sachiko</code></td> <td> <strong>无法检测到</strong> </td> <td> <strong>无法检测到</strong> </td> </tr> <tr> <td>将前缀放入样式类别描述 *样本b9 </td>之后逃脱泄漏 <td> php </td> <td> <strong>无法检测到</strong> </td> <td>检测到</td> </tr> <tr> <td>逃避遗漏TryCatch的错误输出措辞 *sample-c1 </td> <td>样本</td> <td> <strong>无法检测到</strong> </td> <td> <strong>无法检测到</strong> </td> </tr> <tr> <td> iframe URL方案检查遗漏 * sample-c2 </td> <td><code>https://sachiko-kame.github.io/</code></td> <td>检测到</td> <td>检测到</td> </tr> </tbody> </table></div> <h2> <a name="xss-locator-polygot-may-not-be-detected-if-the-detection-method-or-input-is-wrong" href="#xss-locator-polygot-may-not-be-detected-if-the-detection-method-or-input-is-wrong"> </a> 如果检测方法或输入是错误的,则可能无法检测到“ XSS定位器(Polygot)”。 </h2> <p>可能很自然,但是</p> <ul> <li>您应该放置“ XSS定位器(Polygot)”的值,用户可以自由输入。</li> <li>如果有指令将系统指定的字符插入用户可以自由输入的地方,则应插入系统 +“ XSS定位器(Polygot)”的字符。 </li> </ul> <div class="highlight js-code-highlight"> <pre class="highlight plaintext"><code>If you can enter anything after "#" …… ○ https://sachiko-kame.github.io#<<Polygot value>> × <<Polygot value>> ×(I really want to do this if possible) https://sachiko-kame.github.io/<<Polygot value>> </code></pre> </div> <div class="highlight js-code-highlight"> <pre class="highlight plaintext"><code>If you are instructing to enclose the input value with ""…… ○ "<<Polygot value>>" ×(I really want to do this if possible) <<Polygot value>> </code></pre> </div> <h2> <a name="summary-of-things-i-thought-i-should-be-careful-about-when-creating-my-own-xss-penetration-test" href="#summary-of-things-i-thought-i-should-be-careful-about-when-creating-my-own-xss-penetration-test"> </a> 我认为我应该在创建自己的XSS渗透测试时应该小心的事情摘要 </h2> <ul> <li> <p>检查将在没有WAF的情况下进行。<br> 如果有WAF,似乎在某些情况下无法检测到攻击,因为它被WAF击退。</p> </li> <li> <p>基本上,攻击代码使用<code>XSS Locator (Polygot)</code>和<code>|.|</code>。<br> 从上表可以看到,这可以在某种程度上检测到,因此我觉得这是适当的攻击代码。 </p> </li>再次解释了<code>|.|</code>。 <li> <p>首先,输出系统的正常模式。 ex)如果您这样做,它将表现为â€。<br> 相反,寻找不表现这种方式的可疑事物。我认为在不做这样的事情的情况下,很难在正则表达式中找到脆弱性。<br> </p></li> </ul> <div class="highlight js-code-highlight"> <pre class="highlight plaintext"><code>example ・If you type 〇〇 in the form, 〇〇 will be displayed in this place. ・If you type red in the form, this place will turn red. ・If you type "sample" in the form, it will be URL#sample here and the appropriate part will be displayed when you click it. </code></pre> </div> <ul> <li> <p>确定用户可以自由输入数据的区域。参考:样本-B3 <br> 将攻击代码放在此处进行检查。</p> </li> <li> <p>用户可以自由输入 +如果系统要求的任何内容,也将被识别。包裹在“”中。参考:样本-A8 <br> 将攻击代码放在此处进行检查。</p> </li> <li> <p>诊断漏洞(自己)时,请尝试单击并聚焦,以查看与正常行为有任何区别。参考:样本-A7 <br> 假设在事件处理程序或SRC中安装JS <br> </p></li> </ul> <div class="highlight js-code-highlight"> <pre class="highlight plaintext"><code>example ・Check that js does not fire without doing anything. ・Confirm that js is not fired by hitting the form. ・Check that js does not fire when clicked. ・Check if the behavior is normal and expected behavior. </code></pre> </div> <ul> <li> <p>即使发生错误,它是否会发射。 *参考:示例-C1 <br> 这就像插入攻击代码并在发生错误时对其进行检查。<br> 基本上,我认为这就像输入和确认“ <<字符串”,导致错误>> << polygot >>”。</p> </li> <li> <p>考虑到正则表达式的可能性,如果角色的行为总是不同并且不按预期行为,则是可疑的。</p> </li> <li> <p>我觉得我要插入一个看起来像错误的角色并检测到它!</p> </li> </ul> <p>例如:<br> </p> <div class="highlight js-code-highlight"> <pre class="highlight plaintext"><code>|.| </code></pre> </div> <p>我试图显示我在下表中尝试的内容。</p> <p> <br> <br> </p> <div class="highlight js-code-highlight"> <pre class="highlight plaintext"><code>|.| </code></pre> </div> <div class="table-wrapper-paragraph"><table> <thead> <tr> <th>检查模式</th> <th>您输入的内容</th> <th>什么行为正常?</th> <th>错误的行为是什么 </tr> </thead> <tbody> <tr> <TD>样本-B5 </td> <td><code>https://sachiko-kame.github.io#①</code></td> <td>单击url => <code>https://sachiko-kame.github.io</code> </td> <td>单击url => <code>http://192.168.99.100:86/sample-b5/?name=https%3A%2F%2Fsachiko-kame.github.io%23%7C.%7C</code>11 </td> </tr> <tr> <td>样本-B6 </td> <td><code>https://sachiko-kame.github.io#①</code></td> <td>单击url => <code>https://sachiko-kame.github.io</code> </td> <td>单击url => <code>http://192.168.99.100:86/sample-b6/</code> </td> </tr> <tr> <td>样本-B7 </td> <td><code>http://192.168.99.100:86/sample-b7/?①=①</code></td> <td>图像url => <code>https://sachiko-kame.github.io/images/sachiko.png</code> </td> <td>显示了很多</td> </tr> <tr> <TD>样本-B8 </td> <td><code>http://192.168.99.100:86/sample-b8/?①=①</code></td> <td>图像url => <code>https://sachiko-kame.github.io/images/sachiko.png</code> </td> <td>显示了很多</td> </tr> </tbody> </table></div> <ul> <li> <p>确认不包括预期标签。如果您不走这么远,您将无法完全找到示例C1 </p> </li> <li> <p>作为奖励,如果有一个标签可以在您输入长句子的位置,那么如果您可以在那里输入事件处理程序并检查是否根本没有开火,那就更好了。我在想。我将此作为奖励。</p> </li> </ul> <h2> <a name="lastly" href="#lastly"> </a> 最后 </h2> <p>感谢您的阅读! !ð </div> </div> </div> </body> </html>