Business logic vulnerabilities
https://portswigger.net/web-security/logic-flaws
Lab: Excessive trust in client-side controls
This lab doesn't adequately validate user input. You can exploit a logic flaw in its purchasing workflow to buy items for an unintended price.
We intercepted the request at Add to cart option.
We can see the request as follows
We can change price to as we want.
Then go to the cart, we can see jacket's value is 1.00$. We can change price as we want.
Lab: High-level logic vulnerability
This lab doesn't adequately validate user input. You can exploit a logic flaw in its purchasing workflow to buy items for an unintended price.
We intercepted the request at Add to cart option.
We can see the request as follows
We sent the request to Repeater. We can change quantity value as we want.
It accepts negative, zero and positive decimal values.
We can change the value as -1.
Then go to the cart, we can see jacket's value is -1337.00$. Then we'll face this error: Cart total price cannot be less than zero
So, if we combine positive and negative ones, can we buy them like this?
We intercepted the request at Add to cart option of "Conversation Controlling Lemon".
The we can see total amount is $99.40. With this situtation, we can buy these products.
Lab: Low-level logic flaw
This lab doesn't adequately validate user input. You can exploit a logic flaw in its purchasing workflow to buy items for an unintended price.
We intercepted the request at Add to cart option.
We can set maxiumum value of quantity to 99.
The price has exceeded the maximum value permitted for an integer in the back-end programming language (2,147,483,647). As a result, the value has looped back around to the minimum possible value (-2,147,483,647).
If we can combine values of two products, we can make an order with this limit.
We sent below request to repeater.
We added high number of it to get catch the proper value.
We sent to the request to Intruder with 326 null payloads. We can see total value as -$64060.96
After that we need to add some quantities of it to get proper value. We added 47 more. Then the total is -$1221.96. At this situation we can add other products to get proper value.
Dancing In The Dark - $75.52 - 17 pieces.
At the end, total value was $61.88. It is a proper one. We can place order.
Lightweight "l33t" Leather Jacket
$1337.00
32123
Dancing In The Dark
$75.52
17
Lab: Inconsistent handling of exceptional input
This lab doesn't adequately validate user input. You can exploit a logic flaw in its account registration process to gain access to administrative functionality.
There is /admin interface. Admin interface is only available if logged in as a DontWannaCry user.
@exploit-accd1fe01eba9513c0a3965d01ec0079.web-security-academy.net
At the registration phase, very-long-string@YOUR-EMAIL-ID.web-security-academy.net The very-long-string should be at least 200 characters long.
$ ./pattern_create.rb -l 250 Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2A
aa0aa1aa2aa3aa4aa5aa6aa7aa8aa9ab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ac0ac1ac2ac3ac4ac5ac6ac7ac8ac9ad0ad1ad2ad3ad4ad5ad6ad7ad8ad9ae0ae1ae2ae3ae4ae5ae6ae7ae8ae9af0af1af2af3af4af5af6af7af8af9ag0ag1ag2ag3ag4ag5ag6ag7ag8ag9ah0ah1ah2ah3ah4ah5ah6ah7ah8ah9ai0ai1ai2a@exploit-accd1fe01eba9513c0a3965d01ec0079.web-security-academy.net
then log in the account, we can see email addresses as
aa0aa1aa2aa3aa4aa5aa6aa7aa8aa9ab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ac0ac1ac2ac3ac4ac5ac6ac7ac8ac9ad0ad1ad2ad3ad4ad5ad6ad7ad8ad9ae0ae1ae2ae3ae4ae5ae6ae7ae8ae9af0af1af2af3af4af5af6af7af8af9ag0ag1ag2ag3ag4ag5ag6ag7ag8ag9ah0ah1ah2ah3ah4ah5ah6ah7ah8ah9ai0ai1ai2a@expl
There are 255 chars.
aa0aa1aa2aa3aa4aa5aa6aa7aa8aa9ab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ac0ac1ac2ac3ac4ac5ac6ac7ac8ac9ad0ad1ad2ad3ad4ad5ad6ad7ad8ad9ae0ae1ae2ae3ae4ae5ae6ae7ae8ae9af0af1af2af3af4af5af6af7af8af9ag0ag1ag2ag3ag4ag5ag6ag7ag8ag9ah0ah1ah2ah3ah4ah5ah6ah7ah8a@dontwannacry.com
We are matching the value as shown to get access admin rights.
aa0aa1aa2aa3aa4aa5aa6aa7aa8aa9ab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ac0ac1ac2ac3ac4ac5ac6ac7ac8ac9ad0ad1ad2ad3ad4ad5ad6ad7ad8ad9ae0ae1ae2ae3ae4ae5ae6ae7ae8ae9af0af1af2af3af4af5af6af7af8af9ag0ag1ag2ag3ag4ag5ag6ag7ag8ag9ah0ah1ah2ah3ah4ah5ah6ah7ah8a@dontwannacry.com.exploit-accd1fe01eba9513c0a3965d01ec0079.web-security-academy.net
Then we need to register again with this email. After the login phase, we can see Admin panel tab.
Your email is: aa0aa1aa2aa3aa4aa5aa6aa7aa8aa9ab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ac0ac1ac2ac3ac4ac5ac6ac7ac8ac9ad0ad1ad2ad3ad4ad5ad6ad7ad8ad9ae0ae1ae2ae3ae4ae5ae6ae7ae8ae9af0af1af2af3af4af5af6af7af8af9ag0ag1ag2ag3ag4ag5ag6ag7ag8ag9ah0ah1ah2ah3ah4ah5ah6ah7ah8a@dontwannacry.com
The application server truncated the address associated with your account to 255 characters. As a result, you have been able to register with what appears to be a valid @dontwannacry.com address.
Lab: Inconsistent security controls
This lab's flawed logic allows arbitrary users to access administrative functionality that should only be available to company employees.
We registered a new account. There is an info at register page. Registered with - attacker@exploit-aca21ffe1e6dd48bc05d356c016b0026.web-security-academy.net
If you work for DontWannaCry, please use your @dontwannacry.com email address
At the my account page there is a Email Update function. Changed with -
attacker2@exploit-aca21ffe1e6dd48bc05d356c016b0026.web-security-academy.net
There is no need verification. So we can change our email as we want. Changed with - test@dontwannacry.com
Then we can access Admin panel.
Lab: Weak isolation on dual-use endpoint
This lab makes a flawed assumption about the user's privilege level based on their input. As a result, you can exploit the logic of its account management features to gain access to arbitrary users' accounts.
There is a change password function at my account page.
The post request parameters are csrf=PKVrI8YpD118cXeuRIiB5ULV7osgMvFb&username=wiener¤t-password=peter&new-password-1=pass&new-password-2=pass
We played with these variables. When we deleted the current-password variable from request, we could change password.
csrf=PKVrI8YpD118cXeuRIiB5ULV7osgMvFb&username=wiener&new-password-1=pass&new-password-2=pass
Then we tried to reset administrator pass.
It did not check username neither.
csrf=PKVrI8YpD118cXeuRIiB5ULV7osgMvFb&username=administrator&new-password-1=cel1s0&new-password-2=cel1s0
So we could change administrator password to cel1s0.
Lab: Insufficient workflow validation
This lab makes flawed assumptions about the sequence of events in the purchasing workflow.
We bought a product which was “Cheshire Cat Grin”.
We can see workflow as follows:
POST /cart
GET /cart
POST /cart/checkout
GET /cart/order-confirmation?order-confirmed=true
We can bypass POST /cart/checkout step. So we can avoid validation of having enough money.
We added the product to the cart. Then you need to make this request.
GET /cart/order-confirmation?order-confirmed=true
Lab: Authentication bypass via flawed state machine
This lab makes flawed assumptions about the sequence of events in the login process.
We can see workflow as follows:
GET /login
POST /login
GET /role-selector
POST /role-selector
GET /
If we can bypass the role-selector part, we can get admin rights.
With the content discovery tool, we can identify /admin path.
Answer: This workflow:
GET /login
POST /login
GET /admin
Lab: Flawed enforcement of business rules
This lab has a logic flaw in its purchasing workflow.
New customers use code at checkout: NEWCUST5
Sign up to our newsletter! -> Use coupon SIGNUP30 at checkout!
Try applying the codes more than once. Notice that if you enter the same code twice in a row, it is rejected because the coupon has already been applied. However, if you alternate between the two codes, you can bypass this control.
Lab: Infinite money logic flaw
This lab has a logic flaw in its purchasing workflow.
Sign up to our newsletter! -> Use coupon SIGNUP30 at checkout!
There is a gift card as a product.
If we can combine discount coupon and gift card, we can get infinite money logic flaw.
Verified - It works! -Every step, we can gain $3.
We can create a macro to automize this process.
For detailed information of creating the macro, you can see the solution of the lab.
Sequence of request:
POST /cart
POST /cart/coupon
POST /cart/checkout
GET /cart/order-confirmation?order-confirmed=true
POST /gift-card
We need to change gift card code to related request.
Then we start a sniper attack with GET / request with 412 null payloads.
When the attack stops, we will have enough money to buy the product.
Last updated