利用python实现对web服务器的目录探测的方法


Posted in Python onFebruary 26, 2019

一、python

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

python 是一门简单易学的语言,并且功能强大也很灵活,在渗透测试中的应用广泛,让我们一起打造属于自己的渗透测试工具

二、web服务器的目录探测脚本打造

1、在渗透时如果能发现web服务器中的webshell,渗透是不是就可以变的简单一点尼

通常情况下御剑深受大家的喜爱,但是今天在测试的时候webshell不知道为什么御剑扫描不到

仔细查看是webshell有防爬功能,是检测User-Agent头,如果没有就回返回一个自己定义的404页面 

利用python实现对web服务器的目录探测的方法 

1、先来看看工具效果 

利用python实现对web服务器的目录探测的方法

2、利用python读取扫描的目录字典

def get_url(path):
    with open(path, "r", encoding='ISO-8859-1') as f:
        for url in f.readlines():
            url_list.append(url.strip())
        return url_list

3、利用 python 的 requests 库对web目标服务器进行目录探测

def Go_scan(url):
  while not queue.empty():
    url_path = queue.get(timeout=1)
    new_url = url + url_path
    res = requests.get(new_url, headers=headers, timeout=5)
    #print(res.status_code)
    status_code = "[" + str(res.status_code) + "]"
    if str(res.status_code) != "404":
      print(get_time(), status_code, new_url)

4、利用 python 的 threading 库对探测进行线程的设置

def thread(Number,url):
  threadlist = []
  for pwd in url_list:
    queue.put(pwd)
 
  for x in range(Number):
    t = threading.Thread(target=Go_scan, args=(url,))
    threadlist.append(t)
 
  for t in threadlist:
    t.start()

5、利用 python 的 argparse 库进行对自己的工具进行封装

def main():
  if len(sys.argv) == 1:
    print_banner()
    exit(1)
 
  parser = argparse.ArgumentParser(
    formatter_class=argparse.RawTextHelpFormatter,
    epilog='''\
use examples:
 python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt
 python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt
 ''')
  parser.add_argument("-u","--url", help="scan target address", dest='url')
  parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')
  parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading", 
    dest="Dictionaries")

总结

各位大哥有意见或者建议尽管提,文章哪里不对的话会改的,小弟定会虚心学习最后附上全部源码供大佬指教

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import requests
import threading
import argparse,sys
import time,os
from queue import Queue
 
url_list = []
queue = Queue()
 
headers = {
  'Connection':'keep-alive',
  'Accept':'*/*',
  'Accept-Language': 'zh-CN',
  'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'
}
 
def print_banner():
  banner = r"""
  .___.__      __________________   _____  _______  
 __| _/|__|_______  /  _____/\_  ___ \  / _ \  \   \ 
 / __ | | |\_ __ \ \_____ \ /  \ \/ / /_\ \ /  |  \ 
/ /_/ | | | | | \/ /    \\   \____/  |  \/  |  \
\____ | |__| |__|  /_______ / \______ /\____|__ /\____|__ /
   \/           \/     \/     \/     \/ 
 
[*] Very fast directory scanning tool.
[*] try to use -h or --help show help message
  """
  print(banner)
 
def get_time():
  return '[' + time.strftime("%H:%M:%S", time.localtime()) + '] '
 
def get_url(path):
  with open(path, "r", encoding='ISO-8859-1') as f:
    for url in f.readlines():
      url_list.append(url.strip())
    return url_list
 
 
def Go_scan(url):
  while not queue.empty():
    url_path = queue.get(timeout=1)
    new_url = url + url_path
    res = requests.get(new_url, headers=headers, timeout=5)
    #print(res.status_code)
    status_code = "[" + str(res.status_code) + "]"
    if str(res.status_code) != "404":
      print(get_time(), status_code, new_url)
 
def thread(Number,url):
  threadlist = []
  for pwd in url_list:
    queue.put(pwd)
 
  for x in range(Number):
    t = threading.Thread(target=Go_scan, args=(url,))
    threadlist.append(t)
 
  for t in threadlist:
    t.start()
 
 
def main():
  if len(sys.argv) == 1:
    print_banner()
    exit(1)
 
  parser = argparse.ArgumentParser(
    formatter_class=argparse.RawTextHelpFormatter,
    epilog='''\
use examples:
 python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt
 python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt
 ''')
  parser.add_argument("-u","--url", help="scan target address", dest='url')
  parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')
  parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading", 
    dest="Dictionaries")
  args = parser.parse_args()
  Number =args.thread
  url = args.url
  url_path = args.Dictionaries
  print_banner()
  get_url(url_path)
  print(get_time(), "[INFO] Start scanning----\n")
  time.sleep(2)
  thread(Number,url)
 
if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的闭包总结
Sep 18 Python
python实现在目录中查找指定文件的方法
Nov 11 Python
使用python实现个性化词云的方法
Jun 16 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 Python
pycharm debug 断点调试心得分享
Apr 16 Python
Python中zipfile压缩包模块的使用
May 14 Python
Django操作cookie的实现
May 26 Python
python selenium 弹出框处理的实现
Feb 26 #Python
python实现学员管理系统
Feb 26 #Python
python实现电子产品商店
Feb 26 #Python
Python selenium根据class定位页面元素的方法
Feb 26 #Python
python实现诗歌游戏(类继承)
Feb 26 #Python
Python实现简单查找最长子串功能示例
Feb 26 #Python
基于Python实现用户管理系统
Feb 26 #Python
You might like
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
python获取本机外网ip的方法
2015/04/15 Python
Python自动扫雷实现方法
2015/07/25 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
python 调用HBase的简单实例
2016/12/18 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
Python中six模块基础用法
2019/12/08 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
北大青鸟学生求职信
2013/09/24 职场文书
网络研修随笔感言
2014/02/17 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
户籍证明模板
2014/09/28 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书