小程序开发资讯 Java 代码审计常用罅隙回来

开发小程序小程序公司

你的位置:开发小程序小程序公司 > 联系我们 > 小程序开发资讯 Java 代码审计常用罅隙回来
小程序开发资讯 Java 代码审计常用罅隙回来
发布日期:2024-09-28 11:26    点击次数:129
免责声明:本文所触及的任何本事、信息或器具,仅供学习和参考之用。请勿诓骗本文提供的信息从事任何违规行径或不妥行径。任何因使用本文所提供的信息或器具而导致的亏本、成果或不良影响,均由使用者个东谈主承担株连,与本文作家无关。作家不合任何因使用本文信息或器具而产生的亏本或成果承担任何株连。使用本文所提供的信息或器具即视为得意本免责声明,并承诺投降关联法律限定停战德法度。1.1审计措施回来主要代码审计措施是追踪用户输入数据和敏锐函数参数回溯:追踪用户的输入数据, 判断数据插足的每一个代码逻辑是否有可诓骗的点, 此处的代码逻辑 可以是一个函数,或者是条小小的条目判断语句。敏锐函数参数回溯, 字据敏锐函数, 逆向追踪参数传递的过程。这个措施是最高效, 最常用 的措施。大大批罅隙的产生是因为函数的使用不妥导致的, 只消找到这些函数, 就大要快速 挖掘念念要的罅隙。以下是基于要津词审计手段回来:在搜索时要防卫是否为统共这个词单词, 以及小写敏锐这些竖立罅隙称呼要津词密码硬编码、密码明文存储password 、pass 、jdbcXSSgetParamter 、<%=、param.SQL 注入Select 、Dao  、from  、delete  、update 、insert任性文献下载download  、fileName  、filePath、write 、getFile 、getWriter任性文献删除Delete 、deleteFile 、fileName  、filePath文献上传Upload 、write 、fileName  、filePath号召注入getRuntime 、exec 、cmd 、shell缓冲区溢出strcpy,strcat,scanf,memcpy,memmove,memeccpyGetc(),fgetc(),getchar;read,printfXML 注入DocumentBuilder 、XMLStreamReader 、SAXBuilder 、SAXParserSAXReader  、XMLReaderSAXSource  、TransformerFactory  、SAXTransformerFactory  、 SchemaFactory反序列化罅隙ObjectInputStream.readObject、ObjectInputStream.readUnshared 、XMLDecoder.readObject   Yaml.load  、 XStream.fromXML  、 ObjectMapper.readValue 、 JSON.parseObjecturl 跳转sendRedirect 、setHeader 、forward不安全组件通晓activity 、 Broadcast   Receiver 、Content   Provider 、Service 、 inter-filter日记纪录敏锐信息log log.info logger.info代码实行eval 、system、exec2.1可基于要津词审计的罅隙2.1.1 密码硬编码审计措施密码硬编码最容易找,径直用 Sublime Text 大开名目目次,然后按 Ctrl + Shift + F  进行全局 搜索 password  要津词:

图片小程序开发资讯

图片

2.1.2 反射型 XSS审计措施: 反射型 XSS 一般 fortify 一般都能扫描出来如若是手工找,可全局搜索以下要津词getParamter<%=param.罅隙代码示例:1.    EL 抒发式输出肯求参数:

图片

图片

代码在 170 行和 305 行处获得肯求参数中的 groupId 值,在未经检验参数正当性的情况 下输出在 JavaScript 代码中,存在反射型 XSS 罅隙。2.    输出 getParamter 获得的参数

图片

然后在 224 行打印到如下的 js 代码中:

图片

2.1.3 存储型 XSS审计措施: 措施有主要有两种:1.    全局搜索数据库的插入语句(要津词: insert,save,update),然后找到该插入语句所属的方 法名如(insertUser()),然后全局搜索该措施在何处被调用, 一层层的追踪。直到 getParamter()措施获得肯求参数的方位罢手,如若莫得全局 XSS 过滤器,追踪的统共这个词流 程都莫得对获得的参数过滤, 则存在存储型 XSS。

