javaweb 图书管理系统完整代码_看一名Java开发人员以红队思维五分钟审计一套代码(续)...

前言

上篇文章的发布引起了很多读者的浏览,有很多读者也催更希望读到续集,作者也收获到读者的鼓励,说明这条路线对大家有帮助,是有意义的。所以,今天作者将继续阐述在审计Java代码时的思路。

概述

上篇文章所讲的SQL注入和中间件漏洞的审计,其实在大多数的情况下SQL注入是不会存在的,两方面原因。注入存在的历史太过悠久,以至于人尽皆知。2.大多数Java开发在入职面试时,考官都会将这个细节当作问题抛给开发者。所以要是靠这个漏洞,那大黑阔们估计是要饿死的。今天带来的是越权漏洞的审计,这个漏洞能拿下百分之八十的JavaWeb代码。

越权漏洞的前世今生

越权漏洞分为垂直越权和水平越权,在大多数场景中都存在水平越权,所以先跟读者讲述水平越权。

大多数功能当中,删除功能一向是水平越权的“重灾区”。开发在实现删除功能时,前端将id号传给后台,后台将此id的数据进行删除。这么想确实没什么问题,但是问题出就出在删除上。原因在于,当后台拿到id时不去判断当前id是否属于登录用户,直接将id数据进行删除,这就导致了越权漏洞的产生。

下面上代码

e2ba72d13af82b130a070e64cc07981d.pngbeed63292a1684dfbbec65541f565dd9.png

0faf45db6543df810672818b35ef81cf.png这一套删除执行链中,并没有对前端传来的id进行任何操作,直接进行删除。熟不知,在前端向后台传送id的过程中,id值被篡改修改成其他用户下存在的记录id,将其他用户的记录进行删除,这就造成了水平越权的产生。

水平越权往往被定性为低微漏洞,这里作者就要替越权发声了,从某种角度来讲,如果渗透者发现了一个这样的越权漏洞,完全可以编写一个脚本。脚本的内容为循环请求这样的接口,参数id为从1依次递增。后台执行这样的删除操作,可想而知,典型的删库。

FREEBUF平台爸爸,某处存在此水平越权。发生地点不透露,但足以说明存在率(多有得罪)。

看到这里,想必很多读者有知道了一个“获得银手镯”的方法,作者建议遇到这种漏洞自己创建一个用户进行测试即可,切勿使用这种方式扩大“战果”。此假设只是从角度的问题证明越权的危害性。

防御:这么大的漏洞为什么这么多Java开发者不去修复,存在率竟如此之高?如果读者是一名开发那么仔细阅读下文(提醒)

原因有二:1.是后端开发者完全想不到在前端向后端传值时会被篡改没太过依赖前端。(所有的前端传参必须零信任)2.如果后端拿到前端参数的id,再去查询此id是否属于当前用户,意味着还需要走一条sql,无疑是对数据库性能的又一次损耗,对开发成本的又一次增加。解铃还须系铃人,问题产生的关键就在于id,所以作者建议在生成id时不要采用从1开始依次递增的方法,采用雪花算法生成id。下面上代码

32090e80a0c0ffc122c05d25a6e0a446.png9cd4159dd4a4dfaa308da8fcdef35034.png01fa1f408a5a5aeb66072ec9385bf4b7.png这样的id有什么好处?当渗透者暴力猜解数据库进行删库操作时,此id无法被猜解,因为数据量太过庞大,此处不在赘述雪花算法。但是,此方法只能在某种程度上解决这样的问题,如果渗透者真的头铁硬试,我们毫无办法。(抬一手,留口饭吃)。

下面讲垂直越权,垂直越权完全依靠前端页面显示作为用户点击的限制,挖掘此处漏洞渗透者必须拥有高权限账号,还有一个低权限账号。使用低权限账号调用高权限才有的接口进行测试。

讲到这里,作者觉得这个漏洞大家不必挖掘,因为能产生这种漏洞不是开发者技术和逻辑的问题。完全是开发者懒的问题,懒到不想写代码。而且垂直越权大多数开发者选用Apache Shiro和springSecurity框架进行权限判定。渗透者可以更关注shiro的两个漏洞在垂直越权上。

