OWASP Security Shepherd
OWASP Security Shepherd
The OWASP Security Shepherd project is a web and mobile application security training platform. Security Shepherd has been designed to foster and improve security awareness among a varied skill-set demographic. The aim of this project is to take AppSec novices or experienced engineers and sharpen their penetration testing skillset to security expert status.
The OWASP Security Shepherd project enables users to learn or to improve upon existing manual penetration testing skills. This is accomplished by presenting security risk concepts to users in lessons followed by challenges. A lesson provides a user with help in layman terms about a specific security risk, and helps them exploit a text book version of the issue. Challenges include poor security mitigations to vulnerabilities which have left room for users to exploit.
Utilizing the OWASP top ten as a challenge test bed, common security vulnerabilities can be explored and their impact on a system understood. The by-product of this challenge game is the acquired skill to harden a player's own environment from OWASP top ten security risks. The modules have been crafted to provide not only a challenge for a security novice, but security professionals as well.
Shepherd's security risks are delivered through hardened real vulnerabilities that can not be abused to compromise the application or its environment. Shepherd does not simulate security risks so that all and any attack vectors will work, ensuring a real world response.
Security Shepherd is highly configurable. System administrators can tune the project experience to present specific security risk topics or even specific Security Shepherd modules. The array of user and module configuration available allows Shepherd to be used by a single local user, by many in a competitive classroom environment or by hundreds in an online hacking competition.
An administrator user of Security Shepherd can change the layout in which the levels are presented to players. There are three options:
When Shepherd has been deployed in the CTF mode, a user can only access one uncompleted module at a time. The first module presented to the user is the easiest in Security Shepherd, which has not been marked as closed by the administrator. The levels increase slowly in difficulty and jump from one topic to another. This layout is the recommended setting when using Security Shepherd for a competitive training scenario.
When Shepherd has been deployed in the Open Floor mode, a user can access any level that is marked as open by the admin. Modules are sorted into their Security Risk Categories, and the lessons are presented first. This layout is ideal for users wishing to explore security risks.
When Shepherd has been deployed in the Tournament Mode, a user can access any level that is marked as open by the admin. Modules are sorted into difficulty bands, from least to most difficult. This layout is ideal when Shepherd is being utilised as an open application security competition.
What is Security Shepherd?
OWASP Security Shepherd provides:
Why use Security Shepherd?
The Security Shepherd project covers the following web and mobile application security topics;
Mark Denihan - [email protected]
Sean Duggan - [email protected]
Recent News and Events
The Security Shepherd project is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
The Security Shepherd project is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details. See http://www.gnu.org/licenses/ .
- Q1 Can I Re-Skin Shepherd and then Train People With it?
- A1 Yes! Shepherd plans to include this in-app in version 2.4
- Q2 Where can I access Security Shepherd?
- A2 You can Download it and run it yourself, ask your lecturer to, and we tend to have a public environment available at https://owasp.securityshepherd.eu/ . It operates on a Research Network in ITB's Security Research Lab, so it can be in a state of flux.
The OWASP Security Shepherd project would like to acknowledge and thank the generous support of our sponsors. Please be certain to visit their websites and follow them on Twitter.
OWASP Security Shepherd is developed by a worldwide team of volunteers. The primary contributors to date have been:
- Mark Denihan
- Sean Duggan
- Paul McCann
- John Clarke
- Ciaran Napier
- Jason Flood
The Security Shepherd template makes it extremely easy to add additional lessons. We are actively seeking developers to add new lessons as new web technologies emerge. If you are interested in volunteering for the project, or have a comment, question, or suggestion, please contact [email protected]
New levels or level ideas are wanted in the highest degree and there is development is in progress to fork the Security Shepherd platform into a CTF framework. If you wish to contribute a level or even an idea; contact Mark Denihan on [email protected] The aim of Security Shepherd's future development is to create a comprehensive platform for web and mobile application pen testing training / security risk education. Check out the project GitHub and find some issues that you can help with right away.
To contribute right away, pull the source from GitHub
Both the Security Shepherd Platform and the Mobile Shepherd aspects of this project were initially created as part of BSc degrees in the Dublin Institute of Technology. Thanks to DIT for allowing those projects to be donated to the OWASP community.
Security Shepherd v2.4 VM Setup:
To get a Security Shepherd VM ready to rock, follow these steps;
Setting up your instance of Security Shepherd with the VM: In Steps!
- Import the VM to your hyper visor (Eg: Virtual Box)
- Update the VM Network Adapters to suit what you have available. (Bridged Adapter for Network Availability, Host-Only for local access only and NAT for just outbound access) The VM by default has 2 Network adapters, one NAT and a Host-Only.
- Boot the VM
- Sign in with securityshepherd / owaspSecurityShepherd
- Change the user password with the passwd command
- In the VM, run "ifconfig" to find the IP address of the network adapter that is not configured for NAT. Make note of this
- On your host machine, open https://<VM IP Address>/
- Sign in with admin / password
- Change the admin password (cannot be password again)
- Go to Admin -> Configuration -> Change Module Layout to change the way levels are presented. Default is CTF Mode (One at a time)
- Time to play!
How to Upgrade Version 2.3 to Version 2.4:
You have a current instance of Security Shepherd V2.3, and you want to upgrade it to 2.4 without loosing any data? No Problem. Follow these steps to upgrade;
- Download and run this SQL file on your DB server: Upgrade Core Schema Script
- Download and run this SQL file on your DB server: Upgrade Module Schemas Script
- Download the 2.4 Manual Pack, and replace your V2.3 war file with the new V2.4 war file.
All settings will be set to default after completing these steps and new levels will be marked as open.
Security Shepherd v2.4 Manual Pack (Windows):
- Download the Security Shepherd Manual Pack
- Install Apache Tomcat 7
- Install MySql, using CowSaysMoo as the default password to skip future steps, if you prefer your own password go ahead and set-up MySql with that instead!
- Extract the Security Shepherd Manual Pack
- Copy the sql files extracted from the pack to the bin directory of MySql
- Open MySql from the command line (eg: mySqlBinDirectory/mysql -u root -p )
- Type the following commands to execute the Shepherd Manual Pack SQL files;
source coreSchema.sql source moduleSchemas.sql
- Open the webapps directory of your Tomcat instance
- Delete any directories that are there already
- Move the WAR file from the Shepherd Manual Pack into the webapps folder of Tomcat
- Start Tomcat
- Open the temp directory of Tomcat
- If you chose the default when configuring MySql as your DB password, you are running MySql on the same machine as Tomcat and you are using port 3306 for MySql, you can skip this step. Otherwise, in the temp directory, in the ROOT directory in the temp folder, modify the /WEB-INF/coreDatabase.properties and /WEB-INF/database.properties to point at your local DB with your MySql settings. Leave the Driver alone!
- If you have more than one ROOT folder in your temp directory, visit your Tomcat instance with your browser and then check the Tomcat logs for a line that reads "Servlet root =" to find which directory is the correct one to modify the MySql settings of.
- Open your the root context of your Tomcat server (eg: http://127.0.0.1:8080/ )
- Sign into Security Shepherd with the default admin credentials (admin / password)
- Change the admin password (Can't be 'password' again)
- Make sure JAVA_HOME is set;
- Right click My Computer and select Properties.
- On the Advanced tab, select Environment Variables, and then edit JAVA_HOME to point to where the JDK software is located, e.g C:\Program Files\Java\jdk1.8.0_45.
- To setup SSL for port 443 (HTTPS) firstly generate the self signed certificate
"%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA
- The following is an example of filling out the details for the cert. You can choose your own.
Enter keystore password: passw0rd Re-enter new password: password What is your first and last name?
[Unknown]: Paul Stone
What is the name of your organizational unit?
[Unknown]: Security Shepherd
What is the name of your organization?
What is the name of your City or Locality?
[Unknown]: Baile Átha Cliath
What is the name of your State or Province?
What is the two-letter country code for this unit?
Is CN=Paul Stone, OU=Security Shepherd, O=OWASP, L=Baile Átha Cliath, ST=Laighin, C=IE correct?
Enter key password for (RETURN if same as keystore password): <RETURN>
- This will create a file under C:\Users\YOUR_USERNAME.keystore
- Now Update the C:\INSTALL_LOCATION\tomcat7\conf\server.xml file manually. Make a note of the password to the cert you generated and enter it under the 'keystorePass'. Change the listener port to the following:
<Connector address="0.0.0.0" port="80" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" />
<Connector address="0.0.0.0" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\Users\YOUR_USERNAME\.keystore" keystorePass="passw0rd" keyAlias="tomcat"/>
- To Redirect traffic to 443 (HTTPS)add the following to C:\INSTALL_LOCATION\tomcat7\conf\web.xml
- Time to Play!