Door Erik van Straten: 21-02-2017, 19:42 door Rinjani: Wow, dat is niet best... En ik heb beide nodig op mijn systeem (Java - niet in de browser - én Python).
Uit [4] (voor zie mijn vorige bijdrage):
20-01-2017, door Timothy Morgan: [...]
this FTP protocol injection allows one to fool a victim's firewall into allowing TCP connections from the Internet to the vulnerable host's system on any "high" port (1024-65535). A nearly identical vulnerability exists in Python's urllib2 and urllib libraries. In the case of Java, this attack can be carried out against desktop users even if those desktop users do not have the Java browser plugin enabled.
[...]
Hoe dat kan weet ik ook niet, en misschien is het beter als zo min mogelijk mensen dit weten (tot Oracle de kwetsbaarheid gepatched heeft).
FTP opent een control channel. Dat is een connectie naar de server op (gebruikelijk) poort 21 waarnaar de commando's worden gestuurd. In dit geval omdat er line breaks in de username toe worden gestaan kun je dus meerdere commando's sturen want FTP commando's zijn gesplitst met line breaks maar hetzelfde geldt voor HTTP requests die ook uit headers bestaan met daarna een request body. Daarom zie je ook dat postfix standaard bepaalde HTTP verbs filtert en de connectie sluit. Zo zal dit werken met elk plain text protocol waarin je new lines kan injecteren ergens.
Terug naar FTP. Na het openen van de control channel stuurt jouw client naar de server hoe de server terug kan verbinden met jou. Daarvoor opent de client een random poort in deze hoge poort ranges en stuurt vervolgens op 'hoi, ik gebruik deze poort' waarna de server terug connect en een data kanaal opent. Dat heet 'FTP classic mode' of ook wel anders genoemd 'active'. Nadat NAT populair werd was dit natuurlijk een probleem en hebben ze passive mode geintroduceerd (PASV) waarbij de client dit data kanaal opent.
Anyways, FTP was heel populair (en is nog steeds populair) dus over verloop van tijd zijn firewall oplossingen die in de pakketjes kijken gaan denken 'hey ik help deze gebruiker' en als ze dus een client die in FTP active mode staat een control channel open pakketje zien sturen openen ze die poort.
Dit probleem bestaat al heel lang, her wat uitgebreidere uitleg: http://phrack.org/issues/63/19.html#article