文件上传,包含,读取

文件上传漏洞

成因:
服务器对用户上传的文件的处理存在安全问题
危害:
1.上传 HTML 等文件,被恶意 SEO 、广告利用
2.利用文件处理机制进行 Dos 攻击
3.可被用于钓鱼、诈骗
4.可被用于存储木马等恶意攻击文件;
5.可与文件包含等其他漏洞结合提高危害

文件上传漏洞的原理 


本质
1.上传是非常正常的业务逻辑,也是非常必须的业务逻辑
2.存在威胁到服务器安全的文件上传,必然是业务处理时出现了缺陷或问题也就是一个绕过检查的对抗。
3.如果存在文件包含的漏润,那么对上传文件处进行再多的检查,都是徒劳的定存在绕过方法。

文件上传的防御方式

1、对上传的文件后缀进行严格白名单限制

2、对上传的文件所在的文件夹进行只读权限限制

3、检测文件上传内容

4、对文件类型进行限制
5、对上传的文件不显示路径

6、对上传的文件进行随机更改文件名

一般防护手段
常见上传点
关闭无用的文件上传、图片上传接口;

进行严格的文件后缀及内容类型判断;

对上传文件的名称和路径进行混淆处理

严格限制上传文件的权限,禁止其可执行权限

关闭不必要的远程读取权限

对上传文件采取隔离等安全措施。

利用方法


日常渗透测试中用得最多的一个漏洞,用它获得服务器权限最快最直接在Web程序中,经常需要用到文件上传的功能。如用户或者管理员上传图片,或者其它文件。如果没有限制上传类型或者限制不严格被绕过,就有可能造成文件上传漏洞。如果上传了可执行文件或者网页脚本,就会导致网站被控制甚至服务器沦陷复杂一点的情况是配合Web server的解析漏洞来获取控制权或结合文件包含漏洞
 

