渗透测试——简单的流程化信息收集

Posted 西江月下及时雨,劝君勿忘三年约

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渗透测试——简单的流程化信息收集相关的知识,希望对你有一定的参考价值。

简单的流程化信息收集

脚本


import os
import fnmatch
import socket
import shutil

def checkcdn(host):
    ip_list=[]
    try:
        addrs = socket.getaddrinfo(host, None)
        for item in addrs:
            if item[4][0] not in ip_list:
                ip_list.append(item[4][0])
        count_ip = len(ip_list)
        if count_ip > 1:
            return False
        elif count_ip == 1:
            return ip_list[0]
        else:
            return False
    except Exception as e:
        return False# 打印错误

print("by k1115h0t")
print("根域名放置在domians.txt中")
print("当前文件夹下放置httpx")
os.system(\'subfinder/subfinder -dL domains.txt -all -o subfinder_subdomains.txt\')
os.system(\'python3 oneforall/oneforall.py --targets domains.txt run\')
oneforall_result=\'\'
for f_name in os.listdir(\'oneforall/results\'):
        if fnmatch.fnmatch(f_name, \'all*.txt\'):
            oneforall_result=\'oneforall/results/\'+f_name

# 读取第一个文本文件
with open(oneforall_result, \'r\') as file1:
    content1 = file1.readlines()

# 读取第二个文本文件
with open(\'subfinder_subdomains.txt\', \'r\') as file2:
    content2 = file2.readlines()

# 合并两个文本文件
merged_content = content1 + content2

# 去重
unique_content = list(set(merged_content))

# 将去重后的内容写入新的文本文件
with open(\'subdomains.txt\', \'w\') as merged_file:
    merged_file.writelines(unique_content)

print("================================================")
print("================================================")
print("================================================")
print("子域名已经全部扫描完成,子域名结果存储在 subdomains.txt")
print("开始识别CDN")
print("================================================")
print("================================================")
print("================================================")
if os.path.exists(\'oneforall/results\'):
    shutil.rmtree(r\'oneforall/results\')
os.remove(\'subfinder_subdomains.txt\')
f1=open(file=\'subdomains.txt\',mode=\'r\',encoding=\'utf-8\')
f2=open(file=\'cdn.txt\',mode=\'a\',encoding=\'utf-8\')
f3=open(file=\'nocdn.txt\',mode=\'a\',encoding=\'utf-8\')
f4=open(file=\'nocdn_ip.txt\',mode=\'a\',encoding=\'utf-8\')
l1=[]
num=1
for i in f1.readlines():
    newi=i.strip(\'\\n\')
    result=checkcdn(newi)
    # print(num)
    num=num+1
    if result!=False:
        f3.write(i)
        if result not in l1:
            l1.append(result)
    else:
        f2.write(i)
for j in l1:
    f4.write(j+\'\\n\')
f1.close()
f2.close()
f3.close()
f4.close()
print("================================================")
print("================================================")
print("================================================")
print("cdn识别完成,结果存储在 cdn.txt nocdn.txt nocdn_ip.txt")
print("开始调用httpx")
print("================================================")
print("================================================")
print("================================================")
os.system(\'./httpx -l cdn.txt -sc -cl -title -o cdn_httpx.txt\')
os.system(\'./httpx -l nocdn.txt -sc -cl -title -o nocdn_httpx.txt\')
print("================================================")
print("================================================")
print("================================================")
print("httpx识别完成,结果存储在 cdn_httpx.txt nocdn_httpx.txt")
print("开始调用rustscan")
print("================================================")
print("================================================")
print("================================================")
os.system("rustscan -a nocdn_ip.txt -r 1-65535 -- -sC -Pn -n -sV >> rustscan_nocdn.txt")

使用时需要新建一个domains.txt用于存放根域名(baidu.com)

脚本的流程

  1. 调用 subfinder 和 oneforall进行子域名扫描

    生成 subdomains.txt 存储所有的子域名
    
  2. 对子域名结果进行分析去重,并识别cdn

    生成 cdn.txt nocdn.txt nocdn_ip.txt
    
  3. 使用httpx进行扫描

    生成 cdn_httpx.txt nocdn_httpx.txt
    
  4. 使用rustscan对无cdn的ip进行端口扫描

    生成 rustscan_nocdn.txt
    

目录下面工具的放置

在第二次使用的时候,需要先手动删除所有txt文件

rm *.txt

目录结构:

├── cdn_httpx.txt  有cdn的域名的httpx 结果
├── cdn.txt  没有cdn的域名
├── domains.txt 要进行信息收集的根域名
├── httpx	httpx二进制文件
├── nocdn_httpx.txt 无cdn的域名的httpx 结果
├── nocdn_ip.txt	无cdn域名解析出的ip
├── nocdn.txt	
├── oneforall
├── rustscan_nocdn.txt
├── start.py
├── subdomains.txt
└── subfinder

工具链接

工具链接:
	https://github.com/shmilylty/OneForAll
	https://github.com/projectdiscovery/subfinder
	https://github.com/projectdiscovery/httpx
	https://github.com/RustScan/RustScan

渗透测试流程以及信息收集总纲

渗透测试流程以及信息收集总纲

1. 渗透测试的一般流程是?

明确目标、信息收集、漏洞探测、漏洞验证(poc )、exp漏洞利用 、编写报告、信息整理、信息分析

2. 当我们知道了渗透测试流程有什么作用?

我们可以用一个标准化的思路,进行渗透测试,规范化测试

3. 在这里明确目标的作用是?

我们要明确目标站点资产范围以及我们要测试的范围,所以有授权的项目的话就是要整理对方的资产信息,首先要明确目标以及目标的范围

4. 信息收集的作用是什么?

最了解你的人,往往都是你的对手。 知己知彼,百战不殆。
通过对目标站点的各种信息快速了解对方,熟悉对方的业务,往往能够发现更多的利用信息,以及对方的薄弱点,从而让我们进行测试

5. 在信息收集中我们一般要收集什么信息?

网站的架构、前端、后端、关于网站的一切信息等等

6. 在渗透测试过程中为什么要进行信息收集?

获得目标相关信息、了解对方资产信息、掌握目标架构情况、寻找对方安全薄弱点、寻找对方安全短板

7. 信息收集为什么很重要?

在测试对方业务的时候,我会因为没有足够多的信息从而无从下手,陷入盲区,所以我们要更加深入的对对方进行信息收集,获取更多的信息

8. 对于web渗透测试而言我们需要什么那些内容?。

收集网站的前端信息,例如:HTML/CSS/JS等,以及指纹识别、GITHUB/源代码泄露、敏感文件及地址
对于后端信息来说我们要收集PHP/ASP.NET/容器/数据库以及框架识别、容器识别等信息
还有中间间各类信息,例如:iis,apache,nginx等信息,对方系统,以及网络架构信息等

9. 当我收集完信息之后我应该如何整理各类的信息?

可以通过各种文档进行整理自己的收集情况,老师给一个示例可以先看一看,然后自己进行更改。
在这里插入图片描述

10. 整理信息收集报告的时候是不是需要注意什么?

注意事项只有一点,让自己看得懂就行了。

11. 在渗透测试流程中漏洞探测的作用是什么?

我们通过对目标站点的漏洞扫描之后的操作进行快速探测对方是否存在常见漏洞,进行常规性的测试

12. 在渗透测试流程中exp漏洞利用 是什么?

exp利用是在我们发现对方存在已知漏洞然后进行测试

13. 在渗透测试的过程中,找不到对方的漏洞怎么办?

一般而已,可能是你的信息收集不够全面,第二,如果你发现对方是一个开源的CMS之类的,你可以进行代码审计,从而找到突破口,进行攻击

14. 在渗透测试的过程中,实在找不到对方的漏洞怎么办,对方是一个不开源的系统?

你可以多关注找个系统相关的安全信息,可能在某个时间段就爆出来了一个高危漏洞或者低危等。

以上是关于渗透测试——简单的流程化信息收集的主要内容,如果未能解决你的问题,请参考以下文章

简单渗透测试流程

渗透测试面试--信息收集主要流程 (含google搜索语法)(保姆式信息收集流程)(信息收集所需网站,工具)

网络安全学习--渗透测试简单测试流程和灰鸽子简单使用

一个完整的渗透测试流程,分为那几块,每一块都有哪些内容

某平台的一次简单渗透测试记录

渗透测试流程