任意文件读取和下载
原理
可以任意读取服务器上部分 或者全部文件的漏洞,攻击者利用此漏洞可以读 取服务器敏感文件如/etc/passwd,/etc/ sadow,web.config。漏洞一般存在于文件下载 参数,文件包含参数。主要是由于程序对传入的 文件名或者文件路径没有经过合理的校验,从而 操作了预想之外的文件,导致意外的文件泄露。
利用方式
1. 读取程序源代码(如密码配置文件)
2. 读取程序配置文件(如数据库连接文件)
3. 读取操作系统关键文件(如/etc/sadow,/ root/.bash_history等文件)
4. 读取运维配置文件(redis/rsync/ftp/ssh客 户端数据等)
5. 读取中间件配置文件(weblogic/tomcat等 密码文件,apache的httpd.conf文件)
6. 下载web日志文件(获取网站后台/上传文件 等)
7. 结合SSRF获取内网机器文件
系统文件
window
C:oot.ini //查看系统版本
C:WindowsSystem32inetsrvMetaBase. xml //IIS配置文件
C:Windows
epairsam //存储系统初次安装的密码
C:Program Filesmysqlmy.ini //Mysql配 置C:Program Filesmysqldatamysqluser. MYD //Mysql root C:Windowsphp.ini //php配置信息 C:Windowsmy.ini //Mysql配置信息
Linux
.bash_history` # 历史中可能带着用户的密码 ( 遇到过现实案例,是输错的情况下参数的,比如没 输入 su 却以为自己输了 su)
/etc/passwd # 用户情况
/etc/shadow # 直接 John the Ripper
/etc/hosts # 主机信息,通常配置了一些内网 域名
/root/.bash_history //root的bash历史记录
/root/.ssh/authorized_keys /root/.mysql_history //mysql的bash历史记录
/root/.wget-hsts /opt/nginx/conf/nginx.conf //nginx的配置文件
/var/www/html/index.html /etc/my.cnf /etc/httpd/conf/httpd.conf //httpd的配置文件
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts /porc/config.gz /proc/sched_debug // 提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用
/proc/mounts // 挂载的文件系统列表
/proc/net/arp //arp表,可以获得内网其他机器的地址
/proc/net/route //路由表信息
/proc/net/tcp and /proc/net/udp // 活动连接的信息
/proc/net/fib_trie // 路由缓存
/proc/version // 内核版本
/proc/[PID]/cmdline // 可能包含有用的路径信息
/proc/[PID]/environ // 程序运行的环境变量信息,可以用来包含getshell
/proc/[PID]/cwd // 当前进程的工作目录
/proc/[PID]/fd/[#] // 访问file descriptors, 某写情况可以读取到进程正在使用的文件,比如 access.log /root/.ssh/id_rsa /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys /etc/ssh/sshd_config /var/log/secure /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/syscomfig/network-scripts/ifcfg-eth1
/usr/local/tomcat/conf/tomcat-users. xml # tomcat 用户配置文件
/root/.bashrc # 环境变量
/root/.bash_history # 还有root外的其他用户
/root/.viminfo # vim 信息
/root/.ssh/id_rsa # 拿私钥直接ssh
/proc/xxxx/cmdline # 进程状态枚举 xxxx 可以为0000-9999 使用burpsuite 数据库 config 文件 web 日志 access.log, error.log /var/lib/php/sess_PHPSESSID # 非常规问题 session 文件
/proc/net/arp /proc/net/tcp /proc/net/udp /proc/net/dev
防御
1.php.ini 配置open_basedir
2.用户输入配置白名单
s3.不允许包含 ../