网站漏洞修复网站文件任意查看漏洞详情与利用
在对网站程序代码的安全检测当中,网站文件任意查看漏洞在整个网站安全报告中属于比较高危的网站漏洞,一般网站里都会含有这种漏洞,尤其平台,商城,交互类的网站较多一些,像普通权限绕过漏洞,导致的就是可以查看到网站里的任何一个文件,甚至可以查看到网站的配置文件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状态。
一、推荐使用迅雷或快车等多线程下载软件下载本站资源。
二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。
三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!
四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.
五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。
六、如需转载本站资源,请注明转载来自并附带链接
七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com
- 1CSS控制文字在Div最底部显示
- 2Thinkphp5如何配置IP+端口访问项目模块
- 3elementUI el-dialog弹框居中
- 4教你如何搭建及优化站点
- 5国内互联网视频行业运营分析
- 6service mysql start出错,mysql不能启动,解决mysql: unrecognized service错误
- 7CSS实现悬浮顶部的Div工具栏
- 8记一次Thinkphp5.1框架mysql数据库崩溃(SQLSTATE [08004] Too many connections)
- 9连接SQL Server数据库提示:Login failed for user 'sa'错误的解决方案
- 10Thinkphp3.2在centos7上设置计划任务的方法