WEB FOR PENTESTER II By Louis Nyffenegger
|
|
|
- Horace Stevens
- 9 years ago
- Views:
Transcription
1 WEB FOR PENTESTER II By Louis Nyffenegger
2 Table of Content Table of Content Introduction About this exercise License Syntax of this course The web application Introduction SQL injections Example 1 Example 2 Example 3 Example 4 Example 5 Example 6 Example 7 Example 8 Example 9 Authentication issues Example 1 Example 2 Example 3 Example 4 Example 5 Example 6 Captcha Example 1 Example 2 Example /48
3 Example 4 Example 5 Example 6 Example 7 Example 8 Example 9 Authorization Example 1 Example 2 Example 3 Mass-Assignment attacks Example 1 Example 2 Example 3 Randomness Issues Example 1 Example 2 Example 3 Example 4 MongoDB injections Example 1 Example 2 Conclusion /48
4 4/48
5 Introduction If you haven't done it already, make sure you check out our first exercise Web For Pentester. It's important that you start with it before starting this one (in my opinion). If you feel really confortable, you can try to exploit these vulnerabilities without following the course. You just need to be able to write small scripts to send HTTP requests to finish all of these exercises. 5/48
6 About this exercise License "Web For Pentester II" by PentesterLab is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License. To view a copy of this license, visit Syntax of this course 6/48
7 The red boxes provide information on mistakes/issues that are likely to happen while testing: An issue that you may encounter... The green boxes provide tips and information if you want to go further. You should probably check... The blue boxes are "homework": things you can work on once you are done with this exercise: The web application You should probably work on... Once the system has booted, you can then retrieve the current IP address of the system using the command ifconfig: 7/48
8 $ ifconfig eth0 eth0 Link encap:ethernet HWaddr 52:54:00:12:34:56 inet addr: Bcast: Mask: inet6 addr: fe80::5054:ff:fe12:3456/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:88 errors:0 dropped:0 overruns:0 frame:0 TX packets:77 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10300 (10.0 KiB) TX bytes:10243 (10.0 KiB) Interrupt:11 Base address:0x8000 In this example the IP address is Throughout the training, the hostname vulnerable is used for the vulnerable machine, you can either replace it by the IP address of the machine, or you can just add an entry to your host file with this name and the corresponding IP address. It can be easily done by modifying: On Windows, your C:\Windows\System32\Drivers\etc\hosts file. On Unix/Linux and Mac OS X, your /etc/hosts file. The IP address can change if you restart the system, don't forget to update your hosts file. Once you access the web application, you should see the following page: 8/48
9 9/48
10 Introduction 10/48
11 SQL injections In this section, some common SQL injection examples are provided, the first examples are authentication bypasses where the other ones are more traditional SQL injections. Example 1 The first example is the most common SQL injection example that you can find. The goal here is to bypass the authentication page. This example is the most known way to bypass an authentication page (it's even used in a lot of comics related to SQL injections). Let see what happens... The initial query looks like: SELECT * FROM users WHERE username='[username]' AND password='[password]' 11/48
12 Where [USERNAME] and [PASSWORD] are under your control. The application will check that the [USERNAME] and [PASSWORD] are correct by ensuring that at least one record is returned by the SQL query. Therefore, the SQL injection needs to ensure that at least one record is returned even if the [USERNAME] and [PASSWORD] are incorrect. There are many ways to perform this, your best bet is to inject in the [USERNAME] since the [PASSWORD] may be hashed or encrypted (even if it's not in this example). First you need to keep in mind the OR operator: `OR` We will use this to make sure the condition is always-true (1). Our goal is to use the [USERNAME] to inject our always-true condition but first we need to break out of the SQL syntax using a single quote ': SELECT * FROM users WHERE username=''' AND password='[password]' 12/48
13 The query's syntax is now invalid (since there is an odd number of quotes), but we will come back to this later. So far our payload is just a single quote', we now need to inject our always-true condition. The easiest way is to use or 1=1 since 1=1 is true the condition will always be true. Our query now looks like: SELECT * FROM users WHERE username='' or 1=1 ' AND password='[password]' The query is still syntaxically incorrect. It's the last problem to solve in our injection, we need to get rid of the end of the query. We can use comments (-- or #) to get rid of it: SELECT * FROM users WHERE username='' or 1=1 -- ' AND password='[password]' This way MySQL will only see: PentesterLab.com» Web For Pentester II SELECT * FROM users WHERE username='' or 1=1 -- Our final payload is ' or 1=1 --. This payload can be optimised to 'or 1# to bypass some filtering since MySQL will accept this syntax. Commenting using `--` can often create problem if `-- ` is not followed by a space, that's why it's always a good idea to add a space at the end. 13/48
14 Once the payload is ready you can just put it in the form and submit. If you directly inject the payload in the URL you will need to encode some characters (=, # and spaces). You can check man ascii or the first "Web For Pentester" for more details on URL-encoding. Example 2 This example is the same vulnerability with a twist. In the first example, the code only checked that something was returned. In this version, the developper decided to ensure that only one user exists. To bypass this restriction, you can get all the rows with the trick seen above and then limits this number using the SQL keywords LIMIT. Example 3 In this example, aware of the risk of SQL injection, the developer decided to block single quotes ' by removing any single quote ' in the query. However, there is still a way to break out of the SQL syntax and inject arbitrary SQL. To do so, you need to think of the query: SELECT * FROM users WHERE username='[username]' and password='[password]' 14/48
15 The problem here is that you cannot, in theory, break out of the single quotes ' since you cannot inject any quote. However, if you inject a backslash \, the second ' in the query (the one supposed to finish the string [username] will be escaped and will be closed by the third one (the one supposed to start the string [password]. Using that, you can then use the parameter password to complete the query and return an always true statement. Don't forget to comment out the end of the query to avoid the remaining SQL code. Example 4 In this example, the developer puts part of the query directly in a parameter. It's really rare in traditional web applications but can sometimes be found in web services (especially for mobile applications). You are injecting directly in the WHERE statement and can manipulate the request to retrieve anything you want. Example 5 PentesterLab.com» Web For Pentester II In this example, you are injecting after the keyword LIMIT. On MySQL, this type of injection can only be exploited using UNION SELECT... if there is no ORDER BY keywords used in the query. Furthermore, The ORDER BY keywords will be located before the LIMIT keyword for the query to be valid, so you cannot get rid of it using comments. 15/48
16 Some methods exist to exploit injections in LIMIT with ORDER BY using the INTO OUTFILE or PROCEDURE ANALYSE() but they are a bit too complex to be covered here. If there is a `ORDER BY` keyword, you can try to remove the corresponding parameter from the HTTP request to see if it allows you to get rid of the statement in the query. You can simply used union-based exploitation to retrieve arbitrary information in this example. A full example of this type of exploitation is available in the PentesterLab's exercise: "From SQL injection to Shell". Example 6 This is another example of SQL injection but this time after the GROUP BY keywords, union-based exploitation can also be used to exploit this type of issues. The good thing is that ORDER BY will be located after GROUP BY so even if ORDER BY is used you can get rid of it using SQL comments. Example 7 PentesterLab.com» Web For Pentester II In this example, two queries are performed, the first query retrieves the user details based on the parameter id, the second one use the username from the previously retrieved record to retrieve the user. 16/48
17 To exploit this issue you will need to use blind SQL injections. However, since the error messages are displayed, we can use error-based exploitation to get information. The idea behind error-based exploitation is to use error messages to gather information. By injecting error-prone statement, we can get information directly in the error messages instead of using a blind SQL injection. For example, you can use the following statement: extractvalue('%3cxml%3e',concat(%22/%22,(select%20version()))) by accessing id=extractvalue('%3cxml%3e',concat(%22/%22,(select%20version()))) to get the following error message: It's a really good way to demonstrate that a page is vulnerable to SQL injections and that you can gather information from the database. 17/48
18 Example 8 This example is vulnerable to "second order SQL injection", instead of directly injecting your payload in the request, you will first insert it in the database using a first request and then trigger the payload in a second request. The first request is not vulnerable to SQL injection, only the second is. However, you do not directly control the value used, you need to inject it using the first request. This issue comes from the fact that the developer trusted the values coming from the database. Each attempt will need two steps: Create a user with your payload. Access this user information to trigger your payload. If you want to be efficient you need to automate this process using a simple script. The payload can be as simple as a union-based exploitation. Example 9 18/48
19 This example was first published in 2006 on Chris Shiflett's Blog as a way to bypass mysql-real-escape-string, it relies on the way MySQL will performed escaping depending on the charset used by the connection and how if the database driver is not aware of the charset used it will not perform the right escaping and create an exploitable situation. This exploit relies on the usage of GBK. GBK is a character set for simplified chinese. Using the fact that the database driver and the database don't "talk" the same charset, it's possible to generate a single quote and break out of the SQL syntax to inject a payload. Using the string \xbf' (URL-encoded as %bf%27), it's possible to get a single quote that will not get escaped properly. It's therefore possible to inject an always-true condition using %bf%27 or 1=1 -- and bypass the authentication. As a side note, this issue can be remediated by setting up the connection encoding to 'GBK' instead of using an SQL query (which is the source of this issue). Here the problem comes from the execution of the following query: SET CHARACTER SET 'GBK'; PentesterLab.com» Web For Pentester II It is a pretty unlikely issue for a web application but it's always good to know that it exists (especially if you play CTFs). 19/48
20 Authentication issues This section puts together example of issue in authentication pages: from trivial brute-force to more complex issues. Example 1 This example is really simple, just carefully read the prompt and you should be in pretty quickly. Common passwords are probably the easiest and most common way to bypass authentications. Example 2 20/48
21 This example is an exagerated version of a non-time-constant string comparison vulnerability. If you compare two strings and stop at the first invalid character, a string A with the first 6 characters in common with the string B will take more time to compare than a string A' with only the first 2 characters in common with the string B. You can use this information to brute force the password in this example. Here the username is provided in the prompt, you just need to find the password. To do so you need to loop through all characters until you find the one that took the most time (since the application compares one more character). First you need to be able to send HTTP request with an Authorization: Basic header. The format used is: GET /authentication/example2/ HTTP/1.1 Host: vulnerable Authorization: Basic agfja2vyonblbnrlc3rlcmxhygo= Where the string agfja2vyonblbnrlc3rlcmxhygo= is the base64 of username:password. Once you have the code to send this request, you will need to loop on all the character set (here it's limited to lowercase characters and numbers) and check how much time each request takes. For example, this is the output of my script: 21/48
22 $ ruby auth-example2.rb hacker:a -> hacker:b -> hacker:c -> [...] hacker:l -> hacker:m -> hacker:o -> hacker:p -> [...] hacker:4 -> hacker:5 -> hacker:6 -> hacker:7 -> hacker:8 -> hacker:9 -> PentesterLab.com» Web For Pentester II You can see that the letter p took more time than the others. It's also confirmed when you try to guess the next letter: [..] hacker:pa -> hacker:pb -> Finally, the script need to exit once you get a HTTP 200 response, meaning that the correct credentials have been found. 22/48
23 This technic is likely to fail depending on how stable your setup is. A good idea, is too keep monitoring the script and manually review the result. You should be able to easily restart the script from where it stopped (for example after a connection issue) by adding the value you already guessed to the username hacker:. Example 3 This example was one of the easy web challenges during Ruxcon 2012 CTF. In this exercise, you can log in as user1, your goal is too get logged in as admin. To do so, you need to carefully look at the response sent back by the server. You can see that when you log in as user1, you get a cookie named user1, from that you can easily modify this value (using a proxy or a browser's extension) to get logged in as admin. Example 4 PentesterLab.com» Web For Pentester II This example is similar to the previous example. As soon as you receive a cookie from an application is always good to see what it looks like, try to crack using a password cracker or try to just Google it. From that you should be able to generate a valid cookie for the user admin. 23/48
24 If you get many times the same session id when logging in: there is a problem! If you log in from a clean browser, you should never get two times the same cookies. Example 5 This example shows the consequence of different method of string comparison. When you create a user, the application will check programmatically that the user does not exist by comparing the username provided with the existing user. When you log in, the application will check that your username and password are correct, then it will save your username in your session. Finally, every time you will access the application, the application will retrieve your user's details based on the username provided in the session. The trick here comes from the fact that the comparison when you create a user is done programmaticaly (i.e.: in Ruby) but when the user's details get retrieved, the comparison is done by the database. And by default, MySQL (with the type VARCHAR) will perform a case insensitive comparison: "admin" and "Admin" are the same value. Using that information, you should be able to create a user that will be identified as admin. 24/48
25 Example 6 To remediate the previous issue, the developer decided to use a case sensitive comparison during users' creation. This check can also be bypassed based on the way MySQL performs string comparison: MySQL ignores trailing spaces (i.e.: pentesterlab and pentesterlab are equals). Using the same method as above, you should be able to pretend to be logged in as the user admin. A good way to prevent this issue is to tell the database that the username is a PRIMARY KEY. This method is, for example, used in Tomcat documentation to use a SQL backend as a Realm. 25/48
26 Captcha When attacking Captcha and before starting some hardcore coding, make sure there is no logic flaws or some kind of predictability. If you can bypass a captcha without breaking it... Don't break it! Attention to details is key to find logic flaws in captcha. Make sure you check every details of the response when you need to crack a captcha. The first examples are badly developped captchas with common logic flaws, later examples are easier to break and can be broken. In all the following examples, the goal is to build automation around the captcha with a high success rate (100% for most of them). 26/48
27 I have no real knowledge of image processing and related research in the domain of captacha. These methods are mostly hacks and don't represent the state of the art in this domain. Example 1 This script is a common issue with badly implemented captcha. To avoid error message the developper checks that a captcha parameter exists before ensuring that its value is correct: if params[:captcha] and params[:captcha]!= session[:captcha] # ERROR: CAPTCHA is invalid redirect [...] end # CAPTCHA is valid [...] However this example presents a vulnerability: if no captcha is provided, the script does not fail safely. Example 2 27/48
28 In this example, the answer is leaked by the application. By inspecting the source of HTML page returned, you should be able to write a script that can automatically breaks this captcha. Example 3 PentesterLab.com» Web For Pentester II In this example, the answer is leaked by the application. By inspecting the response sent back by the server, you should be able to write a script that can automatically break this captcha. You can also retrieve the captcha from the cookie using the JavaScript console and call document.cookie: 28/48
29 Example 4 This is quite a funny example since it's a mistake I made during the development of this set of exercises. Here, you don't have to really crack the captcha, you just need to crack it once and you can reuse the same value and session id to perform the same request again and again. When you try to crack a captcha, make sure that an answer can only be used once. You can easily script this exploitation by writing a script that takes a session id and a value for parameters and submit them again and again. Example 5 This example is the last example of weakness, here the weakness comes from the dictionnary used to create the captcha, there is only a limited number of words used. You can easily write a cracker by generating a list of all words and the MD5 of the image. Then when you want to submit the form, you just need to retrieve the image, compute its MD5 and submit the matching word. Example 6 29/48
30 In this example, we are going to use the OCR tool (Tesseract) to crack this easy captcha. The goal here is to build a script that will get an high success rate. Just with a basic script using tesseract you can expect a success rate of more than 95%. You will need to use the following algorithm: Go to the main page to get a new captcha and the cookie (rack.session). Retrieve the image. PentesterLab.com» Web For Pentester II Run tesseract on the image and retrieve the result. Submit the result with the correct cookie. The following things can improved your success rate: Only submit a value if it's a word. Only submit a value if it only contains of lower case characters. Depending on the application workflow, you may want to have a really high success rate. For example, if you spend 10 minutes filling forms, you want to make sure that the captcha cracker has a high success rate. Where if it's only to exploit a SQL injection, you can just retry until you find the right value and you don't need to be really accurate. 30/48
31 Example 7 If we use the same technic as the one above, we can see that the success rate is fairly lower. To improve the recognition we are going to try to remove the blue "HatchFill". A really simple way to do that, is to use a threshold to modify the image before running tesseract on it. This can be done by the following code: require 'RMagick' image = Magick::Image.read("current7.png").first image = image.threshold(threshold) image.write("current7.png") You can play with the THRESHOLD value to improve the detection rate. Just by using this simple trick, the success rate increases. Also, the time required to get this rate is lower since the information detected by tesseract matches the conditions (only one word composed of lowercase characters). Example 8 Here we can see that the image is imploded. We are going to open the image and un-implode it and use the previous technic to increase the success rate. 31/48
32 The following code can be used: require 'RMagick' image = Magick::Image.read("current8.png").first image = image.implode(implode) image = image.threshold(threshold) image.write("current8.png") You can play with the THRESHOLD and IMPLODE (IMPLODE can be negative) values to improve the detection rate. Like for the previous example, the detection rate will be improved and the time necessary to get this rate will be decreased. Example 9 PentesterLab.com» Web For Pentester II This captcha relies on asking the client to perform a simple arithmetic operation, it's really simple to crack. You can just eval the string provided (probably not a good idea) or you can write a simple parser to do the arithmetic operation for you. This kind of protection will protect from really dumb bots but is really easy to bypass for anyone who can do a bit of scripting. 32/48
33 Authorization Authorization issues are very common in web applications. This section puts together some common examples of vulnerability. Modern web development frameworks often protects from all kind of injections but cannot take care automatically of this kind of issues (since they cannot understand the business logic behind them). Authorization issues cannot really be tested by automatic web scanner (for the same reason), that why it's often a good source of vulnerabilities and it's important to know how to test them. The following section "Mass Assignement" is also a problem of authorization but I prefered to separate the exercises in two sections for clarity. Example 1 33/48
34 In this example, you can log in with the following user: user1 with the password "pentesterlab". Once you logged in and have a play around, log out and try to access the same information. This is a pretty common issue with poorly designed web applications, even if you cannot access the post-authentication page, you are still able to access other pages if you know their URLs: for example. Example 2 In this example, you can log in with the following user: user1 with the password pentesterlab. Once you are logged in, you can start accessing information and see the pattern used: /infos/1, /infos/2. If you keep incrementing the number in the URL, you can access information from the other users. Example 3 PentesterLab.com» Web For Pentester II In this example, you can access the information using a method similar to the one seen previously. You cannot just directly access the information, however you can see that you are now able to edit information, and you can use this feature to access information from other users just by incrementing the number in the URL. 34/48
35 Mass-Assignment attacks When people started building website with database to store information, they had to do manually a lot of SQL. Few people realised that it was not the best solution and started working on smarter alternatives and start building Object-relational mapping (ORM) to easily query the database without any SQL knowledge. For example, in Ruby (using ActiveRecord), you can do things = User.find_by_name('pentesterlab') This will automatically generate and execute the query and retrieve the result in an User object. Another really handy usage was to automatically create and update an object from a hash: 35/48
36 @user = User.create(myhash) Unfortunately, this useful feature comes with a security price, if a developper does not correctly ensure that attributes of the are protected, an attacker can arbitrary overwrite any of these attributes. In this section, we will see some common examples of this type of issues: Mass-Assignment. Example 1 In this example, you can register a user. The application has two levels of privileges: User. Admin. PentesterLab.com» Web For Pentester II The admin privilege is set using the attribute admin on the object user. If you look closely at the format used by the web application: user[username] and user[password], you should be able to find a way to get admin access. Three methods can be used: Modify the page directly using a browser extension. 36/48
37 Example 2 Save the page and modify offline to create a page that will send the right payload to the right URL. Use a proxy to intercept the legitimate request and add your parameter (fastest option). In this exercise, the developer fixed the previous bug, you cannot create a user with admin privileges... or at least no directly. Try to find a way to do the same thing. Example 3 PentesterLab.com» Web For Pentester II In this exercise, you can log in with the following user: user1 with the password pentesterlab. Once you logged in, try to access the information from the company "Company 2". To do so you will need to modify your company using mass-assignement. By convention (can be changed programmaticaly) when a developer uses ActiveRecord (Ruby-on-Rails' most common data mapper), and a class Company has multiple User, the relation is managed using a field company_id inside the User class: 37/48
38 The following code is used in Ruby: class User < ActiveRecord::Base belongs_to :company end class Company < ActiveRecord::Base has_many :users end Ruby-on-Rails enforces "convention" over "configuration" which really helps to guess class names and attributes' name... 38/48
39 Using this information, you should be able to modify your current company to get access to the "secret" of the other company. Once you get this "secret", you can reset your company_id to get back to your company's details. 39/48
40 Randomness Issues Depending on how a developper generates random numbers or strings, the values created can be more and less random. The most (and biggest mistake) is to manually seed the random generator using a constant or the current time, this will allow an attacker to be able to predict what values have been and are going to be generated. In this section, we will see some examples that will convince you that random is not always random. Example 1 This first example is just here to show how random is not really random. The problem comes from the use of a seeded random generator. The developper used the value 0 to seed the random generator. 40/48
41 If you just replay the script, you should be able to find the password generated for the administrator admin. Example 2 This example show another example of bad seeding of a random generator. The random generator is seeded with the current time. To work your way to the admin password, you need to brute force the seed. To do so you can start from the current time and dicrease it while replaying the algorithm used to generate the values until you get your password. Once you get your password, you know what seed was used (or more precisely at what time the random generator was initialized). You can then get the admin password. Example 3 This example is really simple and similar to the first one. You just need to replay the code to get the admin password. The fact that the passwords' length is random has no impact on the fact that you can guess it. Example 4 PentesterLab.com» Web For Pentester II 41/48
42 In this example, you don't know how many times the random generator was used before your password was generated (since it's a call to rand(1000) as opposed to s.rand(1000). You can still get the previous password generated. To get it, you just need to bruteforce this value until you get your password. 42/48
43 MongoDB injections Even if MongoDB is a NoSQL database, it's still possible to write vulnerable code and therefore this exercise features two NoSQL-injections. If you want to try them on your own, try to follow these steps: Learn and understand what the MongoDB syntax looks like (find the project's website and read the documentation). Find what can be used to get rid of the code after your injection point (comments, null byte). Find how you can generate always true conditions (for example 1). Find how you can retrieve information (for example 2). 43/48
44 As opposed to SQL databases who almost support the same syntax, NoSQL databases have different syntax. Example 1 This example is the MongoDB version of the (in)famous ' or 1=1 --. If you remember what you saw previously, you know that you will need two things to bypass this login for: An always true condition. A way to correctly terminates the NoSQL query. First, by reading MongoDB documentation you can find that the SQL or 1=1 translates to 1==1 (note the double =). Then by poking around, you can see that a NULL BYTE will prevent MongoDB from using the rest of the query. You can also use the comments // or <!-- to comment out the end of the query. With this information, you should be able to bypass the authentication form. Example 2 44/48
45 In this example, we will try to retrieve more information from the NoSQL database. Using a bit of guess work (or previous knowledge of the application), we can think that there is probably a password field. We can play around to confirm that guess: if we access search=admin'%20%26%26%20this.password.match(/.*/)//+%00: we can see a result. if we access search=admin'%20%26%26%20this.password.match(/zzzzz/)//+%00: we cannot see a result. if we access search=admin'%20%26%26%20this.passwordzz.match(/.*/)//+%00: we get an error message (since the field passwordzz does not exist). No, we have a way to perform a blind injection since we have two states: No result when the regular expression does not match something: false state. One result when the regular expression matches something: true state. 45/48
46 Using this knowledge, we can script the exploitation to guess admin password. We will first ensure that the matching is done correctely by using: ^ and $ to make sure we do not match characters in the middle of the string (otherwise iterating will be far harder. The algorithm looks like: PentesterLab.com» Web For Pentester II test if password match /^a.*$/ if it matches test without the wildcard.*. Then move to the next letter if it does not match. test if password match /^b.*$/ if it matches test without the wildcard.*. Then move to the next letter if it does not match. For example, if the password is aab, the following test will be performed: /^a.*$/ that will return true. /^a$/ that will return false. /^aa.*$/ that will return true. /^aa$/ that will return false. /^aaa.*$/ that will return false. /^aab.*$/ that will return true. /^aab$/ that will return true. The password has been found. With these details, you should be able to retrieve the password for the user admin. 46/48
47 In case the password field does not exist for some records (since it's a NoSQL database), it's always a good idea to ensure its presence by using... && this.password && this.password.match(... instead of just using... && this.password.match(... 47/48
48 Conclusion This exercise follows our first exercise "Web For Pentester" and provide a really good course for people who want to progress in doing web application penetration testing. If you are interested by this subject, you should check out our other exercises available at the following address: Other exercises are more scenario based and more realistic of typical web engagements. I hope you enjoyed learning with PentesterLab. 48/48
Recon and Mapping Tools and Exploitation Tools in SamuraiWTF Report section Nick Robbins
Recon and Mapping Tools and Exploitation Tools in SamuraiWTF Report section Nick Robbins During initial stages of penetration testing it is essential to build a strong information foundation before you
Advanced Web Security, Lab
Advanced Web Security, Lab Web Server Security: Attacking and Defending November 13, 2013 Read this earlier than one day before the lab! Note that you will not have any internet access during the lab,
External Network & Web Application Assessment. For The XXX Group LLC October 2012
External Network & Web Application Assessment For The XXX Group LLC October 2012 This report is solely for the use of client personal. No part of it may be circulated, quoted, or reproduced for distribution
Criteria for web application security check. Version 2015.1
Criteria for web application security check Version 2015.1 i Content Introduction... iii ISC- P- 001 ISC- P- 001.1 ISC- P- 001.2 ISC- P- 001.3 ISC- P- 001.4 ISC- P- 001.5 ISC- P- 001.6 ISC- P- 001.7 ISC-
Using Foundstone CookieDigger to Analyze Web Session Management
Using Foundstone CookieDigger to Analyze Web Session Management Foundstone Professional Services May 2005 Web Session Management Managing web sessions has become a critical component of secure coding techniques.
Secure Web Application Coding Team Introductory Meeting December 1, 2005 1:00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda
Secure Web Application Coding Team Introductory Meeting December 1, 2005 1:00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda 1. Introductions for new members (5 minutes) 2. Name of group 3. Current
CSCI110 Exercise 4: Database - MySQL
CSCI110 Exercise 4: Database - MySQL The exercise This exercise is to be completed in the laboratory and your completed work is to be shown to the laboratory tutor. The work should be done in week-8 but
Magento Security and Vulnerabilities. Roman Stepanov
Magento Security and Vulnerabilities Roman Stepanov http://ice.eltrino.com/ Table of contents Introduction Open Web Application Security Project OWASP TOP 10 List Common issues in Magento A1 Injection
The purpose of this report is to educate our prospective clients about capabilities of Hackers Locked.
This sample report is published with prior consent of our client in view of the fact that the current release of this web application is three major releases ahead in its life cycle. Issues pointed out
Web Application Hacking (Penetration Testing) 5-day Hands-On Course
Web Application Hacking (Penetration Testing) 5-day Hands-On Course Web Application Hacking (Penetration Testing) 5-day Hands-On Course Course Description Our web sites are under attack on a daily basis
Application Security Testing. Generic Test Strategy
Application Security Testing Generic Test Strategy Page 2 of 8 Contents 1 Introduction 3 1.1 Purpose: 3 1.2 Application Security Testing: 3 2 Audience 3 3 Test Strategy guidelines 3 3.1 Authentication
External Vulnerability Assessment. -Technical Summary- ABC ORGANIZATION
External Vulnerability Assessment -Technical Summary- Prepared for: ABC ORGANIZATI On March 9, 2008 Prepared by: AOS Security Solutions 1 of 13 Table of Contents Executive Summary... 3 Discovered Security
SQL Injection for newbie
SQL Injection for newbie SQL injection is a security vulnerability that occurs in a database layer of an application. It is technique to inject SQL query/command as an input via web pages. Sometimes we
Intrusion detection for web applications
Intrusion detection for web applications Intrusion detection for web applications Łukasz Pilorz Application Security Team, Allegro.pl Reasons for using IDS solutions known weaknesses and vulnerabilities
Project 2: Web Security Pitfalls
EECS 388 September 19, 2014 Intro to Computer Security Project 2: Web Security Pitfalls Project 2: Web Security Pitfalls This project is due on Thursday, October 9 at 6 p.m. and counts for 8% of your course
EVALUATING COMMERCIAL WEB APPLICATION SECURITY. By Aaron Parke
EVALUATING COMMERCIAL WEB APPLICATION SECURITY By Aaron Parke Outline Project background What and why? Targeted sites Testing process Burp s findings Technical talk My findings and thoughts Questions Project
1. Building Testing Environment
The Practice of Web Application Penetration Testing 1. Building Testing Environment Intrusion of websites is illegal in many countries, so you cannot take other s web sites as your testing target. First,
SQL Injection January 23, 2013
Web-based Attack: SQL Injection SQL Injection January 23, 2013 Authored By: Stephanie Reetz, SOC Analyst Contents Introduction Introduction...1 Web applications are everywhere on the Internet. Almost Overview...2
How to break in. Tecniche avanzate di pen testing in ambito Web Application, Internal Network and Social Engineering
How to break in Tecniche avanzate di pen testing in ambito Web Application, Internal Network and Social Engineering Time Agenda Agenda Item 9:30 10:00 Introduction 10:00 10:45 Web Application Penetration
Ruby on Rails Secure Coding Recommendations
Introduction Altius IT s list of Ruby on Rails Secure Coding Recommendations is based upon security best practices. This list may not be complete and Altius IT recommends this list be augmented with additional
Check list for web developers
Check list for web developers Requirement Yes No Remarks 1. Input Validation 1.1) Have you done input validation for all the user inputs using white listing and/or sanitization? 1.2) Does the input validation
White Paper. Blindfolded SQL Injection
White Paper In the past few years, SQL Injection attacks have been on the rise. The increase in the number of Database based applications, combined with various publications that explain the problem and
Setting Up A High-Availability Load Balancer (With Failover and Session Support) With Perlbal/Heartbeat On Debian Etch
By Falko Timme Published: 2009-01-11 19:32 Setting Up A High-Availability Load Balancer (With Failover and Session Support) With Perlbal/Heartbeat On Debian Etch Version 1.0 Author: Falko Timme
The Top Web Application Attacks: Are you vulnerable?
QM07 The Top Web Application Attacks: Are you vulnerable? John Burroughs, CISSP Sr Security Architect, Watchfire Solutions [email protected] Agenda Current State of Web Application Security Understanding
Secure Web Development Teaching Modules 1. Security Testing. 1.1 Security Practices for Software Verification
Secure Web Development Teaching Modules 1 Security Testing Contents 1 Concepts... 1 1.1 Security Practices for Software Verification... 1 1.2 Software Security Testing... 2 2 Labs Objectives... 2 3 Lab
Thick Client Application Security
Thick Client Application Security Arindam Mandal ([email protected]) (http://www.paladion.net) January 2005 This paper discusses the critical vulnerabilities and corresponding risks in a two
(WAPT) Web Application Penetration Testing
(WAPT) Web Application Penetration Testing Module 0: Introduction 1. Introduction to the course. 2. How to get most out of the course 3. Resources you will need for the course 4. What is WAPT? Module 1:
Louis <[email protected]> Luke <[email protected]>
Louis Luke SELECT user FROM mysql.user LIMIT 2 Security consultants working for Securus Global in Melbourne Have done/are doing a lot a web pentesting
What is Web Security? Motivation
[email protected] http://www.brucker.ch/ Information Security ETH Zürich Zürich, Switzerland Information Security Fundamentals March 23, 2004 The End Users View The Server Providers View What is Web
Attack and Penetration Testing 101
Attack and Penetration Testing 101 Presented by Paul Petefish [email protected] July 15, 2009 Copyright 2000-2009, Solutionary, Inc. All rights reserved. Version 2.2 Agenda Penetration Testing
Web Application Security Guidelines for Hosting Dynamic Websites on NIC Servers
Web Application Security Guidelines for Hosting Dynamic Websites on NIC Servers The Website can be developed under Windows or Linux Platform. Windows Development should be use: ASP, ASP.NET 1.1/ 2.0, and
Penetration Testing with Kali Linux
Penetration Testing with Kali Linux PWK Copyright 2014 Offensive Security Ltd. All rights reserved. Page 1 of 11 All rights reserved to Offensive Security, 2014 No part of this publication, in whole or
EC-Council CAST CENTER FOR ADVANCED SECURITY TRAINING. CAST 619 Advanced SQLi Attacks and Countermeasures. Make The Difference CAST.
CENTER FOR ADVANCED SECURITY TRAINING 619 Advanced SQLi Attacks and Countermeasures Make The Difference About Center of Advanced Security Training () The rapidly evolving information security landscape
Still Aren't Doing. Frank Kim
Ten Things Web Developers Still Aren't Doing Frank Kim Think Security Consulting Background Frank Kim Consultant, Think Security Consulting Security in the SDLC SANS Author & Instructor DEV541 Secure Coding
Web Application Attacks And WAF Evasion
Web Application Attacks And WAF Evasion Ahmed ALaa (EG-CERT) 19 March 2013 What Are We Going To Talk About? - introduction to web attacks - OWASP organization - OWASP frameworks - Crawling & info. gathering
INTRUSION PROTECTION AGAINST SQL INJECTION ATTACKS USING REVERSE PROXY
INTRUSION PROTECTION AGAINST SQL INJECTION ATTACKS USING REVERSE PROXY Asst.Prof. S.N.Wandre Computer Engg. Dept. SIT,Lonavala University of Pune, [email protected] Gitanjali Dabhade Monika Ghodake Gayatri
Exposed Database( SQL Server) Error messages Delicious food for Hackers
Exposed Database( SQL Server) Error messages Delicious food for Hackers The default.asp behavior of IIS server is to return a descriptive error message from the application. By attacking the web application
Common Criteria Web Application Security Scoring CCWAPSS
Criteria Web Application Security Scoring CCWAPSS Author Frédéric Charpentier, security pentester. France. [email protected] Releases Version 1.0 : First public release September 2007 Version
Analysis of SQL injection prevention using a proxy server
Computer Science Honours 2005 Project Proposal Analysis of SQL injection prevention using a proxy server By David Rowe Supervisor: Barry Irwin Department of Computer
Webapps Vulnerability Report
Tuesday, May 1, 2012 Webapps Vulnerability Report Introduction This report provides detailed information of every vulnerability that was found and successfully exploited by CORE Impact Professional during
SQL Injection Attack Lab
Laboratory for Computer Security Education 1 SQL Injection Attack Lab Copyright c 2006-2010 Wenliang Du, Syracuse University. The development of this document is funded by the National Science Foundation
How to hack a website with Metasploit
How to hack a website with Metasploit By Sumedt Jitpukdebodin Normally, Penetration Tester or a Hacker use Metasploit to exploit vulnerability services in the target server or to create a payload to make
bigbluebutton Open Source Web Conferencing
bigbluebutton Open Source Web Conferencing My favorites Project Home Downloads Wiki Issues Source Search Current pages for BigBlueButtonVM Download and setup your own BigBlueButton 0.81 Virtual Machine
Serious Threat. Targets for Attack. Characterization of Attack. SQL Injection 4/9/2010 COMP620 1. On August 17, 2009, the United States Justice
Serious Threat SQL Injection COMP620 On August 17, 2009, the United States Justice Department tcharged an American citizen Albert Gonzalez and two unnamed Russians with the theft of 130 million credit
Web Application Guidelines
Web Application Guidelines Web applications have become one of the most important topics in the security field. This is for several reasons: It can be simple for anyone to create working code without security
Web Application Security
Web Application Security John Zaharopoulos ITS - Security 10/9/2012 1 Web App Security Trends Web 2.0 Dynamic Webpages Growth of Ajax / Client side Javascript Hardening of OSes Secure by default Auto-patching
SQL Injection Attack Lab Using Collabtive
Laboratory for Computer Security Education 1 SQL Injection Attack Lab Using Collabtive (Web Application: Collabtive) Copyright c 2006-2011 Wenliang Du, Syracuse University. The development of this document
ABC LTD EXTERNAL WEBSITE AND INFRASTRUCTURE IT HEALTH CHECK (ITHC) / PENETRATION TEST
ABC LTD EXTERNAL WEBSITE AND INFRASTRUCTURE IT HEALTH CHECK (ITHC) / PENETRATION TEST Performed Between Testing start date and end date By SSL247 Limited SSL247 Limited 63, Lisson Street Marylebone London
PHP Magic Tricks: Type Juggling. PHP Magic Tricks: Type Juggling
Who Am I Chris Smith (@chrismsnz) Previously: Polyglot Developer - Python, PHP, Go + more Linux Sysadmin Currently: Pentester, Consultant at Insomnia Security Little bit of research Insomnia Security Group
Canopy Wireless Broadband Platform
1 Canopy Wireless Broadband Platform Frequently Asked Questions Software Ordering and License Fulfillment Process May 2007 CONTENTS GENERAL SOFTWARE ORDERING PROCESS...2 USING THE LICENSING PORTAL...5
Chapter 1 Web Application (In)security 1
Introduction xxiii Chapter 1 Web Application (In)security 1 The Evolution of Web Applications 2 Common Web Application Functions 4 Benefits of Web Applications 5 Web Application Security 6 "This Site Is
SQL injection: Not only AND 1=1. The OWASP Foundation. Bernardo Damele A. G. Penetration Tester Portcullis Computer Security Ltd
SQL injection: Not only AND 1=1 Bernardo Damele A. G. Penetration Tester Portcullis Computer Security Ltd [email protected] +44 7788962949 Copyright Bernardo Damele Assumpcao Guimaraes Permission
Where every interaction matters.
Where every interaction matters. Peer 1 Vigilant Web Application Firewall Powered by Alert Logic The Open Web Application Security Project (OWASP) Top Ten Web Security Risks and Countermeasures White Paper
Web Application Security Assessment and Vulnerability Mitigation Tests
White paper BMC Remedy Action Request System 7.6.04 Web Application Security Assessment and Vulnerability Mitigation Tests January 2011 www.bmc.com Contacting BMC Software You can access the BMC Software
ASL IT SECURITY BEGINNERS WEB HACKING AND EXPLOITATION
ASL IT SECURITY BEGINNERS WEB HACKING AND EXPLOITATION V 2.0 A S L I T S e c u r i t y P v t L t d. Page 1 Overview: Learn the various attacks like sql injections, cross site scripting, command execution
Web Application Security
E-SPIN PROFESSIONAL BOOK Vulnerability Management Web Application Security ALL THE PRACTICAL KNOW HOW AND HOW TO RELATED TO THE SUBJECT MATTERS. COMBATING THE WEB VULNERABILITY THREAT Editor s Summary
OPENID AUTHENTICATION SECURITY
OPENID AUTHENTICATION SECURITY Erik Lagercrantz and Patrik Sternudd Uppsala, May 17 2009 1 ABSTRACT This documents gives an introduction to OpenID, which is a system for centralised online authentication.
Web application security: Testing for vulnerabilities
Web application security: Testing for vulnerabilities Using open source tools to test your site Jeff Orloff Technology Coordinator/Consultant Sequoia Media Services Inc. Skill Level: Intermediate Date:
WHITE PAPER. FortiWeb and the OWASP Top 10 Mitigating the most dangerous application security threats
WHITE PAPER FortiWeb and the OWASP Top 10 PAGE 2 Introduction The Open Web Application Security project (OWASP) Top Ten provides a powerful awareness document for web application security. The OWASP Top
BASELINE SECURITY TEST PLAN FOR EDUCATIONAL WEB AND MOBILE APPLICATIONS
BASELINE SECURITY TEST PLAN FOR EDUCATIONAL WEB AND MOBILE APPLICATIONS Published by Tony Porterfield Feb 1, 2015. Overview The intent of this test plan is to evaluate a baseline set of data security practices
Automating SQL Injection Exploits
Automating SQL Injection Exploits Mike Shema IT Underground, Berlin 2006 Overview SQL injection vulnerabilities are pretty easy to detect. The true impact of a vulnerability is measured
DOS ATTACKS USING SQL WILDCARDS
DOS ATTACKS USING SQL WILDCARDS Ferruh Mavituna www.portcullis-security.com This paper discusses abusing Microsoft SQL Query wildcards to consume CPU in database servers. This can be achieved using only
SQL INJECTION ATTACKS By Zelinski Radu, Technical University of Moldova
SQL INJECTION ATTACKS By Zelinski Radu, Technical University of Moldova Where someone is building a Web application, often he need to use databases to store information, or to manage user accounts. And
HP WebInspect Tutorial
HP WebInspect Tutorial Introduction: With the exponential increase in internet usage, companies around the world are now obsessed about having a web application of their own which would provide all the
Web Applications Security: SQL Injection Attack
Web Applications Security: SQL Injection Attack S. C. Kothari CPRE 556: Lecture 8, February 2, 2006 Electrical and Computer Engineering Dept. Iowa State University SQL Injection: What is it A technique
Web Application Report
Web Application Report This report includes important security information about your Web Application. Security Report This report was created by IBM Rational AppScan 8.5.0.1 11/14/2012 8:52:13 AM 11/14/2012
Manipulating Microsoft SQL Server Using SQL Injection
Manipulating Microsoft SQL Server Using SQL Injection Author: Cesar Cerrudo ([email protected]) APPLICATION SECURITY, INC. WEB: E-MAIL: [email protected] TEL: 1-866-9APPSEC 1-212-947-8787 INTRODUCTION
Advanced PostgreSQL SQL Injection and Filter Bypass Techniques
Advanced PostgreSQL SQL Injection and Filter Bypass Techniques INFIGO-TD TD-200 2009-04 2009-06 06-17 Leon Juranić [email protected] INFIGO IS. All rights reserved. This document contains information
Security vulnerabilities in new web applications. Ing. Pavol Lupták, CISSP, CEH Lead Security Consultant
Security vulnerabilities in new web applications Ing. Pavol Lupták, CISSP, CEH Lead Security Consultant $whoami Introduction Pavol Lupták 10+ years of practical experience in security and seeking vulnerabilities
OWASP OWASP. The OWASP Foundation http://www.owasp.org. Selected vulnerabilities in web management consoles of network devices
OWASP Selected vulnerabilities in web management consoles of network devices OWASP 23.11.2011 Michał Sajdak, Securitum Copyright The OWASP Foundation Permission is granted to copy, distribute and/or modify
Black Hat Briefings USA 2004 Cameron Hotchkies [email protected]
Blind SQL Injection Automation Techniques Black Hat Briefings USA 2004 Cameron Hotchkies [email protected] What is SQL Injection? Client supplied data passed to an application without appropriate data validation
Kentico CMS security facts
Kentico CMS security facts ELSE 1 www.kentico.com Preface The document provides the reader an overview of how security is handled by Kentico CMS. It does not give a full list of all possibilities in the
PHP Authentication Schemes
7 PHP Authentication Schemes IN THIS CHAPTER Overview Generating Passwords Authenticating User Against Text Files Authenticating Users by IP Address Authenticating Users Using HTTP Authentication Authenticating
Is Drupal secure? A high-level perspective on web vulnerabilities, Drupal s solutions, and how to maintain site security
Is Drupal secure? A high-level perspective on web vulnerabilities, Drupal s solutions, and how to maintain site security Presented 2009-05-29 by David Strauss Thinking Securely Security is a process, not
3. The Domain Name Service
3. The Domain Name Service n Overview and high level design n Typical operation and the role of caching n Contents of DNS Resource Records n Basic message formats n Configuring/updating Resource Records
Advanced Web Technology 10) XSS, CSRF and SQL Injection 2
Berner Fachhochschule, Technik und Informatik Advanced Web Technology 10) XSS, CSRF and SQL Injection Dr. E. Benoist Fall Semester 2010/2011 Table of Contents Cross Site Request Forgery - CSRF Presentation
5 Simple Steps to Secure Database Development
E-Guide 5 Simple Steps to Secure Database Development Databases and the information they hold are always an attractive target for hackers looking to exploit weaknesses in database applications. This expert
Last update: February 23, 2004
Last update: February 23, 2004 Web Security Glossary The Web Security Glossary is an alphabetical index of terms and terminology relating to web application security. The purpose of the Glossary is to
Finding XSS in Real World
Finding XSS in Real World by Alexander Korznikov [email protected] 1 April 2015 Hi there, in this tutorial, I will try to explain how to find XSS in real world, using some interesting techniques. All
netkit lab single-host Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group
Università degli Studi Roma Tre Dipartimento di Informatica e Automazione Computer Networks Research Group netkit lab single-host Version Author(s) E-mail Web Description 2.2 G. Di Battista, M. Patrignani,
Application Layer Encryption: Protecting against Application Logic and Session Theft Attacks. Whitepaper
Application Layer Encryption: Protecting against Application Logic and Session Theft Attacks Whitepaper The security industry has extensively focused on protecting against malicious injection attacks like
Attacking MongoDB. Firstov Mihail
Attacking MongoDB Firstov Mihail What is it? MongoDB is an open source document-oriented database system. Features : 1. Ad hoc queries. 2. Indexing 3. Replication 4. Load balancing 5. File storage 6. Aggregation
Cyber Security Workshop Ethical Web Hacking
Cyber Security Workshop Ethical Web Hacking May 2015 Setting up WebGoat and Burp Suite Hacking Challenges in WebGoat Concepts in Web Technologies and Ethical Hacking 1 P a g e Downloading WebGoat and Burp
Essential IT Security Testing
Essential IT Security Testing Application Security Testing for System Testers By Andrew Muller Director of Ionize Who is this guy? IT Security consultant to the stars Member of OWASP Member of IT-012-04
FINAL DoIT 11.03.2015 - v.4 PAYMENT CARD INDUSTRY DATA SECURITY STANDARDS APPLICATION DEVELOPMENT AND MAINTENANCE PROCEDURES
Purpose: The Department of Information Technology (DoIT) is committed to developing secure applications. DoIT s System Development Methodology (SDM) and Application Development requirements ensure that
White Paper BMC Remedy Action Request System Security
White Paper BMC Remedy Action Request System Security June 2008 www.bmc.com Contacting BMC Software You can access the BMC Software website at http://www.bmc.com. From this website, you can obtain information
ASL IT Security Advanced Web Exploitation Kung Fu V2.0
ASL IT Security Advanced Web Exploitation Kung Fu V2.0 A S L I T S e c u r i t y P v t L t d. Page 1 Overview: There is a lot more in modern day web exploitation than the good old alert( xss ) and union
Server Security. Contents. Is Rumpus Secure? 2. Use Care When Creating User Accounts 2. Managing Passwords 3. Watch Out For Aliases 4
Contents Is Rumpus Secure? 2 Use Care When Creating User Accounts 2 Managing Passwords 3 Watch Out For Aliases 4 Deploy A Firewall 5 Minimize Running Applications And Processes 5 Manage Physical Access
Web Application Vulnerabilities and Avoiding Application Exposure
Web Application Vulnerabilities and Avoiding Application Exposure The introduction of BIG-IP Application Security Manager (ASM) version 9.4.2 marks a major step forward. BIG-IP ASM now offers more features
Perl In Secure Web Development
Perl In Secure Web Development Jonathan Worthington ([email protected]) August 31, 2005 Perl is used extensively today to build server side web applications. Using the vast array of modules on CPAN, one
Threat Modeling. Categorizing the nature and severity of system vulnerabilities. John B. Dickson, CISSP
Threat Modeling Categorizing the nature and severity of system vulnerabilities John B. Dickson, CISSP What is Threat Modeling? Structured approach to identifying, quantifying, and addressing threats. Threat
Network Security EDA491 2011/2012. Laboratory assignment 4. Revision A/576, 2012-05-04 06:13:02Z
Network Security EDA491 2011/2012 Laboratory assignment 4 Revision A/576, 2012-05-04 06:13:02Z Lab 4 - Network Intrusion Detection using Snort 1 Purpose In this assignment you will be introduced to network
Testing Web Applications for SQL Injection Sam Shober [email protected]
Testing Web Applications for SQL Injection Sam Shober [email protected] Abstract: This paper discusses the SQL injection vulnerability, its impact on web applications, methods for pre-deployment and
Application Design and Development
C H A P T E R9 Application Design and Development Practice Exercises 9.1 What is the main reason why servlets give better performance than programs that use the common gateway interface (CGI), even though
1. What is SQL Injection?
SQL Injection 1. What is SQL Injection?...2 2. Forms of vulnerability...3 2.1. Incorrectly filtered escape characters...3 2.2. Incorrect type handling...3 2.3. Vulnerabilities inside the database server...4
Cracking the Perimeter via Web Application Hacking. Zach Grace, CISSP, CEH [email protected] January 17, 2014 2014 Mega Conference
Cracking the Perimeter via Web Application Hacking Zach Grace, CISSP, CEH [email protected] January 17, 2014 2014 Mega Conference About 403 Labs 403 Labs is a full-service information security and compliance
Rational AppScan & Ounce Products
IBM Software Group Rational AppScan & Ounce Products Presenters Tony Sisson and Frank Sassano 2007 IBM Corporation IBM Software Group The Alarming Truth CheckFree warns 5 million customers after hack http://infosecurity.us/?p=5168
Introduction:... 1 Security in SDLC:... 2 Penetration Testing Methodology: Case Study... 3
Table of Contents Introduction:... 1 Security in SDLC:... 2 Penetration Testing Methodology: Case Study... 3 Information Gathering... 3 Vulnerability Testing... 7 OWASP TOP 10 Vulnerabilities:... 8 Injection
