任意文件上传下载漏洞
2021-12-07 18:31:50 10 举报
AI智能生成
无
作者其他创作
大纲/内容
下载漏洞
<b><font color="#ff0000">漏洞产生原因</font></b>
下载漏洞
一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,没有做文件过滤,或者是../过滤。则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
下载漏洞产生位置的链接形式
一般链接形式
download.php?path=<br>down.php?file=<br>data.php?file=
参数链接形式
&Src=<br>&Inputfile=<br>&Filepath=<br>&Path=<br>&Data=
漏洞常见可利用文件路径
/root/.ssh/authorized_keys<br>/root/.ssh/id_rsa<br>/root/.ssh/id_ras.keystore<br>/root/.ssh/known_hosts //记录每个访问计算机用户的公钥<br>/etc/passwd<br>/etc/shadow<br>/etc/my.cnf //mysql配置文件<br>/etc/httpd/conf/httpd.conf //apache配置文件<br>/root/.bash_history //用户历史命令记录文件<br>/root/.mysql_history //mysql历史命令记录文件<br>/proc/mounts //记录系统挂载设备<br>/porc/config.gz //内核配置文件<br>/var/lib/mlocate/mlocate.db //全文件路径<br>/porc/self/cmdline //当前进程的cmdline参数
漏洞防范
(1)过滤".",使用户在url中不能回溯上级目录
(2)正则严格判断用户输入参数的格式
<span style="color: rgb(31, 9, 9); font-family: "PT Serif", "Times New Roman", Times, serif; font-size: 16px; orphans: 4; white-space: pre-wrap; background-color: rgb(243, 242, 238);">(3)php.ini配置open_basedir限定文件访问范围</span>
<font color="#ff0000"><b>上传漏洞</b></font>
<font color="#ff0000"><b>漏洞产生原因</b></font>
大多数网站都有文件上传的接口,但如果在后台开发时并没有对上传的文件进行安全考虑或采用了有缺陷的措施,导致攻击者可以通过一些手段绕过安全措施从而上传一些恶意文件,从而通过该恶意文件的访问来控制整个后台
<font color="#000000" style=""><b>上传入侵</b></font><font color="#ff0000"><b>upload-labs</b></font>
1:客户端检测
(javascript 检测)
首先观察到提示只允许上传图片文件,那么前端的查看代码,当页面发生改变时,会调用这个checkFileExt函数来检查上传的是不是图片,我们只需要在前端将checkFileExt函数删除,就能上传一个一个非图片文件
2:服务端检测
检查后缀
黑名单
1:上传特殊可解析后缀
2:上传.htaccess
3: 后缀大小写绕过
4: 点绕过
5:空格绕过
6: ::$DATA绕过
7: 配合解析漏洞
8: 双后缀绕过
白名单
1: MIME 绕过
<font color="#ff0000"><b>MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型</b></font>。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。
<b><font color="#ff0000">常见的MIME类型(通用型):</font></b><br>超文本标记语言文本 <font color="#388e3c">.html</font> <font color="#ff0000">text/html</font><br>xml文档 <font color="#388e3c">.xml</font> <font color="#ff0000">text/xml</font><br>XHTML文档 <font color="#388e3c">.xhtml</font> <font color="#ff0000">application/xhtml+xml</font><br>普通文本 <font color="#388e3c">.txt</font> <font color="#ff0000">text/plain</font><br>RTF文本 <font color="#388e3c">.rtf</font> <font color="#ff0000">application/rtf</font><br>PDF文档 <font color="#388e3c">.pdf</font> <font color="#ff0000">application/pdf</font><br>Microsoft Word文件 <font color="#388e3c">.word</font> <font color="#ff0000">application/msword</font><br>PNG图像<font color="#388e3c"> .png</font> <font color="#ff0000">image/png</font><br>GIF图形 <font color="#388e3c">.gif</font> <font color="#ff0000">image/gif</font><br>JPEG图形 <font color="#388e3c">.jpeg,.jpg</font> <font color="#ff0000">image/jpeg</font><br>au声音文件 <font color="#388e3c">.au</font> <font color="#ff0000">audio/basic</font><br>MIDI音乐文件 <font color="#388e3c">mid,.midi</font> <font color="#ff0000">audio/midi,audio/x-midi</font><br>RealAudio音乐文件 <font color="#388e3c">.ra, .ram</font> <font color="#ff0000">audio/x-pn-realaudio</font><br>MPEG文件 <font color="#388e3c">.mpg,.mpeg </font><font color="#ff0000">video/mpeg</font><br>AVI文件 <font color="#388e3c">.avi</font> <font color="#ff0000">video/x-msvideo</font><br>GZIP文件 <font color="#388e3c">.gz</font> <font color="#ff0000">application/x-gzip</font><br>TAR文件 <font color="#388e3c">.tar</font> <font color="#ff0000">application/x-tar</font><br>任意的二进制数据 <font color="#ff0000">application/octet-stream</font>
<b>2:%00截断</b>
截断文件路径 <font color="#ff0000"><b>a.php%00.jpg </b></font><font color="#000000"><b>PHP版本小于5.3.4 magic_quotes_gpc 需要OFF</b></font>
3: 0x00截断
<b><font color="#ff0000">截断文件名 利用burpsuite 的 hex 更改16进制信息 将 save_path 更改为 00</font></b>
4: 0x0a截断
截断文件
检查内容
1: 文件头检查
2: 突破getimagesize() <font color="#ff0000"><b>代码注入绕过</b></font>
getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息,如果用这个涵数来获取类型,从而判断是否是图片的话,会存在问题。
语法格式 <font color="#ff0000">array getimagesize ( string $filename [, array &$imageinfo ] )</font>
3: 突破exif_imagetype()
4: 二次渲染
<b><font color="#ff0000">伪装方式:</font></b> 方法一:直接伪造头部GIF89A<br>方法二:CMD方法,copy /b test.png+1.php muma.png<br>方法三:直接使用工具增加备注写入一句话木马。
其他
条件竞争
子主题
<b><font color="#ff0000">中间件解析漏洞</font></b>
<b style=""><font color="#ff0000">Apache </font><font color="#000000">(</font></b><b><font color="#000000">Apache是从右到左开始判断解析)</font></b>
<b style="color: rgb(255, 0, 0);">test.php.php123 </b>
<b><font color="#ff0000">AddHandler php5-script.php test2.php.jpg</font></b>
<font color="#ff0000"><b>AddType application/x-httpd-php.jpg</b></font>( 即使扩展名是JPG一样能以PHP的方式执行)
<b><font color="#ff0000">.htaccess</font></b>
<b>上传文件.htaccess,如果没有被过滤 则该目录下任意文件都可以做为脚本执行</b>
<b><font color="#ff0000">Nginx</font></b>
xxx.jpg%00.php (Nginx < 8.03 空字节代码执行漏洞)
开启fix_pathinfo (PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了)
/1.jpg/1.php
/1.jpg%00.php
/1,jpg/%20\0.php
<font color="#ff0000"><b>IIS解析漏洞</b></font>
<b><font color="#000000">IIS5.X -IIS6.X </font></b>
<b>/XX.asp /xx.jpg</b> 目录解析漏洞
<b>xx.asp;.jpg</b>
<b>xx.asa xx.cer xx.cdx </b>黑名单过滤绕过
<b><font color="#000000">IIS 7.5</font></b>
a.asp.a; aspx.jpg..jpg
<font color="#ff0000"><b>/.php</b> </font>
分支主题
分支主题
分支主题
0 条评论
下一页