<?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="/tags/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Sat, 27 Jun 2020 07:04:49 +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>渗透经验分享之文件操作漏洞拓展</title>
		<link>/web/1811.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 27 Jun 2020 07:04:49 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[文件上传]]></category>
		<category><![CDATA[文件删除]]></category>
		<category><![CDATA[文件包含]]></category>
		<category><![CDATA[文件读取]]></category>
		<category><![CDATA[漏洞]]></category>
		<guid isPermaLink="false">/?p=1811</guid>

					<description><![CDATA[上文分享了注入相关的东西，注入也可以对文件进行操作，本文是对文件操作漏洞的拓展。 文件操作漏洞 文件上传 文件读取 文件写入 文件删除 文件包含 一般java的站点存在文件系列的洞...]]></description>
										<content:encoded><![CDATA[<p>上文分享了注入相关的东西，注入也可以对文件进行操作，本文是对文件操作<span class="wpcom_tag_link"><a href="/tags/%e6%bc%8f%e6%b4%9e" title="漏洞" target="_blank">漏洞</a></span>的拓展。</p>
<h1>文件操作漏洞</h1>
<ol>
<li><span class="wpcom_tag_link"><a href="/tags/%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0" title="文件上传" target="_blank">文件上传</a></span></li>
<li><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></li>
<li>文件写入</li>
<li><span class="wpcom_tag_link"><a href="/tags/%e6%96%87%e4%bb%b6%e5%88%a0%e9%99%a4" title="文件删除" target="_blank">文件删除</a></span></li>
<li><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></li>
</ol>
<p>一般java的站点存在文件系列的洞比较多(除了文件包含)。</p>
<h1>文件上传</h1>
<p>在哪最容易发现上传点？注册登陆用户头像、发布文章发布产品、js中的文件上传接口、一些编辑器，甚至还有扫目录扫出来的<code>/uploader</code>路径，访问出现这种405的uploader一般就是上传。比如：<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/84b74880-49ec-26bf-2eaf-e5b565db1e4f.png" alt="image.png" /></p>
<p>这个时候本地构造POST表单就行了，file参数靠猜，有的时候任意参数就行，有的时候post提交过去会报错缺失什么参数，随机应变。<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593424/cef3ccd8-caca-871a-80d8-8e3b54ba9cb0.png" alt="image.png" /></p>
<p>一般上java的站点扫出来这种uploader比较多，都是上传写的servlet接口。</p>
<p>上传其实upload-labs里的绕过姿势已经非常全面了。拿到一个上传点，首先应该判断能不能正常上传、白名单还是黑名单、怎么校验的在哪校验的，这些没什么好讲的。聊一些比较恶心的文件上传。</p>
<ol>
<li>上传不返回路径</li>
<li>上传不在web目录</li>
</ol>
<p>上传不返回路径多出现在<code>市长邮箱</code>、<code>投诉举报</code>这类功能中，其实这种功能本来就没打算给你返回路径。我的思路一般是找注入点，只要没返回路径的文件上传并且返回给你一个ID给你当作凭据的(此处只是举例，类推)，肯定保存路径在数据库中。找到注入就等于找到了文件路径。</p>
<p>如果没有注入呢？找找日志。比如tp的日志是有规律的，你可以传一个非法文件名<code>1.;</code>，在tp的日志中报错，说不定就有路径。这个我自己是真实碰到的，一个laravel的框架，在laravel.log中报错返回了错误文件名的文件路径，猜出来了shell的路径。</p>
<p>如果没有日志呢？猜。形如<code>/Files/</code>、<code>/uploads/</code>目录，猜要有根据的猜，观察网站的图片和文件地址，以此拼接你的shell文件名，多数以时间戳命名，bp爆破下就行了。</p>
<p>再来说不在web目录的，上传的时候关注下请求包的几个参数，有没有<code>path</code>、<code>filepath</code>、<code>filename</code>、<code>file_prefix</code>，甚至测一下<code>../../1.jpg</code>文件名。如果上传不能跨目录其实你就应该转移关注点了。找文件包含、文件读取。</p>
<p>上传不在web目录的站，有这种功能的很多都有文件读取的洞，因为传上去的文件总归是要下回来的，找找形如<code>download?path=1.jpg</code>这种。拓展思路，举一反三。</p>
<p>另外就是文件包含了，没啥可说的。</p>
<h1>文件读取</h1>
<p>限制条件有两个</p>
<ol>
<li>限制前缀</li>
<li>限制后缀</li>
</ol>
<p>不限制前缀的时候可以通过<code>file</code>协议读文件，php可以通过伪协议读文件，当限制前缀的时候Linux其实还好，可以通过<code>../</code>跳目录，但是windows没办法通过<code>../</code>跳盘符。</p>
<p>限制后缀就比较恶心了，php好像可以用<code>#</code>、<code>?</code>符号去绕过。具体看 <a class="wp-editor-md-post-content-link" href="https://chybeta.github.io/2017/10/08/php%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/#%E6%8C%87%E5%AE%9A%E5%90%8E%E7%BC%80">chybeta师傅的文章</a> 吧。</p>
<p>确定是文件读取之后，如何进一步拿权限？个人习惯先读<code>/etc/passwd</code>，权限够大直接读<code>/etc/shadow</code>，然后根据<code>/etc/passwd</code>读每个用户的<code>.bash_history</code>，读中间件的配置文件，以此判断web的绝对路径。然后逐个读源码，java的话可以读一下war包，搞到代码之后就变得<code>so easy</code>了。</p>
<p>举个例子：文件读取读到了旁站的war包，旁站是一个监控，就一个登陆框，而war包中配置文件里写死了密码，刚好登陆进去直接可以执行命令rce。</p>
<p>weblogic的话可以直接读console账号密码，登陆console部署war包getshell。</p>
<p>反正就是文件读取=60%中间件特性+10%猜+30%运气。</p>
<h1>文件写入</h1>
<p>文件写入拿shell很简单，直接指定web目录和内容就行了。但是这个一般上会有限制，比如内容检测(不能写php标签之类)，文件名检测(不能写<code>.php</code>)。</p>
<ol>
<li>写计划任务<strong>或许</strong>为一个好的选择</li>
<li>覆盖原有配置文件(比如覆盖安装锁)</li>
<li>写ssh</li>
</ol>
<p>文件写入好像没什么好说的，先就这样，想到什么补充什么。</p>
<h1>文件删除</h1>
<p>实战没怎么遇到过这个洞</p>
<ol>
<li>删除配置文件</li>
<li>删除安装锁(造成重装)</li>
<li>删除waf文件<code>include waf.php</code></li>
</ol>
<h1>文件包含</h1>
<p>文件包含多为php站点，所以伪协议读文件这些都是基本操作。不过有一说一，除了ctf中碰到过文件包含，实战中没遇到过。</p>
<p>具体看 <a class="wp-editor-md-post-content-link" href="https://chybeta.github.io/2017/10/08/php%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/">chybeta师傅的文章-php文件包含漏洞</a></p>
<p>需要提一嘴的是phar可以伪装为图片，你可以传一个1.jpg，绕过内容检测，然后用<code>phar://</code>协议包含。还有就是smb包含，php缓存文件包含。</p>
<hr />
<p>或许渗透变化万千的思路才是我真正喜欢他的原因。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
