第41天-JAVA安全-目录遍历访问控制XSS等安全问题

前言

注重代码分析,熟悉 javaweb 开发结构,掌握 javaweb 代码审计流程,其次才是相关漏洞解释(因前期漏洞原理已基本讲解完毕),通过本次直播大家务必学会分析相关代码路径,结构,框架等知识点。

思维导图

在这里插入图片描述

知识点

#文件上传配合目录遍历覆盖-文件自定义文件存储地址-基于用户名存储问题
#代码解析及框架源码追踪:
第一关:
Payload: ../x
第二关:
Payload: ....//x
#不安全登录 Insecure Login-基于前端认证
#熟悉代码结构及硕源代码文件
#访问控制对象-逻辑越权
#代码分析过关逻辑
枚举用户参数对应数据库的其他数据信息
role,userid
通过参数值构造 URL 获取用户更多的信息
WebGoat/IDOR/profile/2342384
**#XSS 跨站
代码分析结合页面解释过关
#核心知识点:Java 代码分析 === Apk_App 分析
模块引用(框架,自带等),路由地址,静态文件(html.js 等),简易代码理解等

演示案例:

Javaweb 代码分析-目录遍历安全问题

less-1

在这里插入图片描述

在这里插入图片描述

抓包查看路径

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

less-2

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Javaweb 代码分析-前端验证安全问题

登录

在这里插入图片描述

抓包

在这里插入图片描述

在这里插入图片描述

查看源码

在这里插入图片描述

检查输入的账号&密码是否等于CaptainJack&BlackPearl等于就返回成功,否者失败!

        return username.toString().equals("CaptainJack") && password.toString().equals("BlackPearl") ? this.success(this).build() : this.failed(this).build();

在这里插入图片描述

在这里插入图片描述

	var _0xb7f9=["\x43\x61\x70\x74\x61\x69\x6E\x4A\x61\x63\x6B","\x42\x6C\x61\x63\x6B\x50\x65\x61\x72\x6C","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x73\x65\x6E\x64"];xhttp[_0xb7f9[3]](JSON[_0xb7f9[2]]({username:_0xb7f9[0],password:_0xb7f9[1]}))

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用CaptainJack&BlackPearl登录

在这里插入图片描述

Javaweb 代码分析-逻辑越权安全问题

less-1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

String[] diffAttribs = attributes.split(",");
            return (!diffAttribs[0].toLowerCase().trim().equals("userid") || !diffAttribs[1].toLowerCase().trim().equals("role")) && (!diffAttribs[1].toLowerCase().trim().equals("userid") || !diffAttribs[0].toLowerCase().trim().equals("role")) ? this.failed(this).feedback("idor.diff.failure").build() : this.success(this).feedback("idor.diff.success").build();

可以观察到只有5个属性,只有role 和userid是隐藏未显示的属性,且代码进一步验证,输入role,userid 即可

在这里插入图片描述

less-2

在这里插入图片描述

直接抓包看看源码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

WebGoat/IDOR/profile/2342384

在这里插入图片描述

Javaweb 代码分析-XSS 跨站安全问题

在这里插入图片描述

抓包

在这里插入图片描述

看源码

在这里插入图片描述

        return answer_xss_1.toString().toLowerCase().equals("yes") ? this.success(this).build() : this.failed(this).feedback("xss.lesson1.failure").build();

直接输入yes即可

在这里插入图片描述

less-2

在这里插入图片描述

在这里插入图片描述

查看源码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ifcHJx4h-1648888636751)(image41/QQ截图20220401205204.png)]

public class CrossSiteScriptingLesson5a extends AssignmentEndpoint {
    public static final Predicate<String> XSS_PATTERN = Pattern.compile(".*<script>(console\\.log|alert)\\(.*\\);?</script>.*", 2).asMatchPredicate();
    @Autowired
    UserSessionData userSessionData;

    public CrossSiteScriptingLesson5a() {
    }

@GetMapping({"/CrossSiteScripting/attack5a"})
    @ResponseBody
    public AttackResult completed(@RequestParam Integer QTY1, @RequestParam Integer QTY2, @RequestParam Integer QTY3, @RequestParam Integer QTY4, @RequestParam String field1, @RequestParam String field2) {
        if (XSS_PATTERN.test(field2)) {
            return this.failed(this).feedback("xss-reflected-5a-failed-wrong-field").build();
        } else {
            double totalSale = (double)QTY1 * 69.99D + (double)QTY2 * 27.99D + (double)QTY3 * 1599.99D + (double)QTY4 * 299.99D;
            this.userSessionData.setValue("xss-reflected1-complete", "false");
            StringBuffer cart = new StringBuffer();
            cart.append("Thank you for shopping at WebGoat. <br />Your support is appreciated<hr />");
            cart.append("<p>We have charged credit card:" + field1 + "<br />");
            cart.append("                             ------------------- <br />");
            cart.append("                               $" + totalSale);
            if (this.userSessionData.getValue("xss-reflected1-complete") == null) {
                this.userSessionData.setValue("xss-reflected1-complete", "false");
            }

            if (XSS_PATTERN.test(field1)) {
                this.userSessionData.setValue("xss-reflected-5a-complete", "true");
                return field1.toLowerCase().contains("console.log") ? this.success(this).feedback("xss-reflected-5a-success-console").output(cart.toString()).build() : this.success(this).feedback("xss-reflected-5a-success-alert").output(cart.toString()).build();
            } else {
                this.userSessionData.setValue("xss-reflected1-complete", "false");
                return this.failed(this).feedback("xss-reflected-5a-failure").output(cart.toString()).build();
            }
        }
    }

在这里插入图片描述

继续绕过xss过滤即可

拓展-安卓 APP 反编译 JAVA 代码(审计不香吗?)

打开decompileApk.cmd,然后把apk拖进cmd界面就行。

在这里插入图片描述

在这里插入图片描述

idea查看源码(打不开的话右键添加为库)

在这里插入图片描述

apk数据提取

涉及资源:

https://pan.baidu.com/s/19-w0GeDVYvHH6yRz9cNpGw 提取码:oms7

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值