[工具使用] python小工具连载-爬虫联动xray扫描

381 1
HK.JH 2022-2-12 21:31:47 来自手机 | 显示全部楼层 |阅读模式
python小工具连载
-爬虫联动xray扫描-
xray是一款强大的安全评估工具,相信大家都知道,xray有一个代理模式,我们可以在命令行开启xray的代理模式,之后在brup中将我们开启的xray的代理设置为上游代理,通过这样的方式,我们brup抓的每一包,xray都会自动的为我们进行扫描。但是我们使用brup的时候,往往都是会针对性的抓包,如果我们想对整个网站的所有页面利用xray进行测试呢,我们去使用brup获取访问每一个网页的数据包,是不是十分的麻烦。而在我们之前的python学习中,我们也学习过我们的requests库也是具备代理的功能的,那么我们能否使用python的代理功能配合我们的爬虫让xray自动的对整个网站的所有页面进行扫描呢?首先让我们的爬虫去爬去要测试网站的每一个页面,然后通过代理发送给我们的xray,让xray进行自动扫描。

工具效果
首先开启xray代理模式,设置代理端口为7777

./xray webscan --listen 127.0.0.1:7777 --html-output xray-testphp.htm

使用爬虫爬取自己网站可能存在的url并联动xray进行扫描

python3 xray联动爬虫.py -u url

可以看到,在我们的爬虫爬取到网站可能存在的url后,都会发送给我们的xray,让我们的xray对其进行扫描。

实现原理
本次的工具实际上主体还是为爬虫,联动xray仅仅是在扫描网站的时候增加了一个代理的功能,并且将代理的端口设置为我们xray监听的端口,通过这样的操作,我们便可以将我们爬虫爬到的url都让我们的xray接收并进行扫描。

我们首先还是编写我们的header头信息,将我们的xray的代理端口设置好,这里需要注意的是,如果你想对https的网站进行扫描,那么xray需要提前配置一个ca证书,这样才能正常的进行扫描,具体配置大家可以百度xray代理模式,很多文章写的十分详细,这里就不过多的进行赘述。


然后我们使用requests库进行访问,这里访问的是我们刚刚在命令行中传入的一个url,然后使用爬虫的beautifulSoup库,将我们获得的html代码进行解析,寻中其中的a标签,因为在大多数情况下,我们的其他网页的链接都是在a标签中的href属性下,所以我们找到这个网站的所有a标签后,我们判断,这个a标签的href属性的内容是否是我们要扫描网站的链接,这个具体实现就是通过我们在命令行中输入的url往往是根目录,所以子目录的url中一定是含有根目录的,所以通过这样的方式可以将我们的爬虫牢牢的控制在我们的本网站中。最后判断一下我们发现的这个链接,在不在我们的前面设置的全局变量的列表中,如果存在,就说明他已经是被扫描出来过了,就不进行添加,如果没有发现,那就说明还没有对这个url进行一个扫描,所以将其加入到列表当中,等待后面进行扫描,同时将其写入到结果输出文件中。

这样我们的爬虫就完成了,但是我们的数据是如何发送到xray让其自动帮我们进行扫描的呢,其实就是在requests.get()中有一个proxies参数,这个参数就是我们设置的代理,我们将数据发送给我们的代理端口,也就是我们xray的监听端口,从而进一步进行扫描。


target_url = ''
target = []

def scan(url):
    global target

    head = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:94.0) Gecko/20100101 Firefox/94.0',
    'Accept-Encoding':'gzip, deflate, kaipule',
    'Connection':'close'}
    proxies={
    "http":"http://127.0.0.1:7777",
    "https" :"http://127.0.0.1:7777"
    }
    try:
        re = requests.get(url,headers=head,proxies=proxies,verify=False)
        bs = BeautifulSoup(re.text,'html.parser')
        for j in bs.find_all('a'):
            if target_url in j['href']:
                if j['href'] notin target:
                    target.append(j['href'])
                    print(j['href'])
                    f = open('resut.txt','a')
                    f.write(j['href']+'\n')
                    f.close()
    except Exception as e:
        print('error!'+ str(e))


工具下载链接: https://pan.baidu.com/s/1EscQ9LE8UIDx_XzZbMzFJw
提取码: 2h1a
https://github.com/haochen1204/python_hacktool_study

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行