社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python小工具 | 附下载】爬虫联动xray扫描

渗透Xiao白帽 • 3 年前 • 335 次点击  


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
image-20220211093237877

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

python3 xray联动爬虫.py -u url
image-20220211093433655

可以看到,在我们的爬虫爬取到网站可能存在的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'] not in 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))

关注公众号并回复"爬虫联动xray"获取该工具

【往期推荐】

【内网渗透】内网信息收集命令汇总

【内网渗透】域内信息收集命令汇总

【超详细 | Python】CS免杀-Shellcode Loader原理(python)

【超详细 | Python】CS免杀-分离+混淆免杀思路

【超详细 | 钟馗之眼】ZoomEye-python命令行的使用

【超详细 | 附EXP】Weblogic CVE-2021-2394 RCE漏洞复现

【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现

【超详细 | 附PoC】CVE-2021-2109 | Weblogic Server远程代码执行漏洞复现

【漏洞分析 | 附EXP】CVE-2021-21985 VMware vCenter Server 远程代码执行漏洞

【CNVD-2021-30167 | 附PoC】用友NC BeanShell远程代码执行漏洞复现

【奇淫巧技】如何成为一个合格的“FOFA”工程师

【超详细】Microsoft Exchange 远程代码执行漏洞复现【CVE-2020-17144】

【超详细】Fastjson1.2.24反序列化漏洞复现

  记一次HW实战笔记 | 艰难的提权爬坑

【漏洞速递+检测脚本 | CVE-2021-49104】泛微E-Office任意文件上传漏洞

免杀基础教学(上卷)

免杀基础教学(下卷)

走过路过的大佬们留个关注再走呗

往期文章有彩蛋哦


一如既往的学习,一如既往的整理,一如即往的分享

如侵权请私聊公众号删文


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/127047
 
335 次点击