SOME - Same Origin Method Execution

Support HackTricks

Same Origin Method Execution

Daar sal geleenthede wees waar jy 'n beperkte javascript op 'n bladsy kan uitvoer. Byvoorbeeld, in die geval waar jy kan beheer oor 'n terugroepwaarde wat uitgevoer sal word.

In daardie gevalle is een van die beste dinge wat jy kan doen om die DOM te benader om enige sensitiewe aksie wat jy daar kan vind (soos om op 'n knoppie te klik) te noem. Dit is egter gewoonlik dat jy hierdie kwesbaarheid in klein eindpunte sonder enige interessante ding in die DOM sal vind.

In daardie scenario's sal hierdie aanval baie nuttig wees, omdat die doel is om in staat te wees om die beperkte JS-uitvoering binne 'n DOM van 'n ander bladsy van dieselfde domein te misbruik met baie interessante aksies.

Basies is die aanvalstroom soos volg:

  • Vind 'n terugroep wat jy kan misbruik (potensieel beperk tot [\w\._]).

  • As dit nie beperk is nie en jy enige JS kan uitvoer, kan jy dit net as 'n gewone XSS misbruik.

  • Laat die slagoffer 'n bladsy oopmaak wat deur die aanvaller beheer word.

  • Die bladsy sal homself in 'n ander venster oopmaak (die nuwe venster sal die objek opener hê wat na die aanvanklike een verwys).

  • Die aanvanklike bladsy sal die bladsy laai waar die interessante DOM geleë is.

  • Die tweede bladsy sal die kwesbare bladsy laai wat die terugroep misbruik en die opener objek gebruik om toegang te verkry en 'n aksie in die aanvanklike bladsy uit te voer (wat nou die interessante DOM bevat).

Let daarop dat selfs al het die aanvanklike bladsy toegang tot 'n nuwe URL nadat die tweede bladsy geskep is, die opener objek van die tweede bladsy steeds 'n geldige verwysing na die eerste bladsy in die nuwe DOM is.

Boonop, om die tweede bladsy in staat te stel om die opener objek te gebruik, moet albei bladsye in die same oorsprong wees. Dit is die rede waarom jy, om hierdie kwesbaarheid te misbruik, 'n soort XSS in die same oorsprong moet vind.

Exploitation

Example

  • Jy kan 'n kwesbare voorbeeld vind in https://www.someattack.com/Playground/

  • Let daarop dat in hierdie voorbeeld die bediener javascript kode genereer en dit byvoeg tot die HTML gebaseer op die inhoud van die terugroepparameter: <script>opener.{callbacl_content}</script> . Daarom hoef jy in hierdie voorbeeld nie die gebruik van opener eksplisiet aan te dui nie.

  • Kyk ook na hierdie CTF skrywe: https://ctftime.org/writeup/36068

References

Support HackTricks

Last updated