图片

图片

2.    从 getParamter   要津词初始 ,追踪肯求参数,直到插入数据库的语句,如若中间莫得过 滤参数,则存在存储型 XSS。

图片

2.1.4SQL 注入审计措施:SQL 注入一般 fortify 一般都能扫描出来手动找的话,一般径直搜索 select 、update 、delete 、insert  要津词就会有收货如若 sql 语句中有出现+ append 、 $() #  等字眼, 如若莫得确立 SQL 过滤文献, 则判断存在 SQL 注入罅隙

图片

当找到某个变量要津词有 SQL  注入罅隙时,还可以径直全局搜索阿谁要津词找出肖似罅隙 的文献,上头中可以径直全局搜索 tableName 要津词:

图片

要查找阿谁页面调用到含有罅隙的代码,就要追踪措施的调用栈。以上头的注入点 tableName 为例:双击大开该文献,然后检讨该变量所在函数:

图片

发现该函数对应的 URL 为/lookOverCubeFile  ,对应的功能为检讨模子任务生成的文献。2.1.5 任性文献下载审计措施: 全局搜索以下要津词fileNamefilePathgetFilegetWriter罅隙示例:

图片

代码在 downloadFile()函数中获得肯求参数中的 affixalName 的值,然后赋值给 FileName变量,接着在 196 行处通过拼接字符串赋值给 downPath 变量,然后在 198 行处调用download 函数并把 downPath 的值传进函数, download 函数的代码如下:

图片

图片

download 函数把 filePath 处的文献写到 http 反应中,在统共这个词经由中并莫得对文献名的正当性进行检验,存在职意文献下载罅隙, 如通过把 affixalName 的值竖立为../../../WEB-INF/web.xml 可以下载网站的 web.xml 文献。2.1.6 任性文献删除审计措施: 任性文献删除罅隙搜索以下要津词可以找到:delete, deleteFile,fileName ,filePath罅隙案例:

图片

代码在 41 行获得 fileName 的值,在 44 行处调用 ds.deleteFile()函数删除文献,该函数的代码如下:

图片

在统共这个词经由中并莫得对文献名的正当性进行检验,存在职意文献删除罅隙,如通过把fileName 的值竖立为../WEB-INF/web.xml 可以删除网站的 web.xml 文献。2.1.7 文献上传审计措施:文献上传可以搜索以下要津词: (需防卫有莫得确立文献上传白名单)upload ,write,fileName ,filePath在检讨时,主要判断是否有检验后缀名, 同期要检讨确立文献是否有竖立白名单或者黑名单, 像底下这种是检验了的:

图片

