暴力的攻击-Dos

Posted by bfpiaoran on March 30, 2021

==说起拒绝服务有些人会把DDoS,学术叫分布式拒绝服务,攻击是通过大规模互联网流量淹没目标服务器或其周边基础设施,这玩意无解 和技术没啥太大关系,只要肉鸡多你就牛批,之前游戏群里有人还装x说这个学起来半年就会,这玩意还要学? 咳咳… 不吐槽了,接着说。还有一种叫cc攻击,公司前几天就被cc了,CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽。 这个咱也不多说差不多,只不过层面不一样。cc有意思得地方其实可以关联上一个安全问题来放大,这个问题有些模棱两可,安全被不背锅都行。这个就叫做缓存击穿。 何谓缓存击穿,顾名思义,很多一些静态配置啊,public、open接口,有时候会从数据库中查询大量的数据,而且这种接口查询QPS也大,如果一直查,对数据库就会造成压力,于是大家伙想了个办法 不让查mysql,这个数据这段时间如果查过了,就放到redis或者什么里,再次查询的时候直接从缓存里拿就好了,这样降低了数据库的压力,而且达到了指标。那么击穿就好理解了,通过参数啊,并发啊 这些绕过了缓存策略,实现了一直查询数据库的请求,这样大的查询直接把数据库压垮了,程序也就崩了。

说了这么多其实今天主要说的不是这个,想说一些web层的拒绝服务其实有师傅已经总结了 Web层面上的那些拒绝服务攻击 其中有些常见的有些不常见,比如生成验证码,我平时也没遇到过 ,额思路有点中断,还特意查了下用户中心的代码,emmm 传大小不存在的。接着说回来Redos挺多的不过现在没有了,我们的老QA真的牛批,之前效验邮箱的正则有问题 是这样写的

([a-z0-9A-Z]+[-_.]*)+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$  

字母+一堆数字直接就拒绝服务了,但是qa测出来了哪知道这是安全问题,就说是bug,开发不认,就给close了,幸亏我看了一眼,而且听过这个给修复了,然后这个正则还挺多业务线 抄用户中心的,最后挨个仓库查修复的。 再有就是接口数量查询可控,这个问题吧,看怎么算,总之不是数量特别大这种我觉得问题不大,但是最好还是limit限制下吧。

说了这么多都在说大家知道的,现在说个大家不知道的,如果有人看到在自己家也找找问题应该挺多的。这个问题出现在金融类产品较多,涉及到金钱的地方大都也会出现,就是伟大的科学计数法, 因此python还出了一个rceCVE-2021-3177 科学计数法是把较大较多的数字标记成一个短位数(我这么理解),压缩了空间但是问题就出在这, 比如java的BigDecimal,好多系统会滥用这个方法导致整个服务不安全,而达到几个请求就使一个服务计算资源消耗殆尽的问题,看看这段代码

    @RequestMapping("/test")  
    public Long index(@RequestParam(name = "num") BigDecimal num) {  
        Long startTime = System.currentTimeMillis();  
        BigDecimal num1 = new BigDecimal(0.005);  
        System.out.println(num1.subtract(num));  
        Long endTime = System.currentTimeMillis();  
        Long tempTime = (endTime - startTime);  
        System.out.println(tempTime);  
        return tempTime;  
    }

表面上是接收允许科学计数法的参数 然后进行了一个计算,但没有对精度做效验,那么恶意用户完全可以传入一个极大值,比如1e1111111111 我们来看看BigDecimal最大值多少

n最大为999999999即 1e999999999 那么接近一个无穷大的值,一眼看去觉得没什么,但是真让你计算一个无穷大的值你就知道了 从图中看来 会消耗大量cpu计算资源的,那么拒绝服务轻而易举了。而光光从这事也反映出src对漏洞的态度 我挖了几家 某巴巴:以开始没认知给了100块 后来加上别的事喷了下 高危最高算上各种福利到手1.2w这样 (国内算挺高了)
某支付:以开始也是低危,后来和他们安全沟通了下全是按高危最高算的(6000一个 刷了好多)
bd云:真的垃圾 非说监控得到,直接导致核心系统业务拒绝服务的漏洞,就说是中危,垃圾,再也不碰了
某为:也是说能监控的到,但是人家也是高危认了(3000 虽然低了 但是。。。。)
某同程:和某度一个级别(500块)同一个服务,同一个漏洞不同接口,可以一个中危一个高危出来简直奇葩blacklist
说了这么多 其实吐槽是关键,在各个厂商对待这个事情上,一般主导买服务得部门,大概率不清楚ddos与dos之间的区别,进而导致觉得卖了服务就没事了, 殊不知我安全产品防的住流量,防不住开发的代码啊。防不住的是人心….