这种漏洞除了开发者态度有问题基本不可能发生,如果渗透者发现过此类型的洞可以将开发者定性为“菜鸡”,并且拉出去“砍死一百次”。

结尾

讲到这里,关于JavaWeb审计的不需要代码基础的洞讲完了,接下来的文章当中讲述JavaWeb中的逻辑漏洞,这个区域才是Java漏洞的真正聚集地。但是意味着读者需要一定的Java功底才能继续跟进,如果读者想继续学习Java审计这一系列,请跟我一起学习Java开发吧~,我是小杨,感谢大家阅读关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爱立信数据分析解决方案抓住物联网发展机遇

爱立信在2016年1月6日至9日于美国拉斯维加斯举办的国际消费电子展(CES)上推出“用户和物联网数据分析”解决方案。该解决方案将能帮助运营商提高对用户和物联网终端的内部管理效率,同时探索跨越多个垂直领域的新型物联网应用。 用户和物联网数…

JAVA实现在面板中添加图表_Java 创建PowerPoint图表并为其添加趋势线

图表,是指将既得数据用图形的方式表示出来。在前文中我们介绍过如何使用Java程序来为Excel文档创建图表的方法。本文将通过使用Java程序来演示如何创建PowerPoint图表及为图表添加趋势线。趋势线的运用能够显示数据的变化趋势,同时能够帮助预测数据的未来…

idea设置中文界面_《英雄联盟手游》设置界面中文翻译图分享 外服汉化界面一览...

导读 英雄联盟手游目前以及正式上线了,不过现在的话是没有中文版的,只有外服,所有很多地方是看不懂的,也不明白的,这样的话就需要翻译了,具体要怎么设置会比较,相关的步骤是什么呢?下…

安卓10不支持qmc解码_官宣:安卓10已发布!21款手机已适配,小米华为率先支持...

随着今天凌晨谷歌 I/O 大会的召开,Android Q 也就是安卓10正式官宣,新版的安卓10加入了诸多新手势,从 Home 键设计上看,安卓10 的新版手势很大程度上有疑似借鉴 iOS 的手势,底部一个长条,作为 Home 用来返回…

linux系统编程之进程(七):system()函数使用【转】

本文转载自:http://www.cnblogs.com/mickole/p/3187974.html 一,system()理解 功能:system()函数调用“/bin/sh -c command”执行特定的命令,阻塞当前进程直到command命令执行完毕 原型: int system(const char *comma…

汉王云名片识别(SM)组件开发详解

