聊聊web漏洞挖掘第一期

admin 2023年1月15日01:17:25评论36 views字数 5228阅读17分25秒阅读模式

聊聊web漏洞挖掘第一期

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

模拟安全测试

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

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

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

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

聊聊web漏洞挖掘第一期

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

聊聊web漏洞挖掘第一期

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

我不会测试漏洞,我会简单看下这个网站是做什么的?这个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:

聊聊web漏洞挖掘第一期
聊聊web漏洞挖掘第一期
聊聊web漏洞挖掘第一期

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

安服的困扰?

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

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

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

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

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

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

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

5.完善你的wordlist

。。。。。。

读懂自己

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

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

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

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

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

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

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

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

(5)不要停止学习,所有的tricks,都能追根到原理。多做代码审计,不限语言。尤其是逻辑类的代码审计,多看案例。

。。。。。


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

漏洞挖掘目标选择

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

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

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

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

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

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

原文:https://www.cnblogs.com/piaomiaohongchen/p/17044530.html

原文始发于微信公众号(迪哥讲事):聊聊web漏洞挖掘第一期

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月15日01:17:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   聊聊web漏洞挖掘第一期http://cn-sec.com/archives/1518143.html

发表评论

匿名网友 填写信息