首页 > 其他分享 >聊聊web漏洞挖掘第一期

聊聊web漏洞挖掘第一期

时间:2023-01-11 17:55:54浏览次数:60  
标签:web 功能 聊聊 xss 网站 第一期 漏洞 测试 挖掘

  之前写2022年度总结的时候,有提到要给大家分享漏洞挖掘技巧。这里简单分享一些思路,更多的内容需要大家举一反三。

  文章准备昨晚写的,昨天晚上出去唱歌,回来太晚了,耽搁了。昨天是我工作的last day,心里还是有点难受的。我想了想,人生大抵如此。在短暂的生命中,认识不同的人,和他们相识到相知,再到离别。 以此循环,以此交替。循环往复,周而复始。幸好现在还是有一些朋友在身边,幸福有时候还挺简单的,有工作,有朋友,有肉吃。

  言归正传,聊点正经的。

    模拟安全测试

  信息收集真的说了好多年了,公众号/安全资讯网站上经常说,而且github上隔三差五就会出几个信息收集的工具。信息收集可以说是web漏洞挖掘中最重要的阶段。现在很多单位面试,都可能会问如何对一个厂商进行全面的信息收集,看看你对信息收集的理解,我觉得这个就很好。

  以信息收集为核心,是没有错的。说到信息收集,网上文字提到最多的就是对子域名的信息收集

  那么我们在做漏洞挖掘的时候,常常会使用网上的优秀的信息收集工具进行资产收集,有耐心的同学,还会对ip段进行信息收集,进行C段的扫描等。怎么评定资产收集工具的好坏呢?我们常常通过查看github star数,README介绍或是文章中的工具科普,去了解一款工具,是否是不错的资产收集工具。比如说在挖国内项目的时候,我一般会使用OneForAll进行资产收集。 

  因为挖掘的目标的多样性,所以扫描结果也总是不同的。有些目标,工具扫描出来的结果就很多,有些目标,工具扫描出来的结果就很少,甚至几乎没有结果。有时候还挺"束手无策"的,不知道如何下手。跑完资产,我会访问子域名一个个打开看,全程我会开着burpsuite,我会勾选所有选项,我不会错过任何网站信息,包括图片信息,也是我需要了解的。

  

 

 

 

  我会去看网站的业务功能点,我会随便翻一翻点一点,然后查看burpsuite历史记录:

  

 

 

 

  

  这个阶段,我想用一个词描述它,那就是了解阶段:

  我不会测试漏洞,我会简单看下这个网站是做什么的?这个why对我很重要。我好对这个网站进行分类,我会记录他们。

  下一步简单了解了网站是什么类型的网站后,我会通过查看Burpsuite历史记录,了解它的接口形式,如果能通过观察数据包,能发现他的网站组成结构,那是再好不过了。

  那么怎么了解你的网站是使用了什么技术开发应用的呢?方法有很多,我会通过植入一些脏数据或缺省,有些网站如果没有做统一的错误处理,它会暴露一些程序的应用信息,如json报错错误,它可能是fastjson的,也有可能是jackson的,但是大概率它是jackson。这时候我们该怎么做?对于不熟悉jackson反序列化的朋友,我强烈建议你维护个wordlist,为jackson vulnerability wordlist。从各大文章/github中检索所有jackson的漏洞利用的payload,把他们引入Fuzz,跑一下,万一成了呢?万一他有反序列化漏洞呢?

   很多朋友有个疑惑,我Fuzz了,怎么知道它有没有漏洞呢?那么我们需要了解这个漏洞的特征,触发特征是什么? 

  一般来说常见的有两种,也是很好用的两种。1.response中直接回显的 2.dnslog中有回显的

  我们只要在Fuzz阶段,观察和搜索response中是否有我们的特征信息,或者刷新dnslog,查看是否有dnslog信息返回,以此来判断是否存在漏洞。

  这种Fuzz很好用。在很多地方你都可以使用他们。优势在哪里?

  1.无需懂原理你也能挖到漏洞

  2.迅速检测漏洞是否存在

  3.无需太多的思考

  Fuzz的劣势也很明显,因为不懂jackson反序列化漏洞原理,导致看到报错信息,就会尝试反序列化Fuzz,会比较盲目,会浪费很多时间在Fuzz上,结果往往是不如意的。所以最好的Fuzz建立在懂漏洞原理的情况下,实现更精准的判断。总体上来说,这种劣势,在安全测试中,影响不会很大,占比不会很高。

  对于大多数的网站来说,了解他们的网站业务往往不会很难,不需要花太多的时间,那么下一个阶段就是熟悉->详细功能点安全测试

  迅速熟悉网站后,就要开始对网站上的各个功能点做安全测试。对于新手来说,挖越权就好了,看到功能点,就开两个账号,尝试新增数据,删除数据,修改数据和查询数据,抓包这些功能点,修改其中的唯一性id。循环这个动作,坚持这样做,不说挖到高危,一定能挖到漏洞,还迅速提升了逻辑挖掘的实战能力。

  后面经过大量的实战后,可能会发现修改数据的时候,可能有多个唯一性的id。在修改数据查询数据的时候,发现根本不存在唯一性id等问题,那么又需要新的方法去做安全测试。不过我说的这些情况,往往不会很多见。

  测试完功能后,运气好,可能会挖到1-2个逻辑漏洞,运气不好,可能一个都没挖到。那么如果你挖的是src,大多数人大概率是运气不好的,往往一个漏洞都没挖到,发现测试了一下午,一无所获,还不如打游戏呢。

  在这个阶段,大多数人就放弃测试越权了,觉得浪费时间了。我想说持续这个动作,持续1周-2周,我希望你坚持下来,很枯燥,但是按照我的经验来看,只要走量的话,只要能触碰到足够多的功能点,你一定能挖到漏洞。

  我懂越权,为什么我还会挖不到越权? 被什么困住了?

  大多数人觉得测试越权,需要花活tips,我个人觉得大多数时候测试越权就是修改参数没别的东西。总体原因有两个。

  1.你测试功能点,心太粗了,覆盖面不够,就是你的功能点覆盖面不足

  2.你触发不到更多的功能点,被困住了

  对于1的情况,有一些缓解方案。 

  (1)寻找多级分类的标签页,就要找那种小众的功能点,最好是点了n个页面触发到的功能点,寻找那种"枯井暗沟"的功能点,之前挖谷歌,就挖了一个核心业务的越权,就是从多级目录下的一个不起眼的按钮处挖到的越权漏洞。

  有时候我们看到复杂的业务逻辑,看到非常多的功能点,我们不要害怕测试,他们虽然测试很累,但是大概率会有所收获,不会"白跑一趟"。

  对于2的情况,个人觉得是最痛苦的。大多数困住我们的不是我们不会测试越权漏洞,抓包修改参数即可,多简单啊,困住我们的是其他。比如说打开资产子域名,都是登录框,打开子域名,都是404,403,502页面。我差的是越权吗?我差的是触发功能点!那种感觉就像浑身的力气,一拳打在棉花上一般。

  为了触发更多的功能点,这时候我会对404,403页面进行目录Fuzz,对登录框的地方,我会尝试爆破,不厌其烦的看着js文件,拼接路径。我会继续信息收集。我想到了老外常说的一句话,这边我贴一下:

  Never rely on a single tool for recon as you may miss out your targets. 翻译过来就是不要依赖单一的侦查工具,因为你可能会错过你的目标。

  为了触发更多的功能点,可以说我们做了非常多的前置工作。可见触发到功能点是多么的重要。我甚至可以说,现在的web安全测试,很大程度上是面向功能点的安全测试,对功能点的web安全测试,在整个安全测试中,占比很大。

  xss有话说:

  在挖一些大厂的时候,发现简单的输入输出xss都变少了。变少是正常的,反射检测逻辑相对简单,我可以说大部分白帽子都有反射xss检测工具。再加上现在的开发情况,大厂简单的反射xss会很少。

  所以我这里建议大家去学习学习PostMessage xss漏洞挖掘,国外白帽子,挖xss的,都在往PostMessage xss倾斜,我的博客有写过PostMessage xss学习案例。感兴趣的,可以看看学习下。

  存储xss: 存储xss其实很好挖,真的。只要你能触发到足够多的功能点,存储xss,就有挖到的可能。我这边测试存储xss,最喜欢用的payload为:

