x32x01
  • by x32x01 ||
Jenkins is an open-source automation server used for continuous integration (CI) and continuous delivery (CD). It’s built on Java and utilizes a scripting platform for automation. Jenkins automates tasks such as building, testing, and deployment in the software development lifecycle. This automation accelerates development cycles, enhances code quality, and streamlines releases. Key features include CI/CD pipelines, automated testing, integration with version control systems, extensibility via plugins, and robust monitoring and reporting capabilities.

Table of Contents
  • Lab Setup
  • Installation
  • Configuration
  • Enumeration
  • Exploitation using Metasploit Framework
  • Exploiting Manually (Reverse Shell)
  • Executing Shell Commands Directly
  • Conclusion
Lab Setup
In this article, we are going to setup the Jenkins server on the ubuntu machine and obtain the remote code execution. Following are the machines:
Target Machine: Ubuntu (192.168.1.4)
Attacker Machine: Kali Linux (192.168.1.7)

Installation
For Jenkins to function, it necessitates the Java Runtime Environment (JRE). In this guide, we’ll utilize OpenJDK to establish the Java environment. OpenJDK’s development kit incorporates JRE within its framework.
Code:
You Can, Log in or Register To View Codes Content !
001.png
At times, the default Ubuntu repository may lack the latest Jenkins version. Therefore, it is suggested opting for the project-maintained repository to access the most recent features and patches.

To integrate the Jenkins repository into the Ubuntu system, adhere to the following:

Begin by importing the GPG key to ensure package integrity.
Code:
You Can, Log in or Register To View Codes Content !
002.png
Following that, incorporate the Jenkins repository and append the authentication key to the source list using the command provided below:
Code:
You Can, Log in or Register To View Codes Content !
003.png
Now we can proceed with the Jenkins installation in the ubuntu machine.
Code:
You Can, Log in or Register To View Codes Content !
004.png
After installation is complete, Jenkins can be started using the following command:
Code:
You Can, Log in or Register To View Codes Content !

Status can be checked using the following command:
Code:
You Can, Log in or Register To View Codes Content !
005.png

Configuration
Post installation, Jenkins can be configured to run smoothly. By checking the service running on port 8080, the Jenkins server requires an Administrator password.
006.png
Password can be obtained by reading the content of the initialAdminPassword file.
Code:
You Can, Log in or Register To View Codes Content !
007.png
Select the Install suggested plugins to Customize Jenkins and proceed with the installation.
008.png
The final step requires the creation of First Admin User username and password. Here we are using the username as raj and password as 123.
009.png
Finally, entering the URL to access the Jenkins Server. The URL can be entered as
You Can, Log in or Register To View URLs Content !
as we want to setup the server on the ubuntu machine.
010.png

Enumeration​

After successfully installing and configuring the Jenkins server, we can start the exploitation using the kali machine. Starting with the enumeration, since at port 8080 the Jenkins Server is running in the ubuntu machine hence checking the port 8080. At port 8080 there is a Jenkins login page which requires credentials.
011.png

Exploitation using Metasploit Framework:​

Since the login page requires credentials, hence we can use the auxiliary available in the Metasploit framework to check for the valid username and password to login. The auxiliary which we will be using will require a username file and a password file.

It can be noted that for CTF scenarios the username file can be used as the common usernames list (
You Can, Log in or Register To View URLs Content !
) and password file can be used as rockyou.txt. However, here we are using a custom dictionary to make the scanning easier. The following commands can be used inside Metasploit framework:
Code:
You Can, Log in or Register To View Codes Content !
012.png
Observe that the username and password have been enumerated successfully. After the username and password have been enumerated, now its time use them to exploit the target. The exploit which can be used here is the exploit/multi/http/Jenkins_script_console. Following commands can be used inside Metasploit framework to run the exploit:
Code:
You Can, Log in or Register To View Codes Content !
013.png
Observe that the reverse shell has been obtained after the exploit has been successfully executed.

Exploiting Manually (Reverse Shell)​

To exploit manually, we require the username and password of the Jenkins Console. Assuming here that the attacker has already found the credentials either by brute forcing or through any other method, successful login into the console can be performed.

After login using the previously found credentials (raj:123) from the auxiliary. The Manage Jenkins functionality can be accessed which contains a Script Console functionality.
014.png
In Jenkins, Groovy serves as the main scripting language for defining jobs and pipelines. Groovy, being dynamic and operating on the Java Virtual Machine (JVM), seamlessly integrates with Jenkins, which is predominantly Java-based. Therefore, we are going to use the groovy reverse shell script to obtain the reverse shell. The command for the groovy reverse shell can be obtained from the following URL:
You Can, Log in or Register To View URLs Content !
and selecting the Groovy script payload.
015.png
Now, using the above groovy reverse shell script in the Jenkins script console. Before running the script make sure to start the netcat listener at port 443 inside kali machine using the following command:
Code:
You Can, Log in or Register To View Codes Content !
016.png
Finally, the reverse shell is obtained at port 443 after running the above groovy script.
017.png
An alternate way to get the reverse shell can be by running the following script in the script console:
Code:
You Can, Log in or Register To View Codes Content !
Make sure to start the listener at port 443 before running the script.
018.png
Observe that the reverse shell is obtained at port 443 after the execution of the script.
019.png

Executing Shell Commands Directly​

There are cases where we don’t have a listener to take the reverse shell. In those cases, we can directly run the script and obtain the output of the code in the Result window.

The following code is used to get the output of the system commands:
Code:
You Can, Log in or Register To View Codes Content !

Observe that after running the script the output can be seen directly in the Result window.
020.png
A similar code which can be used to get the command output in the Result window can be:
Code:
You Can, Log in or Register To View Codes Content !
Observe that after running the script the output can be seen directly in the Result window.
021.png
Conclusion
In summary, the possibility of using Jenkins servers to gain a reverse shell emphasizes the crucial need for strong security practices. Whether due to compromised logins or no authentication at all, the vulnerability of Jenkins servers shows why we must take security seriously. It’s essential for organizations to enforce strict access rules, conduct regular security checks, and promptly update systems to reduce the chances of unauthorized access and misuse.
 

Similar Threads

x32x01
Replies
0
Views
173
x32x01
x32x01
x32x01
  • x32x01
Replies
0
Views
91
x32x01
x32x01
x32x01
  • x32x01
Replies
0
Views
97
x32x01
x32x01
x32x01
  • x32x01
Replies
0
Views
101
x32x01
x32x01
x32x01
Replies
0
Views
98
x32x01
x32x01
TAGs: Tags
penetration testing

Register & Login Faster

Forgot your password?

Latest Resources

Forum Statistics

Threads
507
Messages
508
Members
42
Latest Member
Mustafa123
Back
Top