底下的这种没检验:List<FileItem> fileItems = servletFileUpload.parseRequest(request); for (int i = 0; i < fileItems.size(); ++i) {FileItem fi = (FileItem) fileItems.get(i);String strFileName = fi.getName();if (strFileName != null && !''.endsWith(strFileName)) {String fileName = opId + '_' + getTimeSequence() + '.'+ getFileNameExtension(strFileName);String diskFileName = path + fileName;File file = new File(diskFileName);if (file.exists()) {file.delete();}fi.write(new File(diskFileName));resultArrayNode.add(fileName);......private String getFileNameExtension(String fullFileName) { if (fullFileName == null) {return null;}int pos = fullFileName.lastIndexOf('.');if (pos != -1) {return        fullFileName.substring(pos        +        1,fullFileName.length());} else {return null;}}2.1.8 号召注入审计措施: 可以搜索以下要津词:getRuntime,exec,cmd,shell

图片

在第 205 行中, 通过拼接传过来的 ip 值来实行号召。如若 ip 值通过外部传入, 则可以构造以下的 ip 值来实行 net user 号召:127.0.0.1&&net user2.1.9 缓冲区溢出审计措施: 主要通过搜索要津词定位, 再分析高下文可搜索以下要津字:strcpy,strcat,scanf,memcpy,memmove,memeccpy Getc(),fgetc(),getchar;read,printf 罅隙示例:文献\kt\frame\public\tool\socket_repeater\mysocket.h 中第 177 行,这里的的参数hostname 拷贝到 m_hostname,具体如下图所示:

图片

m_hostname 的大小为 MAXNAME:

图片

不时看,可以看到大小为 255

图片

如若传入的长度比 255 要大,小程序开发公司就会酿成缓冲区溢出。2.1.10XML 注入审计措施:XML 清楚一般在导入确立、数据传输接口等场景可能会用到, 可通过搜索以下要津字定位: DocumentBuilder 、XMLStreamReader 、SAXBuilder 、SAXParser 、SAXReader  、XMLReader、SAXSource  、TransformerFactory  、SAXTransformerFactory  、SchemaFactory触及到 XML 文献管制的场景可属意下 XML 清楚器是否禁用外部实体,从而判断是否存在 XXE 罅隙示例:在代码 6 行处、获得 DOM 清楚器, 清楚 XML  文档的输入流, 得到一个 Document

图片

如若莫得禁用 DTD 则存在 XXE 罅隙,以下代码为 XXE 看重代码

图片

2.1.11  日记纪录敏锐信息审计措施:通过搜索要津词 log.info logger.info 来进行定位在SFtpOperate.java文献中, 代码134行处,径直将用户名密码纪录在日记中

图片

2.1.12URL 跳转审计措施: 通过搜索以下要津词定位:sendRedirect 、setHeader 、forward需防卫有莫得确立 url 跳转白名单罅隙示例:以下代码中 40 行处只判断 site 仅仅否为空, 莫得对 url 进行判断是否为本站 url,导致了 url 跳转罅隙

图片

2.1.13 敏锐信息露馅及额外管制审计措施: 检讨确立文献是否确立斡旋额外页面, 如若有则不存在此罅隙, 如若莫得再通过搜索以下要津词搜索定位,Getmessage 、exception罅隙代码示例:在以下文献中代码 89 行处打印出要领发生极度时的具体信息

图片

2.1.14 反序列化罅隙审计措施:Java 要领使用 ObjectInputStream 对象的 readObject 措施将反序列化数据退换为 java 对象。 但当输入的反序列化的数据可被用户逼迫,那么袭击者即可通过构造坏心输入, 让反序列化 产生非预期的对象, 在此过程中实行构造的任性代码。反序列化操作一般在导入模版文献、蚁合通讯、数据传输、日记形势化存储、对象数据落磁 盘或 DB  存储等业务场景,在代码审计时可要点体恤一些反序列化操作函数并判断输入是否 可控,如下:ObjectInputStream.readObjectObjectInputStream.readUnsharedXMLDecoder.readObjectYaml.loadXStream.fromXMLObjectMapper.readValueJSON.parseObject罅隙示例:以下代码中, 要领读取输入流并将其反序列化为对象。此时可检讨名目工程中是否引入可利 用的 commons-collections 3.1 、commons-fileupload  1.3.1 等级三方库,即可构造特定反序列 化对象已毕任性代码实行。

图片

2.1.15 不安全组件通晓审计措施:通过检讨确立文献 AndroidManifest.xml,检讨<inter-filter>属性有莫得确立 falseAndriodManifest.xml 文献中,代码 24 行处 activity 组件添加<intent-filter>属性,莫得确立 false, 默许组件可被导出

图片

3.1其他罅隙审计措施3.1.1CSRF审计措施:通过检讨确立文献有莫得确立 csrf 全局过滤器,如若莫得则要点看每个操作前有 莫得添加 token 的防护机制在 Smpkpiappealcontroller.java 中 200 处,径直用用 ids 逼迫删除操作,而莫得添加防csrf 的随即 token 考证检验, 存在 csrf 罅隙。

图片

Java/main/com/venustech/tsoc/cupid/smp/kpi/dao/smpkpideclardao.java 517 行, 对传入的 ids 进行删除操作。

图片

3.1.2Struts2 而已代码实行罅隙审计措施: 检讨 struts 插件的版块信息是否为罅隙版块罅隙版块查询网址: https://www.exploit-db.com/3.1.3 越权操作审计措施:要点体恤用户操作肯求时检讨是否有对现时登陆用户权限作念校验从而笃定是否存 在罅隙,有些厂商会使用一些主流的权限框架,举例 shiro ,spring security 等框架,那么需要 要点体恤框架委果立文献以及已毕措施罅隙示例:在以下文献中弃取了 shiro 框架进行权限逼迫, 在代码 58-72 行处为逼迫观测旅途的权限设 置, 51-55 行处为对 admin 旅途下观测限制, 只消 SysyUserFilter 竖立了 isAccessAllowed措施,其他过滤均莫得

图片

SysUserFilter 中 isAccessAllowed 具体已毕措施如下,90-93 行处莫得对是否为现时用户进行判断,导致了越权

图片

其他过滤文献均只竖立了 onAccessDaniad()措施

图片

如若莫得使用框架的话,就要防卫每个操作是否有权限代码 7 行处获得 session 里的 username,只判断了 username 是不是为空,如若在截取数据包的时分将 username 再重新赋一个值就有可能酿成越权罅隙。

图片

以这个年度干事用度编制功能为例,测试一下, 代码如图所示:

图片

图片

3.1.4 会话超时竖立审计措施:Javaweb 应用会话超时竖立一般有俩种措施:一是在确立文献 web.xml 竖立

图片

二是通过 java 代码竖立

图片

3.1.5 敏锐数据弱加密审计措施:敏锐数据弱加密主要看数据传输中的加密措施, 一般写在器具类 util  中以下文献中为 base64 编码措施

图片

4.1器具的使用1.    Fortify1.1  新建扫描1.1.1 号召行自界说扫描目次:如若念念自界说 Fortify 扫描的目次的话,底下号召比拟便捷:sourceanalyzer -scan -cp 'lib/*.jar' 'src/**/*.java' 'web/**/*.jsp' -f result.fpr-cp  指定类库的旅途, 如若莫得就毋庸这个选项'src/**/*.java' 'web/**/*.jsp'  这两个参数指定扫描 src  目次下的统共 java 文献和 web  目次中的统共 jsp 文献-f 指定扫描末端的输出文献为 result.fpr,扫描完后双击就可以通过 Fortity 检讨了。1.1.2  图形化界面

图片

图片

图片

1.2  检讨末端

图片

罅隙列表:

图片

罅隙先容:Details

图片

软件开发罅隙建立提出:Recommendations

图片

罅隙追踪图:Diagram

图片

2.    Sublime Text2.1  大开名目相应目次:

图片

2.2  全局搜索Ctrl + Shift + F  全局搜索

图片

红色数值代表偏热,与实际数据偏差越大说明热度越高。

作为乐弈场会员赛的传统,也是更好的为会员们搭建起交流的桥梁,乐弈场董事长杨乐涛先生主持了本次的赛前交流会,并在现场为大家逐一介绍各位会员,他们有从事金融、科技、文化、教育乃至企业管理等各行各业的精英,展现了围棋跨越职业界限的魅力。

上头红框的几个图标可以竖立是否大小写敏锐, 是否搜索统共这个词单词。3.    JD-GUI没源码时, 要分析 jar 包或者 class 文献, 就要用到 JD-GUI。径直拖动某个 jar 或者 class 文献进 jd-gui 就可以大开了,然后搜索要津词审计:

图片

图片

把那些勾都勾上搜索。4.    文献浏览器Windows  自带的文献浏览器可以便捷地搜索某个文献或者 java,jsp 文献:

图片

本体中,都是 Fortify 、Sublime Text 和文献浏览器都集沿路用最高效。非原创,单纯看着很可以念念共享一下,如有侵权请相关我立马删除。疏通群告白 本站仅提供存储干事,统共内容均由用户发布,如发现存害或侵权内容,请点击举报。

Powered by 开发小程序小程序公司 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2013-2024 云迈科技 版权所有