一个事实 在信息收集的过程中,一个常见的规律是,无论企业规模多大,其系统的细枝末节处都可能会存在安全隐患,尤其是最基本的弱口令问题。 开发目的 而如何在海量网站中快速寻找存在弱口令的网站,从而节省攻击者的精力以及时间成本成为本篇文章的开发目的。 思路 经过海量网站筛选,发现大部分网站登录页面的输入的地方都是input元素,我们只需准确定位用户名输入的input元素和密码输入的input的元素以及登录按钮元素,即可实现大部分无验证码网站登录。虽然是无验证码网站,但是也有许多小细节值得我们探讨。 实战 大概设计了一个工具流程便开始写这个工具。 个人使用browsermob-proxy这个工具用来充当http拦截器,用来获取登陆后网站的发包情况;使用selenium来控制浏览器模拟浏览器登录。 要点 打开网站一般会有个跳转,如果你直接使用requests库来请求根目录可能得不到登录网站的页面元素,所以需要使用工具控制浏览器模拟打开网站,通过current_url方法来定位登录页面,然后再通过page_source获取登录页面源代码。 通过BeautifulSoup来解析网站源码,获取页面中所有input元素,然后使用type属性以及如username、account、用户名等关键字来定位用户元素,定位元素后再获取该元素属性作为后续自动登录寻找元素的锚。通过同样的方法定位密码元素及登录按钮。 通过browsermob-proxy抓取的请求包定位具体的登录http请求包,然后替换其中输入的或明文或加密的字符串,使用requests库对他们进行重组发包,即可实现自动爆破。 通过黑白名单以及返回包大小的方法来确定是否爆破成功。 案例 http://124.*.*.134:8001 http://124.*.*.244:88 后续需完善 经过持续完善,该脚本已可以覆盖无验证码的网站达到十之八九,网站千奇百怪寄望于一个工具完全识别实在是开玩笑。误报率更不能说有多低,不过已经将未爆破成功网站重新加入一个新的列表中,使工具不至于漏报。 完善点 增加验证码识别(这种识别似乎好像不算难做,毕竟有开源的ddddocr,难做的是千奇百怪的验证码返回方式) 可以增加专门在浏览器中输入进行爆破选项,针对加密密码。 其他细节完善。
攻击面插件网站爬虫开发
资产搜集思考 在过往的打点经历中,发现有好多资产并不是备案、域名、C段等常规手段获取,好多都是主页或其他页面存在跳转。 因此花费几个小时时间把这个攻击面插件写出来。 插件简单设计 本次设计可能很简单,毕竟是个快速出炉的脚本 爬取指定url链接 过滤link 设置了4个子集,url_subdomain、subdomain、url_ip、ip 如果是ip 直接将link填入url_ip以及ip中 如果是domain 判断link是否包含login、admin、sign、auth关键字 判断是否与输入 URL 具有相同主域名 判断是否同备案(需要根据实际情况实现) 通过任一均填入url_subdomain以及subdomain中 插件效果 插件源码 应该是有bug的,反正自用,之后再改。 websiteinfo.py import requests from bs4 import BeautifulSoup import ipaddress from urllib.parse import urlparse import beian def get_external_links(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0', 'Referer': 'https://www.baidu.com/' } # 发送请求并获取网页内容 try: response = requests.get(url, headers=headers, verify=False, timeout=3) if response.status_code !...
信息收集之成果转化
HW中快速收集信息的节奏 开始 一般来说,hw会给出攻击方一个表格,表格中写有目标公司名称以及少量资产信息 当然也有可能只会给出目标单位名称 收集 第一步 通过公司名利用一些网站可以获取目标企业备案信息,包括 app信息:算是另类的网站,可以用工具快速提取app中的链接及其他信息 网站信息:可以扫他本身及子域及爬取对应网站的过滤后的外链 公众号信息:通过公众号后台进入 邮箱及联系人信息:主要用于登录某些页面及社工或钓鱼使用 投资信息:通过查询投资的全资子公司,来搜索全资子公司的资产做循环,一般来说10层足够 小程序:通过公司关联小程序对目标资产快速渗透,小程序有可能为第三方厂商做的,目的主要是拿数据。 快应用:和小程序类似 其他的如公司违法违规网站、违法违规APP、违法违规小程序、违法违规快应用可能被应用商店下架,但是服务器没关,网上存在遗留,也存在可攻击属性 第二步 根据第一步收集的信息做延申 列举一些 目标资产的证书:寻找证书信任域名 通过资产测绘平台做搜查:准确搜查,就是icp=“公司备案号或其他”、domain=“公司相关域名”、ip=“公司ip”,模糊搜查,body=“公司名称/公司域名”、title=“公司名称/公司域名” 通过子域收集工具等工具对目标资产做子域爆破或调用接口收集子域 如果有cdn bypass工具做bypass搜集 通过对域名相关dns各类记录做收集 如果是ip用ip做反查收集 通过解析ip做C段模糊搜集 对历史快照做模糊收集 对公众平台上的泄露的信息如文档、接口、账号做收集 第三步 对收集到的资产做端口、组件、插件、服务指纹及关联协议做全方面的扫描 第四步 对资产、组件、插件、服务做漏洞扫描 总结 上面四步是对目标资产做正向收集,优点是收集全面,攻击面多且广,提高了可以找到更多漏洞的概率,缺点是速度慢,信息处理复杂且缓慢,交互过多容易被发现,对设备要求高。适合通过数据做攻击面产品或在时间充裕情况下进行使用。 还有一种就是,反向收集,反向收集的一种方法就是已知某些组件、插件、服务、应用的漏洞,通过互联网的资产测绘平台及搜索引擎快速匹配目标,达到快速打点目的。当然反向收集策略很多。优点是速度快,动作迅速,可以对多目标广泛使用。缺点是目标资产不够全面,相应的可能发现漏洞概率偏小,对漏洞储备要求高。 个人如何取适中方案快速和简单使用 使用开源工具结合,对开源工具的数据进行处理 个人选择了几个收集资产的工具 主要用的工具 enscan 主要作用是通过公司名获取投资及备案信息,我设置了10层子公司收集 oneforall 对域名进行接口调用查询,以及字典爆破 fofa、hunter、quake等 借用资产测绘平台收集 对收集的资产做简单分类 然后通过kscan对收集的资产做端口扫描+指纹探测 其中kscan可以改造一下,把指纹单独提取出来 随时添加自己有day有漏洞的指纹 然后对资产进行cdn判断,将http以及subdomain资产进行去重,防止出现扫cdn以及重复扫多个ip的问题 最后使用nuclei或xray等对接的漏扫工具对资产做统一扫描 ...
漏洞验证工具展望
功能 检索及超融合 fofa检索 hunter检索 quake检索 zoomeye检索 shodan 漏洞细节自定义 自由添加新的组件及漏洞 双数据包可关联(上一个数据包的结果成为下个数据包的请求条件之一) 右键发送到测试界面,用来验证poc可用性,用于调试 相关数据选中编码 漏洞验证 自定义输入测试数据,一键验证 选中父节点时点击验证会验证该父节点下所有子节点漏洞 漏洞验证历史数据,可以查看验证的请求及返回结果,用于部分漏洞溯源 未完善项目地址 https://github.com/nex121/fofa_full_search
一款可以换脸的开源软件
效果图 然后配合人脸修复软件,可以达到这种效果: 项目地址 s0md3v/roop: one-click deepfake (face swap) (github.com) 安装 下载 python 的 3.10.11 版本 https://www.python.org/getit/ 安装依赖库 使用对应版本 pip 安装 requirements.txt 里的依赖库,需要要求网络环境比较好,只要出现报错就重装 python 或者卸载一遍删除 Lib 里下载过的包,然后重新安装。 python3 -m pip install -r requirements.txt 然后执行 python3 run.py 这个时候需要科学上网,他会下载一些东西。 在 windows 终端中,可以使用如下命令设置你已有的科学上网代理(替换自己代理)。 set http_proxy=http://127.0.0.1:10809 待一切就绪后,执行 python3 run.py 会出现 UI 界面: 选择需要替换的照片以及被替换的照片或视频,点击 start 即可实现替换。 一些错误解决办法 有可能会出现如下报错: 解决办法: 全局搜索 insightface.app.FaceAnalysis,然后替换改行代码: #FACE_ANALYSER = insightface....
Thinkphpgui项目重置
改造工具链接 https://github.com/Lotus6/ThinkphpGUI 代码结构 pom.xml引入了http请求库kevinsawicki 我们从执行流程处开始研究下代码怎么写的: public static void main(String[] args) throws Exception { // 创建tp_view对象,用于显示ThinkPHP视图 tp_view f = new tp_view(); // 设置窗口居中显示 f.setLocationRelativeTo(null); // 设置当关闭窗口时默认的操作为退出程序 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 将窗口设置为可见,即显示窗口 f.setVisible(true); } 可以看到主程序下面三行都为窗口显示问题,我们跟踪下tp_view对象: 看到tp_view()调用initComponents()方法初始化tp_view对象的组件,接着看下initComponents: 一些常规组件的定义,用的是java.awt库。 检测按钮调用check_url方法: 查看check_url方法: 首先调用checkTheURL方法,主要检测url是不是以http开头: 如果符合会调用check_url方法: url为url,version为combobox组件选中的文本 当文本等于ALL时,定义一个列表,然后for循环遍历 BasePayload bp = Tools.getPayload(v); 获取关键字对应漏洞信息。 exploit包里主要是实现了utils包里的BasePayload接口 basepayload定义了三个接口: 检测接口 Result checkVUL(String url) throws Exception; 命令执行接口 Result exeVUL(String url,String cmd) throws Exception; 获取shell接口 Result getShell(String url) throws Exception; 其中Result为定义的java实例: 主要有三个属性:...
一切的开端与终点
一切的开端与终点 折腾一下博客,随缘记些东西,在互联网浪潮下留下点东西。