【文件操作-2】文件下载读取全解

【文件操作-2】文件下载读取全解_第1张图片

漏洞发现
从文件名,参数值,目录符号等

read.xxx?filename=
down.xxx?filename=
readfile.xxx?file=
downfile.xxx?file=
../ ..\ .\ ./%00%23 %20 .&readpath=  &filepath=  &path=  &inputfile=  &url=  &data=  &readfile=  &menu=  META-INF=  WEB-INF

1.文件被解析,则是文件解析漏洞
2.显示源代码,则是文件读取漏洞
3.提示文件下载,则是文件下载漏洞
漏洞利用

数据库配置文件下载或者读取后续
接口密钥信息文件下载或者读取后续
对应文件

配置文件(数据库,平台,各种等)

利用:(信息收集信息>猜路径 >>下载配置文件/代码文件 >> 利用服务器软件漏洞> shell> 提权)

1.任意文件下载漏洞的利用主要是为了信息收集,我们通过对服务器配置文件的下载,获取到大量的配置信息、源码,从而根据获取的信息来进一步挖掘服务器漏洞从而入侵。

2.下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。
下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。

3.平台文件

Windows:(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
/usr/local/app/php5/lib/php.ini //PHP配置文件
/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参数

参考:https://www.cnblogs.com/zzhoo/p/12613815.html
如何得到数据库配置文件?

1.扫描工具爬行或者扫描地址
2.下载好的文件代码中去分析路径和包含文件函数
Javaweb文件下载代码

参考:https://blog.csdn.net/Cheng_may/article/details/78600833
download.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>文件下载</title>
  </head>
   
  <body>
    <a href="/download/DownloadServlet?filename=1.jpg">文件下载</a>
  </body>
</html>

DownloadServlet:

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         
        response.setCharacterEncoding("UTF-8");
        //设置ContentType字段值
        response.setContentType("text/html;charset=utf-8");
        //获取所要下载的文件名称
        String filename = request.getParameter("filename");
        //下载文件所在目录
        String folder = "/filename/";
        //通知浏览器以下载的方式打开
        response.addHeader("Content-type", "appllication/octet-stream");
        response.addHeader("Content-Disposition", "attachment;filename="+filename);
        //通知文件流读取文件
        InputStream in = getServletContext().getResourceAsStream(folder+filename);
        //获取response对象的输出流
        OutputStream out = response.getOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        //循环取出流中的数据
        while((len = in.read(buffer)) != -1){
            out.write(buffer,0,len);
        }
         
    }

你可能感兴趣的:(小迪安全笔记,安全,php,web安全)