原创 | Web渗透测试中信息收集常用的Python脚本

admin 2025年4月7日12:03:22评论5 views字数 4665阅读15分33秒阅读模式
在Web渗透测试中,信息收集是关键的第一步,它可以帮助渗透测试人员了解目标系统的环境、配置和潜在漏洞。Python是一种非常适合用于信息收集的语言,因为它提供了丰富的库和框架。以下是一些常用的Python脚本和工具,用于Web渗透测试中的信息收集。
1. 使用Requests库获取Web页面信息
Requests库是Python中用于发送HTTP请求的强大工具,可以用来获取Web页面的内容,提取链接、表单、电子邮件地址等信息。
示例代码:获取Web页面的HTML内容并提取链接
import requestsfrom bs4 import BeautifulSoupdef get_web_page(url):    try:        response = requests.get(url)        response.raise_for_status()  # 检查请求是否成功        return response.text    except requests.exceptions.RequestException as e:        print(f"Error: {e}")        return Nonedef extract_links(html):    soup = BeautifulSoup(html, 'html.parser')    links = [a['href'for a in soup.find_all('a', href=True)]    return linksurl = "http://example.com"html_content = get_web_page(url)if html_content:    links = extract_links(html_content)    print("Found links:", links)
2. 使用Python-Nmap进行端口扫描
Nmap是一个流行的网络扫描工具,通过Python-Nmap库可以在Python脚本中调用Nmap进行端口扫描。
示例代码:扫描目标主机的开放端口
import nmapdef scan_host(target):    nm = nmap.PortScanner()    nm.scan(target, arguments='-sS -T4 -p-')  # 使用SYN扫描,扫描所有端口    for host in nm.all_hosts():        print(f"Host: {host} ({nm[host].hostname()})")        for proto in nm[host].all_protocols():            print(f"Protocol: {proto}")            for port in nm[host][proto].keys():                print(f"Port: {port} State: {nm[host][proto][port]['state']}")scan_host('192.168.1.1')
3. 使用Whois进行域名信息查询
Whois查询可以获取域名的注册信息,包括注册者、注册商、DNS服务器等。
示例代码:使用Python进行Whois查询
import whoisdef get_whois_info(domain):    try:        w = whois.whois(domain)        return w    except Exception as e:        print(f"Error: {e}")        return Nonedomain = "example.com"whois_info = get_whois_info(domain)if whois_info:    print(whois_info)
4. 使用Shodan进行设备信息收集
Shodan是一个物联网搜索引擎,可以用来查找特定设备和服务的详细信息。
示例代码:使用Shodan API进行设备信息收集
import shodandef search_shodan(api_key, query):    api = shodan.Shodan(api_key)    try:        results = api.search(query)        for result in results['matches']:            print(f"IP: {result['ip_str']}")            print(f"Port: {result['port']}")            print(f"Data: {result['data']}")    except shodan.APIError as e:        print(f"Error: {e}")api_key = "YOUR_SHODAN_API_KEY"query = "apache"search_shodan(api_key, query)
5. 使用Sublist3r进行子域名枚举
Sublist3r是一个用于枚举子域名的工具,它通过多种方式(如搜索引擎、证书透明度日志等)收集子域名信息。
示例代码:使用Sublist3r枚举子域名
import sublist3rdef enumerate_subdomains(domain):    subdomains = sublist3r.main(domain, 40, savefile=None, ports=None, silent=False, verbose=True, enable_bruteforce=False, engines=None)    return subdomainsdomain = "example.com"subdomains = enumerate_subdomains(domain)print("Found subdomains:", subdomains)
6. 使用DNSPython进行DNS信息收集
DNSPython是一个用于处理DNS查询的Python库,可以用来获取DNS记录,如A记录、MX记录、NS记录等。
示例代码:获取DNS记录
import dns.resolverdef get_dns_records(domain):    try:        a_records = dns.resolver.resolve(domain, 'A')        mx_records = dns.resolver.resolve(domain, 'MX')        ns_records = dns.resolver.resolve(domain, 'NS')        return a_records, mx_records, ns_records    except dns.resolver.NoAnswer:        print("No DNS records found")        return NoneNoneNonedomain = "example.com"a_records, mx_records, ns_records = get_dns_records(domain)if a_records:    print("A Records:", [r.to_text() for r in a_records])if mx_records:    print("MX Records:", [r.to_text() for r in mx_records])if ns_records:    print("NS Records:", [r.to_text() for r in ns_records])
7. 使用OWASP ZAP进行Web应用安全测试
OWASP ZAP是一个开源的Web应用安全测试工具,可以用于发现Web应用中的安全漏洞。
示例代码:使用ZAP API进行Web应用扫描
import requestsdef zap_scan(url):    zap_url = "http://localhost:8080"    apikey = "YOUR_ZAP_API_KEY"    headers = {'X-ZAP-API-Key': apikey}    response = requests.get(f"{zap_url}/JSON/ascan/action/scan/?url={url}", headers=headers)    if response.status_code == 200:        print("Scan started successfully")    else:        print("Failed to start scan")url = "http://example.com"zap_scan(url)
8. 使用SQLMap进行SQL注入测试
SQLMap是一个自动化SQL注入工具,可以用来检测和利用SQL注入漏洞。
示例代码:使用SQLMap进行SQL注入测试
import subprocessdef sqlmap_test(url):    command = f"sqlmap -u {url} --batch"    subprocess.run(command, shell=True)url = "http://example.com/vulnerable.php?id=1"sqlmap_test(url)
9. 使用Wappalyzer进行Web技术栈分析
Wappalyzer是一个用于分析Web应用技术栈的工具,可以识别使用的CMS、框架、库等。
示例代码:使用Wappalyzer进行技术栈分析
import requestsdef wappalyzer_analysis(url):    response = requests.get(f"https://api.wappalyzer.com/v2/lookup/?url={url}")    if response.status_code == 200:        print(response.json())    else:        print("Failed to get analysis")url = "http://example.com"wappalyzer_analysis(url)
10. 使用TheHarvester进行电子邮件和子域名收集
TheHarvester是一个开源的情报收集工具,可以用来收集目标的电子邮件地址和子域名信息。
示例代码:使用TheHarvester收集信息
import subprocessdef theharvester(domain):    command = f"theharvester -d {domain} -l 500 -b all"    subprocess.run(command, shell=True)domain = "example.com"theharvester(domain)
总结
这些Python脚本和工具可以帮助渗透测试人员在信息收集阶段快速获取目标系统的关键信息。通过自动化这些任务,可以节省时间并提高测试的效率和准确性。在实际使用中,建议结合多种工具和脚本,以获得更全面的信息。
希望这些内容对您有所帮助!如果您有任何问题或需要进一步的指导,请随时联系我。
原创 | Web渗透测试中信息收集常用的Python脚本

原文始发于微信公众号(船山信安):原创 | Web渗透测试中信息收集常用的Python脚本

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月7日12:03:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   原创 | Web渗透测试中信息收集常用的Python脚本https://cn-sec.com/archives/3922017.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息