Security3_CSRF

Waar staat CSRF voor?
A
Content Site Reform Foundation
B
Cross Site Request Forging
C
Cross Script Return Findings
D
Cross Script Request Forging
1 / 9
volgende
Slide 1: Quizvraag
Applicatie- en mediaontwikkelaarMBOStudiejaar 3

In deze les zitten 9 slides, met interactieve quizzen en tekstslides.

time-iconLesduur is: 15 min

Onderdelen in deze les

Waar staat CSRF voor?
A
Content Site Reform Foundation
B
Cross Site Request Forging
C
Cross Script Return Findings
D
Cross Script Request Forging

Slide 1 - Quizvraag

De stappen van een CSRF aanval:


1. Bouw een exploit URL of Script
2. Gebruik "Social Engineering" om de gebruiker te misleiden 

Slide 2 - Tekstslide

Noem een voorbeeld van social engineering.

Slide 3 - Open vraag

Voorbeeld misbruik van "GET"
GET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1
Voorbeelden:
Normal Request:
GET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1 
Altered Request:
http://bank.com/transfer.do?acct=MARIA&amount=100000
GET:
POST:
POST http://bank.com/transfer.do HTTP/1.1
acct=BOB&amount=100

Slide 4 - Tekstslide

Mode of Transference (GET):
<a href="http://bank.com/transfer.do?acct=MARIA&amount=100000">View my Pictures!</a>
Email (fake link:)
Email (0x0 img):
<img src="http://bank.com/transfer.do?acct=MARIA&amount=100000" width="0" height="0" border="0">

No visible trace but the browser will submit the request to bank.com. 

Slide 5 - Tekstslide

Mode of transference (POST):
<form action="http://bank.com/transfer.do" method="POST">
  <input type="hidden" name="acct" value="MARIA"/>
  <input type="hidden" name="amount" value="100000"/>
  <input type="submit" value="View my pictures"/>
</form>

Slide 6 - Tekstslide

Hoe bescherm ik mijn applicatie:
Generate a Session token for varification in PHP:
$_SESSION['token'] = bin2hex(random_bytes(24));
$token = $_SESSION['token']; 
Example of use of Token in a form:
<form>
  Subject: <input type="text" name="subject"/><br/>
  Content: <input type="text" name="content"/><br/>
  <input type="submit" value="Submit"/>
  <input type="hidden" name="token" value="<?php echo $token; ?>"/>
</form>

Result:
POST /post.php HTTP/1.1
Host: example.com
subject=subject&content=content&token=R6B7hoBQd0wfG5Y6qOXHPNm4b9WKsTq6Vy6Jssxb

Slide 7 - Tekstslide

Verificatie:
if (hash_equals($_SESSION['token'], $_POST['token'])) 
{
  // Action if token is valid
else 
{
  // Action if token is invalid
}

Slide 8 - Tekstslide

Opdracht
- Maak een PHP pagina met een form met minstens 3 velden.
- Maak een token en stuur deze met de Form door.
- Stuur ook een string zonder token.
- Gebruik de POST methode voor beide.

Display op je resultaat pagina:
- de POST string (inclusief token) (positief resultaat)
- Foutmelding als er geen token is toegevoegd. (negatief resultaat)

Stuur mij per mail (lberge@mborijnland.nl) je php script.

Slide 9 - Tekstslide