'"><img/src=1>

 

  我的经验告诉我,如果有图片显示,那么大概率这里可能有存储xss,这个方法也可以测试反射xss,但是对于反射xss来说,这个绝不是最好的探测payload。这里说明这个payload,是再次强调了在漏洞挖掘中,特征测试方法,是非常重要的tips。 img这个payload是基于响应的,我这边的测试经验告诉我很好用。

    它真的没漏洞啊?

  在测试一些项目或者目标的时候,发现凭自己的技术,很难发现漏洞了,如何破局?

  1.资产监控 子域名/端口

  对资产目标进行24小时/48小时一次的资产检查,对新资产进行告警

  资产监控是很有用的,他可以发现新资产。现有资产没发现安全漏洞,很大概率是因为业务变动太小了,新的子域名,代表新的业务变动,这时候去测试,大概率会有安全漏洞。

  2.新功能点

  监控新业务更新的页面,第一时间发现新功能点

  很多网站,不以子域名上线标志为新业务上线,新业务的上线依赖于request path,这时候就要监控更新动态的地方,然后再访问对应的网站页面,去进行功能点安全测试

  。。。。。

  js里面的小秘密:

  看不到后端代码的今天,我们唯一可以看到的就是前端,javascript代码,我们要好好珍惜,利用它们,一些基于js的tips:

  

 

 

   

  

 

   

 

 

 

 

  

    前端是我们挖洞的伙伴,他可以变成我们手上最锋利的刀。

   

  安服的困扰?

  身边好几个做安全服务的,平时工作也是挖漏洞的,说挖自己公司的项目,说常常挖到漏洞。但是一去挖偏赏金猎人的项目,就束手无策。我该怎么办?

  我相信这个问题,绝对困扰了绝大多数的安全服务工程师。很多时候,我们想去挣点外快,发现自己工作中用到的那一套,不适用于众测/src目标。

  针对这种情况,我想说具体问题具体分析

  1.熟悉当下的工作环境,了解你做的大部分项目是什么类型的。你做安服期间,做了什么项目?这些项目有什么特征?

  2.把安全服务的项目和众测/src目标进行对比,寻找他们的不同点,寻找出难点在哪里,寻找出问题点在哪里。

  3.对于问题点,能解决掉,我们就尽量解决掉。对于难点,我们可以对外寻求帮助,和其他同行朋友沟通交流。

  4.寻找志同道合的朋友,一起挖洞,投入时间,坚持下去,我觉得是很重要的。

  5.完善你的wordlist

  。。。。。。

 

  读懂自己:

  对于做漏洞挖掘的,都应该知道自己需要什么,是抱着什么目的去挖漏洞的。

  1.对于短期学习漏洞挖掘,想快速挖到漏洞的同学。这些人是想快速获取金钱变现的。

  对于web漏洞挖掘。就我个人而言,我能挖到漏洞,但是我自己很难快速挖到漏洞,还是需要了解网站业务。但是我知道其他人可以快速挖到漏洞,而且这种人不少,还很多。

  想要快速挖到漏洞,那么你一定要提高你的认知。比如说你有一个别人都不太知道的漏洞挖掘思路,如针对特定功能点的测试思路,这种思路一使用,是大概率爆漏洞的。漏洞挖掘中很核心核心的一点就是思路,想赢,还是需要奇招。我说一个奇招,过去几年被频繁使用的,如科学记数法dos攻击。这些tricks,我都叫他奇招。奇招难点在哪里?

  (1)思路是很难获取到的,一般漏洞的难点在于思路,web漏洞挖掘,大多数没有技术难点。

  (2)思路是无价的,如黄金一般。

  (3)提高逻辑思维能力,了解深入网站业务。

  (4)加入一些知名安全团队,和他们讨论交流,交流是web安全漏洞挖掘技术提高的手段之一!

  。。。。。

  

  2.对于准备长期做漏洞挖掘的,就要把战线拉长,而不是在意短期得失。应做好,做全信息收集,同时日常要学习代码,阅读代码,打好基础等。对于可重复性的手工操作,要尽可能的半自动化,解放双手,减轻自身压力。同时日常还要刻意训练自己的观察力,细心和耐心。

  

 漏洞挖掘目标选择:

  如果你是为了学习漏洞挖掘,那么选择什么目标都可以,但是如果你是来赚钱的,那么你还是尽可能的选择软柿子。

  为什么我们做漏洞挖掘,总是要学习很多web开发知识?还要学习加解密技术等,学习很多知识,他们往往很杂。

  真相很残酷,一般测试金融类的网站,app多多少少会有些加密,一些核心网站,还会有其他防护,他们不是针对安全的,他们有时候是为了防爬虫,风控等。这些目标很显然不是软柿子,在目标受限的情况下,要不是迫不得已,没人愿意测试他们。

  所以你想快速赚钱的,还是长线的。你要尽可能选择功能点多,且目标范围大的厂商。国内我推荐挖阿里和腾讯,他们资产目标范围大,资产更新频繁,并且功能点多。其他的src也可以,只要符合目标范围大,并且功能点多的特征,理论上你都可以尝试尝试。

  如果可以安于现状的赚钱,我相信大多数人都是躺着安于现状。随着web的快速发展,很多目标项目,就是一个app,或者一个网站,让你测试api,再踢着我们屁股,逼迫我们成长。我觉得这也不一定是一件坏事。如果无法避开,那么我们就坦然接受他们,去解决问题,可以抱怨,但是最终还是要解决他们。解决它们的成就感比获取赏金更快乐!友情提醒: 不要过度沉迷于难项目,大多情况下他们没漏洞,而且会严重打击你的自信心。因为很有可能你会和软柿子失之交臂,除非你是抱着学习的态度,不为了金钱!所以有力气的时候,要注意发力点,格外重要。

  关于怎么评估软柿子,选择目标难度大小问题,可参考我的2022年度总结。

  

  

  • 添加到短语集  
    • 没有此单词集:英语 → 中文(简体)...  
    • 创建新的单词集...
  • 拷贝
TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:web,功能,聊聊,xss,网站,第一期,漏洞,测试,挖掘
From: https://www.cnblogs.com/piaomiaohongchen/p/17044530.html

相关文章

  • WebUploader超大文件上传
    ​ 总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比......
  • docker部署 .net core web api
    在项目里先添加dockers支持  然后项目了就会出现Dockerfile文件  打开dockerfile文件修改成我这样  然后就去发布文件,  发布的时候就选择发布到文件夹......
  • 前后端分离架构:Web 实现前后端分离,前后端解耦
    一、前言”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦。并且前后端分离会为以后的大型分布式架构、弹性计算架......
  • go 实现一个简单的web服务
    packagemainimport( "fmt" "log" "net/http" "strings")funcsayhelloName(whttp.ResponseWriter,r*http.Request){ r.ParseForm()//解析参数,默认是不会......
  • JavaWeb综合案例
    JavaWeb综合案例笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html)视频教程(P154~P163)功能列表环境搭建执行提供的下面的tb_brand.sql脚本--......
  • Redis缓存何以一枝独秀?(2) —— 聊聊Redis的数据过期、数据淘汰以及数据持久化的实现
    大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。上......
  • Java课程设计之——Web前端设计
    0、团队课程设计1、主要使用的技术HTML/CSSBootstrap5javascript/jQuery/jQuery-UIJSP2、前期调查与设计搜索引擎主要分为两个界面,主界面和搜索结果界面主界面......
  • 聊聊MongoDB中连接池、索引、事务
    大家好,我是哪吒。三分钟你将学会:MongoDB连接池的使用方式与常用参数查询五步走,能活九十九?MongoDB索引与MySQL索引有何异同?MongoDB事务与ACID什么是聚合框架?在最......
  • buuctf-web方向--ssrf+sql+dirscan
    [网鼎杯2018]Fakebook首先,扫描该网站利用dirsearch进行扫描获取robot.txt,从中发现源码备份/user.php.bak下载后可读取源码<?phpclassUserInfo{public$name......
  • 【Azure 环境】移动应用 SSO 登录AAD, MSAL的配置为Webview模式时登录页面无法加载
    问题描述移动端集成MASL登录过程中,配置文件中配置项“authorization_user_agent”使用“DEFAULT”可以正常登录,但是改为“WEBVIEW”后就无法登陆,一直处于Loading状态。参......