大家好,最近在DeviceOne平台上做了一个汉王云名片识别的功能组件。下面把我开发过程给大家做一个分享,希望可以帮助到大家。 下面我把我的思路给大家讲解一下。1.找到我要集成的sdk,也就是汉王云名片的sdk下载(android和ios&#…

[App Store Connect帮助]八、维护您的 App(4.2)查看评分与评论

您可以查看 App 的总评分或单个顾客评论。如有必要,您可以针对某条评论报告问题。 【注】顾客可以为您的 iOS 和 macOS App 评分并撰写评论,但只能为 Apple TVOS App 评分。 必要职能:“帐户持有人”职能、“管理”职能、“App 管理”职能、“…

visio studio json工具_《产品经理入门指南》彩蛋2:别技淫原型图!你的Visio和Balsamiq Mockup入门了吗?...

温馨提示:如果你有关于产品经理方面的任何问题,欢迎关注我的微信公众号与我互动。最新的免费系统的产品经理课程《老司机带你做产品》已经推出,请关注微信公众号:iamliuwenzhi很多产品新人刚开始工作时,喜欢一拿到需求…

mysql牵引例子_MySQL学习06(事务和索引)

事务概述什么是事务事务就是将一组SQL语句放在同一批次内去执行如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行MySQL事务处理只支持InnoDB和BDB数据表类型事务的ACID原则原子性(Atomic)整个事务中的所有操作,要么全部完成,要么全部不完成&#…

android操作系统 真的吗_旋挖机培训学校真的能学会吗,旋挖钻机到底有哪些操作系统...

旋挖机培训学校真的能学会吗添加微:yywyyc 旋挖钻机到底有哪些操作系统【前言】很多使用旋挖钻机或者想要了解旋挖钻机的工程公司可能不是特别了解旋挖钻机本身的系统以及部件,本篇文章针对旋挖钻机的操作系统来给大家介绍一下,让大家了…

WebAPI 2参数绑定方法

简单类型参数 Example 1: Sending a simple parameter in the Url [RoutePrefix("api/values")] public class ValuesController : ApiController {// http://localhost:49407/api/values/example1?id2[Route("example1")][HttpGet]public string Get(int…

java怎么引入html文件路径_如何在public_html中读取文件但在域外?使用相对路径...

我正在尝试从我的(附加组件)域目录之外的目录中读取文件 . 这是我的目录结构:public_html /domain /file_read.phpfile_write.phpsensitive /file.dat虽然我能够使用“../sensitive/file.dat”写入敏感,但我无法使用相同的方法进行读取 . 有什么想法吗&a…

csv文件怎么转成excel_Java读写excel,excel转成json写入磁盘文件

pom读写excel主要的dependency<dependency> <groupId>org.apache.poigroupId> <artifactId>poiartifactId> <version>3.16version> dependency> <dependency> <groupId>org.apache.poigroupId> …

前端做CRM管理系统是做什么_代办行业的CRM客户关系管理系统应该是什么样子的?...

随着互联网的深耕细化&#xff0c;很多企业也在不断优化自己的办公方式&#xff0c;以优化企业的办公流程&#xff0c;提高企业的办事效率。因此实现办公自动化&#xff0c;或者说实现数字化办公就需要逐渐提上日程。今天给大家讲讲可以帮助代办行业实现办公自动化的产品&#…

蓝牙 sig base uuid_蓝牙模块采用陶瓷天线和PCB天线的区别

一、陶瓷天线陶瓷天线是一种适合于蓝牙设备使用的小型化天线,又分为块状陶瓷天线和多层陶瓷天线。陶瓷天线占用空间很小、性能比较好&#xff1b; 带宽窄&#xff0c;比较难做到多频段&#xff1b;有效提高主板的整合度&#xff0c;并可降低天线对ID的限制&#xff1b;需要在主…

app启动页自动跳转源码_关于移动端App启动页的策划方案

App启动页是指app在启东时需要加载必要的运行环境和配置&#xff0c;在这个过程中提示用户等待的一个过渡页面。在产品经理眼里启动页是app给予用户重要的第一印象&#xff1b;也是App最重要的黄金页面之一&#xff0c;所有用户100%都会看到的页面。启动页适合用来做以下几个事…

java 如何排查内存溢出_java 内存溢出排查

测试代码&#xff0c;如下示例&#xff1a;import java.util.ArrayList;import java.util.List;/*** Description 测试内存溢出, 启动时设置参数&#xff0c;最大堆内存为1m, 内存溢出时dump出内存文件 -Xmx1m -XX:HeapDumpOutOfMemoryError* Author luzy* Date 2018/10/5 11:0…

《企业级ios应用开发实战》一2.2 iOS框架介绍

2.2 iOS框架介绍 iOS衍生自Mac OS X的成熟内核&#xff0c;但iOS操作系统更紧凑和高效&#xff0c;支持iPhone和iPod Touch的硬件。iOS继承了Mac OS X的风格&#xff0c;包括&#xff1a;统一的OS X 内核&#xff0c;针对网络的BSD套接字&#xff0c;以及Objective-C和C/C编译器…

python的opencv 车牌识别 开源_毕节进出口车牌识别系统怎么样

毕节进出口车牌识别系统怎么样 gzheu8il毕节进出口车牌识别系统怎么样 系统拓扑图如下&#xff1a;该系统以社区中心机房为枢纽&#xff0c;有机的将智慧家居住户、社区数字化服务、物业数字化管理、社区智能化管理结合起来&#xff0c;真正的实现&#xff1a;住户与住户之间的…

java try catch陷阱_Java异常处理最佳实践及陷阱防范

原标题&#xff1a;Java异常处理最佳实践及陷阱防范出自《深夜里的程序猿》作者&#xff1a;wangzenghuang前言不管在我们的工作还是生活中&#xff0c;总会出现各种“错误”&#xff0c;各种突发的“异常”。无论我们做了多少准备&#xff0c;多少测试&#xff0c;这些异常总会…