专栏首页物联网IOT安全任意文件读取与下载的原理及修复

任意文件读取与下载的原理及修复

注:本文仅供参考学习

任意文件读取下载 由于一些网站的业务需要,往往需要提供文件读取或下载的一个模块,但如果没有对读取或下载做一个白名单或者限制,可能导致恶意攻击者读取下载一些敏感信息(etc/passwd 等),对服务器做下一步的进攻与威胁。

原理 没有对读取下载的文件做限制

漏洞利用方式 由于我们不知道敏感文件的路径,我们可以利用../../(返回上次目录)依次猜解,让漏洞利用变的猥琐。 例如

index.php?a=../../../../etc/passwd
index.php?a=file:///etc/passwd

注意:如果文件被解析的话是文件包含,如果是提示下载或者显示源代码就是文件下载或读取

  1.文件被解析,则是文件包含漏洞

  2.显示源代码,则是文件查看漏洞

  3.提示下载,则是文件下载漏洞

漏洞的危害: 通过任意文件下载,可以下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等。 总体来说,任意文件下载漏洞的利用主要是为了信息收集,我们通过对服务器配置文件的下载,获取到大量的配置信息、源码,从而根据获取的信息来进一步挖掘服务器漏洞从而入侵。以下整理了一些下载利用文件:

Windows:
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
C:\Windows\win.ini //Windows系统的一个基本系统配置文件

Linux:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数

实战 首先来到这个网址,发现有下载功能点开查看url

http://192.168.1.100/pikachu/pikachu-master/vul/unsafedownload/execdownload.php?filename=kb.png

filename=xxx,尝试下载我D盘下的1.php文件

http://192.168.1.100/pikachu/pikachu-master/vul/unsafedownload/execdownload.php?filename=../../../../../../../1.php

成功下载到本地,下载其他敏感文件同理

详细利用思路 JSP站点 尝试下载tomcat-users.xml文件,里面保存了管理Tomcat的账号密码,该文件在:Tomcat安装目录/conf/tomcat-users.xml,下载该文件之后,就能获取管理员账号密码,然后登陆管理后台,部署带有木马文件的war包。

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

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

php站点 php一般是使用MySQL数据库, 一般MySQL数据库禁止远程连接,但是可以使用phpMyAdmin进行管理。同意,尝试下载数据库连接文件,conf/config.php等等,获取数据库账户密码之后,如果是root权限,在知道网站绝对路径的情况下,尝试直接写入一句话木马

下载和读取的目的都是一样,获取服务器的敏感信息 当然还可以有很多用途,反正尽量把所有重要的配置文件以及代码走一遍流程,尽可能最大化的渗透进去

修复方案 1.过滤../等敏感字符,使用户在url中不能回溯上级目录 2.文件下载时判断输入的路径,最好的方法是文件应该在数据库中进行一一对应,避免通过输入绝对路径来获取文件 3.php.ini配置open_basedir限定文件访问范围

本文分享自微信公众号 - 物联网IOT安全(IOTsafety)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 刺向巴勒斯坦的致命毒针——双尾蝎 APT 组织的攻击活动分析与总结

    双尾蝎APT组织(又名:APT-C-23),该组织从 2016 年 5 月开始就一直对巴勒斯坦教育机构、军事机构等重要领域展开了有组织、有计划、有针对性的长时间...

    用户7021283
  • 【技术分享】红队权限维持方法杂谈

    本次分享分两部分,分别介绍Linux和Windows的权限维持,今天主要介绍Linux的,为了节省时间,这里就选择我平时用的比较多的较为好用的方法来介绍

    用户7021283
  • 骚姿势获取无线路由器后台权限

    今天本想使用台式机上网,然而身边并没有有线接入点。于是乎,想到可以利用无线路由器的WISP功能

    用户7021283
  • [MySQL] 在Windows下安装MySQL出现:microsoft visual c++ 2013 runtime 64 bit is not installed

    我在安装MySQL 5.7的时候出现这个问题的,因为平时都是自己在Linux下编译安装的。所以在Windows下使用安装包的时候就非常的奇怪,诶,Windows...

    用户2353021
  • Windows 环境搭建 ftp 服务器

    一、什么是ftp? FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件...

    周俊辉
  • Java文件上传与下载【面试+工作】

    1.servlet 如何实现文件的上传和下载? 1.1上传文件 通过前台选择文件,然后将资源上传到(即新建一个文件)到发布的资源文件下面, 下载就是url 到发...

    奋斗蒙
  • git bisect 命令教程

    它的原理很简单,就是将代码提交的历史,按照两分法不断缩小定位。所谓"两分法",就是将代码历史一分为二,确定问题出在前半部分,还是后半部分,不断执行这个过程,直到...

    ruanyf
  • 【Git】616- git命令的进阶和复习(带动图效果)

    作者:老郑的技术杂货铺 链接:https://juejin.im/post/5e9e49356fb9a03c917fe7fd

    pingan8787
  • 代码管理| 全面了解Git使用相关

    要想弄明白git add和git commit的区别,首先我们需要知道三个概念:工作区(Working Directory)、版本库(Repository)、暂...

    進无尽
  • Django使用(宝塔面板)uwsgi部署时的配置以及django日志文件的处理方法

    这里需要注意的是,nginx中的 location /account 要和你在django中的地址一致,即django 和nginx是可以找到的路由

    kirin

扫码关注云+社区

领取腾讯云代金券