网站漏洞修补网站文件任意查看漏洞详情与利用

在对网站程序代码的安全检测当中,网站文件任意查看漏洞在整个网站安全报告中属于比较高危的网站漏洞,一般网站里都会含有这种漏洞,尤其平台,商城,交互类的网站较多一些,像普通权限绕过漏洞,导致的就是可以查看到网站里的任何一个文件,甚至可以查看到网站的配置文件config.php conn.php等等。

我们SINE安全公司在对gitea开源程序代码进行网站安全检测的时候发现存在网站文件任意查看漏洞,没有授权的任意一个用户的账号都可以越权创建gitea的lfs对象,这个对象通俗来讲就是可以利用gitea代码里写好的第三方api借口,进行访问,可以实现如下功能:读取文件,上传文件,列目录等等的一些读写分离操作。其中API李的oid是gitea对象的一个值,这个值是用的哈希,在前端输入的过程中并没有对其进行ID值的判断与安全过滤,导致可以插入任意的字符传入到服务器的后端中去,导致可以执行查看文件的漏洞。我们来现场还原下网站漏洞的利用:

首先POST数据过去,POST到的地址为 /vulhub文件夹下的repo.git目录/info/lfs/objects文件。

如下图:

我们POST数据过去的时候就可以在OID这个值里插入一些可以查看网站文件的代码,但是这个漏洞是需要有前提条件的,就是gitea默认开启公开访问,然后在创建gitea对象的时候,才会产生绕过权限查看文件的漏洞,为什么说要公开访问,是因为公开以后,之前创建的gitea对象才会生效,紧接着检查当前用户是否有权限访问LFS对象。我们看到我们POST发送数据过去以后,返回来的数据包是200状态,也就是发送成功,gitea对象已经成功创建了,我们POST数据里写的oid=值是....../../../etc/passwd,这个代码的意思就是查看系统根目录下的etc文件夹下的linux 用户密码文件。

接下来我们就要查看这个/etc/passwd文件里的内容了,该如何查看这个密码文件呢? 我们

用get的方式进行提交,我们编辑一下网址:

/vulhub/repo.git/info/lfs/objects/ [....../../../etc/passwd]/sth,然后打开chinaz的url编码工具进行编码一下,就可以了,我们get提交访问的时候就查看到了/etc/passwd文件的内容。

那么该网站漏洞是如何产生的呢?

我们来看下gitea的程序源代码,发现代码里的meta.oid值是调用的transformKey函数,这个函数的作用就是将oid的值转换成了其他的编码方式,导致字符里内容可以随意写入,没有长度限制,文字限制,当我们POST把oid值改为....../../../etc/passwd的时候就可以直接调取了这个文件并读取出来。

网站漏洞修复建议:

尽快升级gitea的版本,并做好网站安全加固,POST数据包进行安全过滤,有条件的话请部署get post防火墙,对get post方式提交的数据进行安全过滤,当发现查看系统文件的时候,比如:/etc/passwd请直接过滤拦截,并返回301状态。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王磊的博客

Ubuntu 18.04.1 搭建Java环境和HelloWorld

官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

1602
来自专栏linux系统运维

exportfs命令,NFS客户端问题,FTP介绍,使用vsftpd搭建ftp

/tmp/ 192.168.209.129/24(rw,sync,no_root_squash)

3663
来自专栏IT派

看完这篇文章还能不懂Flask这种Web框架吗?

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于...

862
来自专栏云计算教程系列

如何在CentOS 7上编写自定义系统审计规则

Linux审计系统创建审计跟踪,这是一种跟踪系统上各种信息的方法。它可以记录大量数据,如事件类型,日期和时间,用户ID,系统调用,进程,使用的文件,SELinu...

5802
来自专栏Seebug漏洞平台

GitLab 任意文件读取漏洞 (CVE-2016-9086) 和任意用户 token 泄露漏洞

Author:dawu,LG(知道创宇404安全实验室) Data:2016-10-09 0x00 漏洞概述 1.漏洞简介 GitLab 是一个利用Ruby o...

4197
来自专栏搜云库

Ubuntu 17.04 编译安装 Nginx 1.9.9

Ubuntu 17.04 编译安装 Nginx 1.9.9 安装 安装依赖 $ apt-get update $ apt-get install build-e...

2217
来自专栏PhpZendo

Nginx 入门教程

Nginx 推荐配置的工作进程数为 CPU 内核个数,这样可以确保硬件资源有效利用,在配置文件中设置 worder_processes auto 将自动调整工作...

1552
来自专栏哈雷彗星撞地球

Node.js 撸第一个Web应用

使用Node.js 创建Web 应用与使用PHP/Java 语言创建Web应用略有不同。 使用PHP/Java 来编写后台代码时,需要Apache 或者 Ng...

1014
来自专栏云计算教程系列

如何在CentOS 7上安装Apache Kafka

Apache Kafka是一种流行的分布式消息代理,旨在有效处理大量实时数据。Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ...

2611
来自专栏小樱的经验随笔

Redis未授权访问漏洞的利用及防护

Redis在默认情况下,会绑定在0.0.0.0:6379。如果没有采取相关的安全策略,比如添加防火墙规则、避免其他非信任来源IP访问等,这样会使Redis服务完...

1993

扫码关注云+社区

领取腾讯云代金券