天天看点

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

演示案例:

postmapping注解_Spring注解介绍

Javaweb 路径遍历

靶场:webgoat-Path traversal(路径遍历)

路径(目录)遍历是一种漏洞,攻击者可以通过该漏洞访问或存储应用程序运行位置之外的文件和目录。这可能会导致从其他目录读取文件,以及在文件上传覆盖关键系统文件的情况下。

第一关

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

文件上传配合目录遍历 覆盖文件自定义文件存储地址-基于用户名存储问题

在此关卡中,目标是覆盖文件系统上的特定文件。当然,WebGoat 关心用户,因此您需要将文件上传到正常上传位置之外的以下位置,得知他的任务是将文件上传到webgoat指定的其他目录上

1、随便上传一个文件抓包查看:

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

2、抓包放行后,得到存储路径

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

3、可以看出是将fullName作为文件的上一目录上传,即\username\fullname\文件名

4、故我们尝试通过…/存储到上一路径

5、将fullname改为…/test

6、放行,成功

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

7、白盒审计

POST、GET、@RequestBody和@RequestParam区别

@RequestParam有三个配置参数:

required 表示是否必须,默认为 true,必须。

defaultValue 可设置请求参数的默认值。

value 为接收url的参数名(相当于key值)。

关键代码:

@ResponseBody
    public AttackResult uploadFileHandler(@RequestParam("uploadedFile") MultipartFile file, @RequestParam(value = "fullName", required = false) String fullName) {
        return super.execute(file, fullName);
    }
    
           

预防:

目录解析

springframework javaweb的spring框架,类似于php的phpthink框架

第二关

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

同样的任务,只是用了一个replace将…/去掉而已,双写即可

Payload: …//x

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

白盒审计:

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

过滤fullName中的…/一次

第三关

可知不对fullname验证

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

发现fullname赋值为什么,最终都是test

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

抓包查看,修改filename,在前面加…/

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

成功

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

第四关

这关要求找到名叫path-traversal-secret.jpg的文件。

1、先点一下show random cat picture按钮,burpsuite抓包

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

2、请求包没有什么有用的数据,放行查看响应包

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

3、而任务是想让我们尝试找到一个名为path-traversal-secret.jpg,

4、像下图这样random-picture后面增加?id=1.jpg,发送报文之后,响应404 Not Found,发现服务器查找的文件名在id的值后面加上了.jpg。所以如果要查看1.jpg的内容,应该在random-picture后面增加?id=1

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

接下来可以试试random-picture后面增加?id=path-traversal-secret

结果返回了400 Bad Request

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

再试试random-picture后面增加?id=…/path-traversal-secret

也返回了400 Bad Request,而且提示请求参数中有非法字符

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

把上述payload中的…/改为%2e%2e%2f(…/的url编码)

还是返回400 Bad Request,但是不提示有非法字符了。

那再往上一级目录看看,?id=%2e%2e%2f%2e%2e%2fpath-traversal-secret

从返回结果来看,已经找到要找的文件了。

提示用户名的SHA-512 hash就是本题的答案

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

网上搜一下SHA512在线,然后把用户名进行SHA512 hash

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

将得到的结果填入小旗子后面的输入框,submit secret即可通过本关

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

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

不安全登录 Insecure Login-基于前端认证

1、页面提示单击登录抓包

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

2、得到用户和密码,登录通过

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码
JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

1、黑盒测试查看源代码发现是js判断,关闭js即可

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

2、白盒测试,查看函数,发现有16进制,解码后是账号密码

16进制转换网页

转换前把\x去掉

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

3、白盒测试,查看submit点击的源代码

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

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

代码分析过关逻辑

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

此题目是为了说明请求返回的包里可能包含了更多的内容。此题目要求将response包返回的所有参数比界面上View Profile中显示的多的几个参数,具体如下。

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

枚举用户参数对应数据库的其他数据信息

role,userid

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

url接口

在Stage 3中知道了tom的userId是2342384。

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码
{
  "role" : 3,
  "color" : "yellow",
  "size" : "small",
  "name" : "Tom Cat",
  "userId" : "2342384"
}
           

该题目就是通过路由访问tom的配置信息,在输入框里输入WebGoat/IDOR/profile/2342384,就通过了此题目。

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

白盒测试

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

通过参数值构造 URL 获取用户更多的信息

WebGoat/IDOR/profile/2342384

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

XSS 跨站

代码分析结合页面解释过关

第2关:yes

第7关:修改card number + 绕过黑名单

JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码
JAVA 安全 - 目录遍历访问控制 XSS 等安全问题Javaweb 路径遍历Javaweb 代码分析-前端验证安全问题Javaweb 代码分析-逻辑越权安全问题Javaweb 代码分析-XSS 跨站安全问题拓展-安卓 APP 反编译 JAVA 代码

拓展-安卓 APP 反编译 JAVA 代码

#核心知识点:Java 代码分析 === Apk_App 分析

模块引用(框架,自带等),路由地址,静态文件(html.js 等),简易代码理解等