signed

QiShunwang

“诚信为本、客户至上”

用python写渗透测试脚本 学习记录(二)

2021/5/14 21:25:54   来源:

用python写渗透测试脚本 学习记录(二)

这是本人第一次写博客,本人作为网络安全初学者,希望通过写博客的形式,记录、巩固、强化自己学习到的东西。同时希望在写博客的过程中能够发现自己的不足,逐渐提高自己。

本人在学习过程中主要参考书籍为《Python安全攻防——渗透测试指南》

渗透测试的过程主要分为:

  1. 明确目标
  2. 信息收集
  3. 漏洞检测
  4. 漏洞验证
  5. 信息分析
  6. 获取所需信息
  7. 清楚痕迹
  8. 撰写报告

最近的任务就是使用python完成第二项:信息收集

本篇的主要内容是,使用python脚本爬取网站子域名。

中心思想大致为:使用bing搜索,搜索baidu.com的子域名,使用python爬虫爬取关键信息

# 本次实验内容主要为:收集baidu.com域名下的子域名,
# 收集方法为使用bing搜索引擎,采用爬手段,爬取搜索到的域名
# bing搜索引擎搜索子域名的语法为:domain:[域名]
import requests                          #用于请求网页
from bs4 import BeautifulSoup            #用于处理获取的到的网页源码数据
from urllib.parse import urlparse        #用于处理url

#定义一个采用bing搜索的方法
def bing_search():
    Subdomain = []           #定义一个空列表用于存储收集到的子域名
    #定义请求头,绕过反爬机制
    hearders = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56',
        'accept':'*/*',
        'referer':'https://cn.bing.com/search?q=domain%3abaidu.com&qs=HS&pq=domain%3a&sc=10-7&cvid=B99CC286861647E79EF504A4D5B819F1&FORM=QBLH&sp=1',
        'cookie':'MUID=15F7A3347F9B66091BBBAC017EB56733'
    }
    #定义请求url
    url = "https://cn.bing.com/search?q=domain%3abaidu.com&qs=n&sp=-1&pq=domain%3abaidu.com&sc=0-16&sk=&cvid=E6DAE965B2BD4FDC8DF857015E0499C1&first=1&FORM=PQRE1"
    resp = requests.get(url,headers=hearders)           #访问url,获取网页源码
    
    soup = BeautifulSoup(resp.content,'html.parser')    #创建一个BeautifulSoup对象,第一个参数是网页源码,第二个参数是Beautiful Soup 使用的 HTML 解析器,
    job_bt = soup.find_all('h2')                        #find_all()查找源码中所有<h2>标签的内容
    for i in job_bt:
        link = i.a.get('href')                          #循环获取‘href’的内容
        #urlparse是一个解析url的工具,scheme获取url的协议名,netloc获取url的网络位置
        domain = str(urlparse(link).scheme + "://" + urlparse(link).netloc)
        if domain in Subdomain:              #如果解析后的domain存在于Subdomain中则跳过,否则将domain存入子域名表中
            pass
        else:
            Subdomain.append(domain)
            print(domain)

bing_search()

在此次实验过程中,我首先没有设置请求头,结果表示bing不欢迎我这样做,于是经过几次测试之后,我从网页审查代码中将请求头信息复制下来,建立字典,设置请求头,才成功获取到网页源码。请求头应使用自己电脑对应的信息

第二个遇到的坑是,我处理获取到的源码采用的是基本re模块,但是在编写正则表达式的过程中遇到太多麻烦了,总是不能完美的把所有子域名都选出来。后来参考了书上的内容,采用BeautifulSoup对网页数据进行处理。详细的BeautifulSoup教程 感谢这篇教程作者。

最后我使用urlparse对获取的url进行格式化,然后输出即可。

运行结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bvv9t6Xd-1620998519393)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210514210736121.png)]

,然后输出即可。

运行结果如下:

在这里插入图片描述