Wpis z mikrobloga

#zagadkihakerskie #security #programowanie

Proponuję kolejną zagadkę hakerską, znów na tapetę bierzemy #xss. Pod adresem http://hakerium.cba.pl/zad8/ znajduje się strona z banalną podatnością typu XSS. Wystarczy wpisać dowolny tekst HTML i zostanie on wyświetlony na stronie, np. http://hakerium.cba.pl/zad8/?imie=%3Cscript%3Ealert%281%29%3C/script%3E

Na czym polega więc zagadka, skoro już podałem rozwiązanie? Ano na tym, że pole

imie
jest ograniczone do 30 znaków. A zatem najprostszy

alert(1)
da radę wykonać, ale odrobinę bardziej skomplikowany

alert(document.domain)
już nie: http://hakerium.cba.pl/zad8/?imie=%3Cscript%3Ealert%28document.domain%29%3C/script%3E

A zatem pytanie brzmi: co należy tutaj zrobić, aby móc pomimo wszystko wykonać tutaj dowolny kod javascriptowy, zapominając o 30-znakowym ograniczeniu? Miło widziany proof of concept :)
  • 12
@rationalistic: Jeśli masz na myśli użycie atrybutu

src
tagu

script
, to nazwa domeny musiałaby składać się z co najwyżej trzech znaków. Wykonalne, choć wymaga trochę zachodu. Jest inny sposób, który nie wymaga takich nakładów.
@rationalistic: Nie bardzo wiem jak miałoby to działać, biorąc pod uwagę, że nie masz nic w evalu. Najprościej spróbować samemu coś zdziałać i jak będzie działać, to podesłać linka ;)

Jak nie będzie odpowiedzi do jutrzejszego wieczoru, to podam rozwiązanie.
@koziolek: niezłe poświęcenie żeby do zagadki domenę zakładać ;)

Nie jestem pewien czy inny doctype przypadkiem nie zablokowały takiego zamknięcia script, muszę to pózniej sprawdzić.

Jak będę wieczorem na kompie, to podam jeszcze inne rozwiazanie.
@koziolek: @rationalistic: OK, a więc rozwiązanie, o które mi chodziło:

Skorzystamy z tagu iframe i umieścimy XSS-owaną domenę wewnątrz tego iframe'a. Ze względu na same origin policy nie ma możliwości odwoływać się do jakichkolwiek atrybutów strony wewnątrz iframe'a, jeśli ta jest z innej domeny (z kilkoma wyjątkami, m.in.

postMessage
, który tutaj akurat się nie przysłuży). Istnieje jednak pewien atrybut, na który poprzez iframe'a możemy mieć wpływ - jest nim