Amikor a CONNECT 200-at ad vissza, és a TLS azonnal nem tud dekódolni, vizsgálja meg az összekötő határbájtjait, mielőtt tanúsítványokat vagy titkosításokat cserél.

Egy előállított engedélyezési érték már végződhet sortöréssel. Egy további sorvég idő előtt lezárhatja a HTTP-fejléceket, és a szándékolt Host mezőt vagy más egyszerű szöveget a kérés mögött hagyhatja.

Egy minimális HTTP/1.1 CONNECT kérés CRLF-et használ a sorok között, és egy üres sort a végén:

b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"

Helyezzen minden engedélyezési mezőt az utolsó üres sor elé, beágyazott sortörés nélkül. A Pythonban a "\n" sortörést jelöl; a backslasht és n betűt tartalmazó nyers karakterlánc nem. Ellenőrizze, milyen bájtokat állít elő egy kódolási segédeszköz, mielőtt megpróbálja eltávolítani őket—a régebbi segédeszközök sortöréseket adhattak hozzá.

Miután a CONNECT sikeres, ezek a fennmaradó bájtok az alagútprotokollhoz tartoznak. Az elkóborolt egyszerű szöveg elérhet egy TLS-t váró partnert. A sikeres állapot nem tudja megjavítani a hibás kérés után már sorba állított bájtokat.

Vizsgálja meg a fogadási határt is. Olvassa el a teljes proxyválaszt, mielőtt átadja a socketet a TLS-nek, kezelje a részleges olvasásokat, és őrizzen meg mindent, amit a fejléceken túl olvas. Egy socketolvasásnak nem kell egy teljes üzenetet tartalmaznia.

Ha ez az elemző az Öné, hasonlítsa össze a szerkesztett bájtábrázolást a huzal nyelvtanával; tartsa láthatóan a hosszakat és a sorhatárokat, miközben elrejti a jelszót. Egy olyan alkalmazás számára, amelynek csak proxykapcsolatra van szüksége, egy karbantartott összekötő elkerüli, hogy ennek a keretező kódnak a tulajdonosa legyen.

Kapcsolódó cikkek