用户
搜索

该用户从未签到

i春秋-脚本小子

Rank: 2

0

主题

7

帖子

60

魔法币
收听
0
粉丝
0
注册时间
2017-8-20
发表于 2019-1-2 23:57:23 85498
本帖最后由 你好坏 于 2019-1-3 00:01 编辑

一、python
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
python 是一门简单易学的语言,并且功能强大也很灵活,在渗透测试中的应用广泛,让我们一起打造属于自己的渗透测试工具



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


1、在渗透时如果能发现web服务器中的webshell,渗透是不是就可以变的简单一点尼
通常情况下御剑深受大家的喜爱,但是今天在测试的时候webshell不知道为什么御剑扫描不到
仔细查看是webshell有防爬功能,是检测User-Agent头,如果没有就回返回一个自己定义的404页面 111.png

1、先来看看工具效果
微信图片_20190102233550.png

2、利用python读取扫描的目录字典
[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目标服务器进行目录探测
[Python] 纯文本查看 复制代码
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 库对探测进行线程的设置
[Python] 纯文本查看 复制代码
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 库进行对自己的工具进行封装
[Python] 纯文本查看 复制代码
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")


总结
各位大哥有意见或者建议尽管提,文章哪里不对的话会改的,小弟定会虚心学习最后附上全部源码供大佬指教
[Python] 纯文本查看 复制代码
#!/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()


111.png

评分

参与人数 1魔法币 +10 收起 理由
zzconfig + 10 短小精悍的脚本,值得菜狗参考.

查看全部评分

感谢分享
使用道具 举报 回复
脚本挺好的,UA不写死,改成随机获取更好
使用道具 举报 回复
发表于 2019-1-4 11:22:48

脚本挺好的+1
有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫流光 这个网络他曾来过。
使用道具 举报 回复
发表于 2019-1-4 11:24:36
不错不错不错不错
有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫流光 这个网络他曾来过。
使用道具 举报 回复

感谢分享..
一位热衷于分享,积极向上的小白
使用道具 举报 回复
发表于 2019-1-7 09:35:32
使用道具 举报 回复
发表于 2019-1-7 12:02:05
主要还是缺好的字典
使用道具 举报 回复
发表于 2019-1-9 15:12:46
主要是字典,原理就那样
使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册