Linux下任意文件下载获取web目录的几个tips

  • A+

背景

  当满足如下条件时:
* 存在文件下载/查看功能;
* 文件名参数可控,且系统未对参数进行过滤或者过滤不全;
* 文件内容输出或者保存在本地。

  使用一个动态页面(php、jsp、aspx、asp等)将待下载文件作为参数,一般参数名称为filename,如download.php?filename=xxx等。然后根据参数filename的值,获得该文件在网站上的绝对路径,读取文件,然后是直接发送给客户端下载。如果没有对传入的参数filename进行过滤,就可以实现下载服务任何文件,产生任意文件下载漏洞。
  一般来说会想通过该漏洞获取到想要的一些结果(ssh 账号,web源代码或者数据库账号等),那么获取到web目录就是比较不错的一个切入点(目录有有源代码、配置文件(包含类似redis、mysql等数据库信息)等信息)。

相关思路

  以下是Linux下获取相关的web目录绝对路径的一些tips:

locate_db

  Linux locate命令用于查找符合条件的文档。一般情况我们只需要输入locate your_file_name 即可查找指定文件:
locate [-d ][--help][--version][范本样式...]
  其会去保存文档和目录名称到数据库内(这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次),然后查找合乎范本样式条件的文档或目录。一般这个数据库的位置在:
/var/lib/mlocate/mlocate.db
  数据库/var/lib/mlocate/mlocate.db含有本地所有文件信息,那么可以直接从这个文件中获得例如web应用的具体目录等我们需要的信息:
  例如如下通过读取/var/lib/mlocate/mlocate.db文件,可以知道docker相关目录:

图片.png
  那么在获取到该db文件后,只需要检索类似tomcat等关键字即可获取到web目录了。但是需要注意的是,一般需要root用户才能读取

图片.png

/root/.bash_history

  历史命令文件/root/.bash_history,历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。系统会将使用过的命令保存在/root/.bash_history下,那么可以尝试通过该文件获取对应的web目录,进一步进行拖取源代码的操作。
  例如如下例子,通过读取/root/.bash_history,成功获取到WebSphere的目录:

图片.png
  同样的,一般需要root用户才能读取

图片.png

定时任务

  /etc/crontab这个文件一般负责调度各种管理和维护任务。有时候服务器有定时进行日志备份的需要,可以通过读取定时任务的内容,获取到日志存放的路径,从而获取相关的用户账号密码、应用接口等敏感信息。
  例如如下tomcat日志备份的例子:
  备份的sh脚本如下:
```

!/bin/sh

cd /soft/apache-tomcat-6.0.29/logs
cp catalina.out /soft/tomcat-logs/catalina.out.$(date +%y%m%d)
echo > catalina.out
exit
  定时任务的相关配置:
53 21 * * * /soft/apache-tomcat-6.0.29/tomcatlog.sh
```
  那么通过读取/etc/crontab可以获取到当前tomcat的目录为/soft/apache-tomcat-6.0.29/,那么结合tomcat的结构目录以及web应用的目录名,可以尝试获取webapps下的内容。
  同样的logs文件里可能也会有对应的部署日志,也可以获取到需要的web目录绝对路径。

进程启动参数/proc/{PID}/cmdline

  在Linux系统中,根据进程号得到进程的命令行参数,常规的做法是读取/proc/{PID}/cmdline。
可以跨进程,如pid=1的进程/proc/1/cmdline
/proc/self/cmdline #如果当前用户就是tomcat/weblogic等中间件用户,self代表其本身的进程

  那么就可以直接通过遍历进程号的方式,可以获得类似tomcat进程相关的目录路径。
  例如下面的例子,当前进程为tomcat,通过读取/proc/self/cmdline内容成功获取对应的tomcat目录:

图片.png
  跟locate_db和/root/.bash_history不同的时,普通用户也可以获取到该类文件。那么就可以根据实际情况进行poc的调整来读取对应的web目录路径。

相关推荐: Driftingblues3靶机渗透

Driftingblues3靶机练习 网络结构: 环境搭建平台为VMware15,使用VirtualBox亦可,网络为nat模式,网段192.168.1.0/24 网络由攻击机kali、靶机组成 靶机ip:192.168.1.146 kali linux ip…