# -*- coding: utf-8 -*- import requests ''' Usage: moon.py -u tomcat http://127.0.0.1:8080 影响范围:Tomcat: 全版本 session操纵漏洞:Apache Tomcat默认安装包含”/examples”目录,里面存着众多的样例, 其中session样例(/examples/servlets/servlet/SessionExample)允许用户对session进行操纵。 因为session是全局通用的,所以用户可以通过操纵session获取管理员权限。 (不一定都是全局的,如果path只在examples下,那就无法利用)。 利用此漏洞需要知道相关后台登录后的session键值对,然后写入到session中,利用条件苛刻。 https://cloud.tencent.com/info/2e03f26090fe592b6c7aa933dd6c0f94.html 解决办法:安装完tomcat后,删除$CATALINA_HOME/webapps下默认的所有目录文件* rm -rf /srv/apache-tomcat/webapps/* ''' def attack(URL): urls = ( '/examples/servlets/servlet/SessionExample', #200 '/examples/', #304 '/docs/', #304 '/docs/BUILDING.txt', '/docs/RUNNING.txt', '/manager/html', # 401 '/host-manager/html', #401 '/icons/', '/manual/', '/examples/jsp/snp/snoop.jsp', '/lib/catalina.jar', '/conf/tomcat-users.xsd', '/bin/catalina-tasks.xml' ) print('[+]开始检测-Tomcat-example_vulnerability。[+]') user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" headers={"User-Agent":user_agent} for url in urls: url = URL + url try: verify_response = requests.get(url, headers=headers) if verify_response.status_code == 200 or 304 or 401: try: print('页面返回状态码:'+str(verify_response.status_code)+' '+'页面返回大小为:'+str(len(verify_response.text))+' '+url) # 因为部分网站设置了统一的404页面,造成误报,因此添加返回长度来进行辅助判断 except Exception: pass else: continue except Exception: print("Someerror!") print('[+]检测结束-Tomcat-example_vulnerability。[+]') print('\n') if __name__ == "__main__": attack()