0x1. Base64的坑

在JDK8版本里面,Java自带的java.util.Base64是根据RFC4648和RFC2045实现的,但是JDK7里面的sun.misc.BASE64Encoder,是RFC1521实现的。
这会导致java.util.Base64解码JDK7版本的Base64发生错误:Illegal base64 character

可以使用shiro的Base64解决,增加maven依赖:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.6.0</version>
</dependency>

PS: chybeta师傅在漏洞百出里面提出过,Shiro在Base64解码的时候会丢弃非Base64字符串,所以可以利用这一点绕过WAF防火墙,比如填充垃圾字符串。

0x2. RSA公私钥

Python加解密的时候,使用的是PKCS#1格式的公私钥:

# 公钥
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
  
# 私钥
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

但是在Java里面需要使用PKCS#8格式:

# 公钥
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
  
# 私钥
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

PKCS#1私钥转换为PKCS#8格式: openssl pkcs8 -topk8 -inform PEM -in rsa_private.pem -outform pem -nocrypt -out pkcs8.pem

RSA根据PKCS#8私钥生成公钥: openssl rsa -in pkcs8.pem -out rsa_public.pem -pubout

0x3. 插件打包

在插件开发完成之后,如果依赖有第三方的Jar包,需要把第三方的依赖也打包进去,修改pom.xml文件的build模块,加入maven的插件配置:

<build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <configuration>
                   <source>8</source>
                   <target>8</target>
               </configuration>
           </plugin>
           <plugin>
               <artifactId>maven-assembly-plugin</artifactId>
               <configuration>
                   <archive>
                       <manifest>
                           <mainClass>burp.BurpExtender</mainClass>
                       </manifest>
                   </archive>
                   <descriptorRefs>
                       <descriptorRef>jar-with-dependencies</descriptorRef>
                   </descriptorRefs>
               </configuration>
           </plugin>
       </plugins>
   </build>

然后打包插件:

mvn clean 
mvn clean compile assembly:single  

0x4. 插件调试

在开发插件的时候,如果需要对插件实时调试,可以选择先在官网下载安装社区版本的BurpSuite,然后启动Burpsuite:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community.jar

然后新增远程调试:

⬆︎TOP