分类 代码审计 下的文章 - Yu4xr安全博客
首页
关于
Search
1
欢迎使用 Typecho
112 阅读
2
text
97 阅读
3
java基础漏洞代码审计
3 阅读
默认分类
ctf
src漏洞挖掘
内网渗透
代码审计
登录
/
注册
找到
1
篇与
代码审计
相关的结果
2024-11-20
java基础漏洞代码审计
java基础漏洞代码审计 图片 图片 配置信息了解 查看配置文件: ├── pom.xml # Maven项目配置主要是组件的版本信息 ├── src/main/resources/conf(这个目录可以没有)/*.properties# 主配置目录,一些组件的配置的信息入mybatis,shiro,log4j,springboot(application.propreties有数据库的配置信息还有启动路劲端口信息,日志配置信息) ├── src/main/resources/templates 模板文件 ├── src/main/resources/mappers mybatis的xml文件,主要用于定义sql语句。 ├── src/main/java/包名(cn.gson.oasys)/controller 处理http请求 ├── src/main/java/包名(cn.gson.oasys)/services 具体功能的逻辑代码的实现 ├── src/main/java/包名(cn.gson.oasys)/model 定义处理数据类型 ├── src/main/java/包名(cn.gson.oasys)/common 公共资源 ├── formValid/ # 表单验证相关 └── Interceptor/ # 请求拦截器 └── src/main/webapp/WEB-INF/ # Web配置 └── web.xml # Web主配置 Web 应用的主要配置文件,定义了应用的Servlet、过滤器、监听器sql注入 1.jdbc 字符串拼接: + 号拼接,StringBuilder.append(),String.concat() 搜append(,concat(2.mybtis mybatis定义sql语句的地方位于 /mapper/*.xml文件中 安全写法:使用#{} (预编译参数) 不安全写法使用${} 搜 ${3.容易产生注入的地方 不能使用预编译容易产生sql注入的地方:1.模糊查询like语句后面,2.order by排序 ,3.IN子句,4.HAVING子句 这些后面进行sql注入可能会受到限制 这些地方在使用sqlmap的时候可能要使用下面参数 sqlmap --level 5 --risk 3 报错注入payload: 1 and (SELECT updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)) 1 and updatexml(1,concat(0x7e,(database()),0x7e),1) ?orderColumn=1 AND EXTRACTVALUE(1040,CONCAT(0x5c,0x7178766b71,(SELECT (ELT(1040=1040,1))),0x717a767871))4.案例 案例一:jfinal_cms-4.5.0 从pom.xml发现未使用数据库框架采用的mysql搜索append(:在文件中搜索发现多处都存在sql注入 图片 随便点击一个发现/admin/concat/路由对应的list方法存在注入 图片 对应前台的查询功能: 图片 sqlmap梭哈 其他参数也存在sql注入 Parameter: attr.name (POST) Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause (subquery - comment) Payload: form.orderColumn=&form.orderAsc=&attr.name=1' AND 7388=(SELECT (CASE WHEN (7388=7388) THEN 7388 ELSE (SELECT 2007 UNION SELECT 6422) END))-- -&totalRecords=1&pageNo=1&pageSize=20&length=10&orderBy=1'案例二mybatis:oa_system 从pom.xml中发现了mybatis框架 sql的语句定义在/reSources/mappers/*.xml中,发现不安全写法 图片 从后往前推 ${baseKey}->sortMyNotice->sortMyNotice->informListPaging() ${pinyin}->allDirector->outaddresspaging()路由触发方法/informListPaging,参数basekey 路由触发方法/outaddresspaging,参数alph python sqlmap.py -r a.txt --batch --risk=3 --level=5案例三mybatis:RuoYi-v4.6.0 从依赖库中发现了mybatis 图片 发现不安全写法 图片 从后往前推: ${ancestors}->updateDeptStatus->updateParentDeptStatus->updateDept->editSave()对应功能点部门编辑 图片 触发方法/system/dept/edit 参数:ancestors 图片 文件类的漏洞 // 文件操作 new FileInputStream( new FileOutputStream( new File( FileUtils. IOUtils. // 文件上传 MultipartFile file.getOriginalFilename( file.transferTo( // 文件下载 response.setContentType("application/octet-stream") getFile download // 目录操作 .mkdirs( .createNewFile(1.优先搜索: new FileInputStream(2.案例 案例1-文件上传-Inxedu 图片 对应代码段 图片 上传jspx绕过检测 路由地址: POST /inxedu_war/image/gok4?fileType=jspx,jpg,gif,png,jpeg¶m=temp图片 案例2-配合过滤器绕过进后台进行上传-Tmall 只要匹配到url包含/admin/login就通过,配合../进行绕过验证 图片 后台存在文件上传 图片 根据路由找到代码段 发现未经过任何过滤 图片 图片 案例3-文件下载-Ruoyi 搜:FileInputStream( writeBytes->resourceDownload->resource跟踪出路由:/common/download/resource?resource=/profile/../RuoYi-v4.5.0/ruoyi-admin/src/main/resources/application.yml 图片 必须包含:profile再../绕过 案例4-文件读取-Oasys 搜:new FileInputStream( image->f.getPath()->path->startpath图片 检测到2个../../会报错,但是一个../顺利执行,页面源码中对url中"/image"去除,所以可以嵌套../来实现路劲穿越读取flag ?path=/image/../image/../image/../image/../image/../image/../image/../image/../image/flag.txt 未授权访问 图片 1.鉴权方法: 1.Interceptor拦截器 src/main/java/包名/interceptor 2.filter过滤器 src/main/java/包名/filter 3.shiro框架 src/main/resource/** 1.shiro版本自身漏洞绕过 CVE-2020-1957 客户端请求URL: /xxx/..;/admin/ Shrio 内部处理得到校验URL为 /xxxx/..,校验通过 SpringBoot 处理 /xxx/..;/admin/ , 最终请求 /admin/, 成功访问了后台请求。 CVE-2020-11989 客户端请求URL: /;/test/admin/page Shrio 内部处理得到校验URL为/,校验通过 SpringBoot最终请求 /admin/page, 成功访问了后台请求。 CVE-2020-13933 客户端请求URL:/admin/;page Shrio 内部处理得到校验URL为/admin/,校验通过 SpringBoot最终请求 /admin/;page, 成功访问了后台请求。2.shiro配置不当 配置了允许匿名访问 tumo.shiro.anon_url=/comment/** DELETE /comment/1 任意文件删除4.jwt 采取默认key SecretKey0123456789012345678901234567890123456789012345678901234567892.绕过手法 1.分号;处理 tomcat会自动去除掉;后面的字符比如 /;a.png/admin==/admin /admin/;.png==/admin /admin/;.js==/admin /admin/;.css==/admin2.斜杆/处理 tomcat会自动处理多余的/比如 /////admin==/admin3../和../ tomcat会自动处理掉多的./ /;a.png/admin==/admin4.总结 黑名单绕过以/admin开头可以尝试 /;a.png/admin==/admin /////admin==/admin /;a.png/admin==/admin白名单匹配png,css,js结尾的文件放行可以尝试 /admin/;.png==/admin /admin/;.js==/admin /admin/;.css==/admin /user/list/;.css?search=%7B%22userName%22%3A%22%22%2C%22loginName%22%3A%22%22%7D¤tPage=1&pageSize=10目录穿越../ /..;abc/实现跨目录,常用在../被禁用的场景下白名单检测url中有js/css/png/login.html放行,则可以尝试目录穿越 /a.js/../account/getAccount /index.html/../account/getAccount3.案例 案例一:NewbeeMall使用Interceptor拦截器进行身份认证 图片 直接绕过:/admin/;.js 图片 使用Filter过滤器进行鉴权 案例二:华夏ERP-使用过滤器进行鉴权 图片 url中包含login.html,register.html就通过 图片 案例三-Tumo-Shiro做验证 shiro配置不当 tumo.shiro.anon_url=\ /login,/logout,/register,\ /,/about,/p/**,/links,/comment/**,/link/list,/article/list,\ /css/**,/js/**,/img/**可以访问/comment及comment后面任意路径如/comment/1 图片 delete方法删除 图片 ssti模板注入 图片 对应功能点:模板管理 利用条件:可控变量(传参,sql注入) 利用poc:https://github.com/vladko312/SSTImap JavaEE审计-CheckList https://mp.weixin.qq.com/s/Y90mGgCqzjj0T1NX9E5wDw https://mp.weixin.qq.com/s/COXCjMItvrcOCNcqEfbmDg
代码审计
admin
昨天
0
3
2
易航博客