Perché questo attacco di iniezione XPATH fallisce e cosa sta succedendo sullo sfondo di un attacco?

3

Ciao Sto cercando di capire l'iniezione di XPATH, ho un problema ctf loacl e non riesco a capire come funziona. Quindi questa è la query:

555-555-555 = true

Dopo i parametri di fuzzing ottengo:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

        <br><br>

        <b> Exception Details: </b>System.Xml.XPath.XPathException:

'//acctprofile[acctid='555-555-555]'test']' has an invalid token.

Quindi presumo che ci sia un'iniezione di XPATH qui. la funzione concat () funziona bene, ma doc () mi dà:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

        Exception Details: System.Xml.XPath.XPathException: Namespace Manager or XsltContext needed. This query has a prefix,

variable, or user-defined function.

Sto provando a usare doc () oob data exfiltration bcos l'applicazione non emette alcun dato se la query è ok, quindi oob è stata la mia prima idea. Qualsiasi suggerimento sarebbe benvenuto. Per essere precisi, in che modo nella mia situazione attuale posso sfruttare ulteriormente questo bug?

Grazie.

    
posta Daniel 14.10.2016 - 17:33
fonte

1 risposta

1

Spero che questo ti aiuti:

Prima di tutto, se le query corrette non mostrano nulla hai a che fare con un'iniezione XPath cieca.

In secondo luogo, l'errore di cui hai parlato:

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Xml.XPath.XPathException: Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.

Potrebbe essere necessario aggiungere lo spazio dei nomi prima della query.

Questa:

//acctprofile[acctid='555-555-555]'test']

Dovrebbe essere più simile a questo:

//"namespace":acctprofile[acctid='555-555-555]'test']

Ma questo richiede che tu conosca lo spazio dei nomi o che abbia qualsiasi variabile da inserire lì.

    
risposta data 17.10.2016 - 16:33
fonte

Leggi altre domande sui tag