自动化渗透测试&&自动化挖掘src(2)

前言

上一谈我们讨论了自动化渗透测试的实验,但是他过于依赖fofa,不得不承认,fofa在资产收集这方面做的确实很厉害,但是就是需要花钱,那有没有不需要花钱都手段呢,当然是有的

思路

ICP备案

上周已经介绍了ICP备案了,这周就不继续了

子域名枚举

如果大家挖掘src应该知道,很多时候资产的domain列表大概是这样的

*.baidu.com
ac.3ce.com

有些资产可能需要你进一步爆破子域名,但有些不需要
同时爆破子域名用什么工具呢,这里我还是先用subfinder来进行,这里我们先不追究子域名是否齐全,主要把大概思路做出来
挖h1的都知道chaospy.py,这个工具生成的域名大概就是上面那样,所以我们先进行域名处理,把不需要子域名爆破的直接保存,需要爆破的爆破后保存,变成完整的
domains.txtls

*.hackerone.com
www.baidu.com
import os
os.system("cat domains.txtls |grep '*' >xing.txt")
os.system("sed -i 's/*.//' xing.txt")
os.system("cat domains.txtls |grep -v  '*' >no_xing.txt")
os.system("mv no_xing.txt domains.txtls ")
os.system("subfinder -dL xing.txt -silent >>domains.txtls ")
os.system("rm xing.txt")

运行之后发现,域名变对了
请添加图片描述

收集可用服务

这里我做了长度切割,也方便以后大家多线程
然后naabu用来做端口扫描
httpx进一步进行http服务探测扫描,收集可以用的url到newurls.txtls
nabbu里面的端口都是可以修改调整的,大家根据自己情况添加

import os

file_lens=int(os.popen("cat domains.txtls | wc -l").read())
step=100
def get_domains_every_round(start,end):
    os.system(f'sed -n "{start+1},{end}p" domains.txtls > domaint.txtls')

def naabu():
    os.system("naabu -stats  -rate 2000 -l domaint.txtls -p 80,443,8080,8000,8888,6379,6443,3306,6379 -o open-domain.txtls")

def httpx():
    os.system("httpx -stats  -rl 500 -l open-domain.txtls  -o newurls.txtls")

for start in range(0,file_lens,step):
    end=min(start+step,file_lens)
    get_domains_every_round(start,end)
    if os.path.exists("domaint.txtls")==False:
        os.system("echo 'domaint.txtls generate failed,Unexpected'")
        exit(0)
    naabu()
    if  os.path.exists("open-domain.txtls")==False or int(os.popen("cat open-domain.txtls|wc -l").read())==0: 
        os.system(" echo 'this domain-list do not exist available domain'") 
        continue
    httpx()
    if  os.path.exists("newurls.txtls")==False or int(os.popen("cat newurls.txtls|wc -l").read())==0:
        os.system("echo 'this domain-list do not exist available url'")
        continue

效果如下
请添加图片描述

漏洞攻击

这里还是使用fscan和nuclie
all exp

import os
import requests
from threading import Thread
os.system("cat domains.txtls |grep '*' >xing.txt")
os.system("sed -i 's/*.//' xing.txt")
os.system("cat domains.txtls |grep -v  '*' >no_xing.txt")
os.system("mv no_xing.txt domains.txtls ")
os.system("subfinder -dL xing.txt -silent >>domains.txtls ")
os.system("rm xing.txt")
os.system(f"cat domains.txtls|sort|uniq -u >test.txt")
os.system(f"mv test.txt domains.txtls")

file_lens=int(os.popen("cat domains.txtls | wc -l").read())
step=1000
def get_domains_every_round(start,end):
    os.system(f'sed -n "{start+1},{end}p" domains.txtls > domaint.txtls')

def naabu():
    os.system("naabu -stats  -rate 2000 -l domaint.txtls -p 80,443,8080,8000,8888,6379,6443,3306,6379 -o open-domain.txtls")

def httpx():
    os.system("httpx -stats  -rl 500 -l open-domain.txtls  -o newurls.txtls")

def nuclei():
    os.system("nuclei  -stats -et ssl/weak-cipher-suites.yaml  -l newurls.txtls -rl 500 -bs 35 -c 50  -mhe 10  -o res-tmp.txt  -severity critical,medium,high | notify -silent")
    if int(os.popen("cat res-tmp.txt|wc -l").read())>0:
        os.system("cat res-tmp.txt >>res-all-vulnerability-results.txt")
        os.system("rm res-tmp.txt")

def fscan():
    os.system("fscan  -uf  newurls.txtls")
    if  os.path.exists("result.txt")==False:
        return 
    os.system('cat result.txt|grep "\[+\]"|grep -v  "\[Cloudfront\]">sucess.txt')
    os.system("rm result.txt ")
    if int(os.popen("cat sucess.txt|wc -l").read())>0:
        os.system("cat sucess.txt >>res-all-vulnerability-results.txt")
        with open("sucess.txt","r") as f:
            for line in f.read().split("\n"):
                if line =="":
                    continue
                content={"msgtype": "text","text": {"content":line}}
                requests.post('https://oapi.dingtalk.com/robot/send?access_token=',json=content)

def clear():    
    os.system("rm -f open-domain.txtls")
    os.system("rm -f domaint.txtls")
    os.system("rm -f newurls.txtls")

for start in range(0,file_lens,step):
    end=min(start+step,file_lens)
    get_domains_every_round(start,end)
    if os.path.exists("domaint.txtls")==False:
        os.system("echo 'domaint.txtls generate failed,Unexpected'")
        exit(0)
    naabu()
    if  os.path.exists("open-domain.txtls")==False or int(os.popen("cat open-domain.txtls|wc -l").read())==0: 
        os.system(" echo 'this domain-list do not exist available domain'") 
        continue
    os.system("cat open-domain.txtls >>avaliabledomain.txtls")
    httpx()
    if  os.path.exists("newurls.txtls")==False or int(os.popen("cat newurls.txtls|wc -l").read())==0:
        os.system("echo 'this domain-list do not exist available url'")
        continue
    os.system("cat newurls.txtls >>avaliableurls.txtls")
    t1 = Thread(target=nuclei)
    t2 = Thread(target=fscan)
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    clear()

这里我加了一个钉钉的机器人通知
大家可以根据自己的需求调整

猜你喜欢

转载自blog.csdn.net/azraelxuemo/article/details/130669871
今日推荐