Content-Type: image/jpeg
text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/*
application/ison
application/iavascriptapplication/ecmascript
application/octet-stream

文件上传绕过方式

1.Content-Type的验证绕过

2.其他后缀名的绕过改为php3或2

3.利用.htaccess绕过

4.利用改后缀.空格.绕过

5.利用大小写绕过

6.利用双写绕过

7.白名单的绕过

8.黑名单的绕过

9.图片码配合文件包含

10.%00截断之get请求

11.0x00截断

12.0x0a截断

13. ::$DATA绕过 

14.文件头检查

15.突破getimagesize()

16.突破exif_imagetype()

17.二次渲染图片马配合文件包含

18. ::$DATA绕过 

19.条件竞争绕过

20.js检查绕过

文件读取漏洞

文件读取漏洞的原理

一般的asp站点都是Access数据库,而Access数据库可以直接下载,因此利用该漏洞比较简便的方法就是直接下载Access数据库,找到管理员密码登陆后台,利用后台的上传功能,上传shell。首先目的是找到数据库文件名以及存放的路径。找到网站与数据库操作的动态页面,动态页面中一般使用include包含连接数据库的配置文件。一般网站的管理后台页面会包含这个信息,所以可以使用任意文件下载漏洞下载管理后台页面,例如admin.asp/mamage.asp等。在这些文件中一般会写有数据库文件的路径以及文件名。直接下载数据库攻件可能下载不了,因为管理员一般会做限制,禁止直接下载mdb文件,可以使用任意文件下载漏洞来下载数据库文件。


核心函数
readfile()、filegetcontents()、fopen()中,$filename没有经过校验或者校验不合格,用户可控制变量读取任意文件,如/etc/passwd、./index.php、Jconfig.ini
<?php
$filename="test.txt"readfile($filename);

?>


<?php
$filename="test.txt"
echo
file get contents($filenam
e);
?>

JSP站点
尝试下载tomcat-users.xml文件,里面保存了管理Tomcat的账号密码,该文件在:Tomcat安装目录/conf/tomcat-users,xml下载该文件之后,就能获取管理员账号密码,然后登陆管理后台部署带有木马文件的war包。
PHP站点
php一般是使用MySQL数据库,一般MySQL数据库禁止远程连接,但是可以使用phpMyAdmin进行管理。同意,尝试下载数据库连接文件conf/confiq.php等等,获取数据库账户密码之后,如果是root权限,在知道网站绝对路径的情况下,尝试直接写入一句话木马。

ASPX站点
aspx站点一般后台都是SQL Server数据库,因此利用该漏洞的最简单的方法是下载网站根目录下的web.config文件,该文件中一般含有数据库的用户名和密码。

文件读取漏洞绕过方法


过滤,或../../../../../,使用户在url中不能回溯上级目录
正则严格判断用户输入的参数
php.ini配置open basedir限定文件访问范围
其他
将下载区独立出来,放在项目路径外,给每个下载资源固定的URL,而不是所有的下载资源都是统一的URL: www.test.com/download?filename=文件名。净化数据:对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复

其他
web应用程序可以使用chroot环境包含被访问的web目录,或者使用绝对路径+参数来访问文件目录,使其即使越权也在访问目录之内。www目录就是一个chroot应用。由chroot创造出的那个根目录,叫做“chroot监狱”(所谓”监狱”就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全详细具体chroot的用法,可参考:
blog.csdn.net/frozen fish/article/details/2244870要下载的文件地址保存至数据库中,让用户提交文件对应ID下载文件文件放在web无法直接访问的目录下
不允许提供目录遍历服务
公开文件可放置在web应用程序下载目录中通过链接进行下载记录文件下载日志

核心函数
inurl:"readfile.php?file=
inurl:"download.php?file=
inurl:"read.php?filename=
inurl:"dowh.php?file=
常见参数名称
&RealPath=&readpath=
&FilePath=&filepath=
&Path=
&path=
&Inputfile=
&inputfile=
&url=
&urls=
&Lang=&dis=
&Data=&data=
&readfile=
&flep=
&Src=&src=

文件包含漏洞

文件包含分为本地文件包含和远程文件包含(访问外部网站信息)

文件包含原理


如果允许客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式
常见敏感参数
include()
require()
require.once()
includeonce()
fopen()
file...get..contents()
curl..exec()
readfile()
<?php include($_GET[file']); ?>

文件包含漏洞利用

包含目录文件
?f=test.txt
如果里面的内容是php,则内容会被当成php执行,不是php则会读取到文件内容(用来读取/etc/passw等等配置文件的敏感信息)
?f=./../../test.txt/当前目录../上一级目录,这样的遍历目录来读取文件
包含日志文件
常见的日志路径
>/var/log/apache/access log
>/var/www/logs/access log
>/var/log/access log

文件包含绕过方式

包含模版文件

<?php include("inc/" . $_GET['file'] . ".htm"); ?>
%00截断
/etc/passwd%00
(需要 magic_quotes_qpc=off,PHP 小于 5.3.4 有效)
%00截断目录遍历
/var/www/%00
(需要 magic_quotes_gpc=off,unix 文件系统,比如 FreeBSDO,penBSD,NetBSD,Solaris

包含模版文件
<?php include("inc/” . $_GET['file'] . ".htm");?>
路径长度截断
/etc/passwd/././././././.[...]/./././././.

(php版本小于5.2.8(?)可以成功,linux需要文件名长于4096,windows需要长于256)
点号截断

/boot.ini/.........[..]............(php版本小于5.2.8(?)可以成功,只适用windows,点号需要长于256)

文件包含漏洞的拓展

file://- 访问本地文件系统
http:// -访闸 HTTP(s)网址

ftp:// -访问 FTP(s) URLs
php:// -访问各个输入/输出流(/ streams)

zlib:// - 压缩流
data://-数据(RFC 2397)
glob://-查找配的文件路径模式
phar:// -PHP 归档
ssh2:// - Secure Shell 2

rar:// - RAR

ogg://-音频流.

expect://-处理交互式的流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值