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. To solve the lab, buy a "Lightweight l33t leather jacket".
You can log in to your own account using the following credentials: wiener:peter
lab에 들어가면 가상 shop 사이트가 나온다.
입력 검증을 안한다.
구매 과정에서 logic flaw을 이용하면 조작된 가격으로 물건을 구매할 수 있다.
wiener : peter
로 로그인 가능하다.
목표
"Lightweight l33t leather jacket" 구매한다.
물건 사는 workflow(구매과정)을 확인하기 위해 일단 burpsuite를 켜고, 주어진 아이디 : 비밀번호로 로그인한 뒤 "Lightweight l33t leather jacket"를 view details을 누르고 수량을 1개 고른 뒤 add to cart를 하고 장바구니를 확인하다.
현재가 가지고 있는 돈이 $100 밖에 없어서 가격이 $1337인 "Lightweight l33t leather jacket"을 살 수 없다. 이번에 어떤 식으로 workflow가 이루어졌는지 확인하기 위해 burpsuite의 proxy에서 HTTP history를 확인한다. 확인하다 보면 그 중 add to cart할 때 들어가는 정보를 확인할 수 있다.
맨 아래 부분을 보면 값이 들어가는 것을 보는데 수량을 조작할 수 있을 거 같다. repeater로 가져와서 quantity에 값을 -10으로 바꾼 뒤에 보내본다.
그리고 나서 장바구니에서 확인을 하면 "Lightweight l33t leather jacket" 수량이 -9인 것을 확인할 수 있다.
즉 수량의 값을 이용해서 "Lightweight l33t leather jacket"을 싸게 사면 될 거 같다. "Lightweight l33t leather jacket" 뒤에 remove 눌러서 장바구니를 비운 뒤에 "Lightweight l33t leather jacket"를 1개 넣고, 두번째로 비싼 "First Impression Costumes"($99.20)에 들어간 뒤에 burpsuite proxy의 intercept를 킨 뒤 상품을 하나를 장바구니에 넣고 burpsuite를 확인한다.
거의 $100 정도 하니까 quantity 값을 -13으로 바꾼 뒤에 intercept를 푼다. 그리고 나서 장바구니를 확인한다.
$47.40가 되었다. 이제 구매를 하면 문제가 풀린다.