通用漏洞
COSP跨域资源
原理
- CORS,即跨源资源共享(Cross-Origin Resource Sharing)。同源策略(Same OriginPolicy)要求不同源之间是无法通信的,而CORS则是放宽同源策略以通过浏览器实现网站之间通信的机制。
- CORS全称为Cross-Origin Resource Sharing即跨域资源共享,用于绕过SOP(同源策略)来实现跨域资源访问的一种技术。
CORS漏洞则是利用CORS技术窃取用户敏感数据,CORS漏洞的成因是服务端配置的规则不当所导致的,服务器端没有配置Access-Control-Allow-Origin等字段
危害
1、获取用户数据
2、客户端缓存中毒:这种配置允许攻击者利用其他的漏洞,更改没有验证的字段,看是否正常回显。比如,一个应用返回数据报文头部中包含“X-User”这个字段,这个字段的值没有经过验证就直接输出到返回页面上,此时就可以结合XSS漏洞来利用。
3、服务端缓存中毒:利用CORS的错误配置注入HTTP头部,这可能会被服务器端缓存下来,比如制造存储型xss
防御
1、仔细评估是否开启CORS,如果不必要就不要开启CORS。
2、如果是绝对必要的话,要定义“源”的白名单。尽量不使用正则表达式配置,不要配置“Access-Contol-Allow-Origin”为通配符“*”,同时严格校验来自请求的Origin值。
3、仅仅允许安全的协议,有必要验证协议以确保不允许来自不安全通道(HTTP)的交互,否则中间人(MitM)将绕过应用是所使用的HTTPS。
4、要尽可能的返回”Vary: Origin”这个头部,以避免攻击者利用浏览器缓存。、
5、如果可能的话避免使用“Credentials”头,由于“Access-Control-Allow-Credentials”标头设置为“true”时允许跨域请求中带有凭证数据,因此只有在严格必要时才应配置它。此头部也增加了CSRF攻击的风险;因此,有必要对其进行保护。
6、限制使用的方法,通过“Access-Control-Allow-Methods”头部,还可以配置允许跨域请求的方法,这样可以最大限度地减少所涉及的方法。
7、限制缓存的时间,通过“Access-Control-Allow-Methods”和“Access-Control-Allow-Headers”头部,限制浏览器缓存信息的时间。可以通过使用“Access-Control-Max-Age”标题来完成,该头部接收时间数作为输入,该数字是浏览器保存缓存的时间。配置相对较低的值(例如大约30分钟),确保浏览器在短时间内可以更新策略(比如允许的源)。
8、仅配置所需要的头,仅在接收到跨域请求的时候才配置有关于跨域的头部,并且确保跨域请求是合法的(只允许来自合法的源)。
参考
https://wh0ale.github.io/2018/12/26/2018-12-26-CORS漏洞/
https://www.cnblogs.com/Xy--1/p/13069099.html
https://its301.com/article/BHSZZY/119024992
项目
https://github.com/chenjj/CORScanner
JSONP跨域回调
原理
JSONP 是 JSON with padding(填充式 JSON 或参数式 JSON)的简写。
JSONP实现跨域请求的原理简单的说,就是动态创建
<script>标签,然后利用<script>的src 不受同源策略约束来跨域获取数据。
JSONP就是为了跨域获取资源而产生的一种非官方的技术手段(官方的有 CORS 和 postMessage),它利用的是 <script> 标签的 src 属性不受同源策略影响的特性。
危害
1.攻击者利用存在漏洞的网站,将链接通过邮件等形式推送给受害者,如果受害者点击了链接,则攻击者便可以获取受害者的个人敏感的信息。所以JSONP劫持漏洞会泄露信息。
2.可能导致用户权限被盗用;
攻击者通过JSON劫持构造盗取管理员或高权限用户的脚本,一旦被访问,权限立即被盗用。
3. 可以通过劫持对网页进行挂马;
在JSON劫持点构造引向漏洞后门木马,但访问直接利用漏洞批量挂马。
4. 可对劫持页进行网站钓鱼;
利用JSON劫持直接导向伪装网站地址。
5. 可做提权攻击;
6. 变种拒绝服务攻击;
劫持后将流量导向受害网站,直接发动DDOS攻击。
防御
1、严格安全的实现 CSRF 方式调用 JSON 文件:限制 Referer 、部署一次性 Token 等。
2、严格安装 JSON 格式标准输出 Content-Type 及编码( Content-Type : application/json; charset=utf-8 )。
3、严格过滤 callback 函数名及 JSON 里数据的输出。
4、严格限制对 JSONP 输出 callback 函数名的长度(如防御上面 flash 输出的方法)。
5、其他一些比较“猥琐”的方法:如在 Callback 输出之前加入其他字符(如:/**/、回车换行)这样不影响 JSON 文件加载,又能一定程度预防其他文件格式的输出。还比如 Gmail 早起使用 AJAX 的方式获取 JSON ,听过在输出 JSON 之前加入 while(1) ;这样的代码来防止 JS 远程调用。
参考
https://www.k0rz3n.com/2018/06/05/由浅入深理解JSONP并拓展/
https://www.k0rz3n.com/2019/03/07/JSONP 劫持原理与挖掘方法/
https://yinwc.github.io/2021/04/29/JSONP漏洞/
项目
https://github.com/p1g3/JSONP-Hunter
子域名接管
原理

子域名接管是注册不存在的域名以获得对另一个域的控制权的过程,常出现在CNAME记录中。
此过程最常见的情况如下
1.域名(例如,sub.example.com)将CNAME记录用于另一个域(例如,sub.example.com CNAME anotherdomain.com)。
2.在某个时间点,anotherdomain.com到期并可供任何人注册。
3.由于未从example.com DNS区域删除CNAME记录,因此注册anotherdomain.com的任何人都可以完全控制sub.example.com,直到存在DNS记录为止。
危害
子域接管的含义非常重要。通过使用子域名托管,攻击者可以从合法的域名发送网络钓鱼电子邮件,执行跨站脚本(XSS)或破坏与该域相关联的品牌的声誉。
防御
- 提高资产管理能力 (避免云服务过期或被关闭,被他人"抢注")
- 可以考虑使用名称不可自定义(随机hash值)的云服务商 如
258ea2e57bca0.Acloud.com(避免云服务过期或被关闭,被他人"抢注") - 如果被"抢注" 重新设置域名的CNAME
参考
https://cloud.tencent.com/developer/article/1728668
https://www.cnblogs.com/Icedisaster/p/15975546.html
https://zhuanlan.zhihu.com/p/136694063
http://heikesz.cooou.com/web/81169.html
项目
https://github.com/pwnesia/dnstake
https://github.com/anshumanbh/tko-subs
https://github.com/mhmdiaa/second-order
https://github.com/r3curs1v3-pr0xy/sub404
https://github.com/Echocipher/Subdomain-Takeover
CRLF注入
解析
描述
HTTP响应头拆分漏洞(CRLF)”是一种新型的web攻击方案,当用户将CRLF字符插入到应用中而触发漏洞的攻击技巧。当该字符与HTTP协议请求和响应的头部一起联用时就有可能会出现各种各样的漏洞,包括http请求走私(HTTP Request Smuggling)和http响应拆分(HTTP Response Splitting)。
在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting(HRS)。
CRLF指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a)
原理
HRS漏洞存在的前提是 :url当中输入的字符会影响到文件,比如在重定位当中可以尝试使用%0d%0a作为crlf.
一般网站会在HTTP头中加上Location: http://baidu.com的方式来进行302跳转,所以我们能控制的内容就是Location:后面的XXX网址,对这个地址进行污染。
假设服务端(PHP)的处理方式:
if($_COOKIE("security_level") == 1)
{
header("Location: ". $_GET['url']);
exit;
}
代码意思是说当条件满足时,将请求包中的url参数值拼接到Location字符串中,并设置成响应头发送给客户端。
此时服务器端接收到的url参数值是我们修改后的:http://baidu.com/xxx%0a%0dSet-Cookie: test123=123
在url参数值拼接到Location字符串中,设置成响应头后,响应头就会看到:Set-Cookie: test123=123
危害
1.缓存污染,它是一种场景,攻击者可以修改缓冲中的条目,并托管恶意页面(即包含 JavaScript)而不是合理的页面。
2.防火墙绕过,它是一种场景,请求被构造,用于避免安全检查,通常涉及 CRLF 和过大的请求正文。
3.请求劫持:它是一种场景,攻击者恶意盗取 HTTPOnly 的 Cookie,以及 HTTP 验证信息。这类似于 XSS,但是不需要攻击者和客户端之间的交互。
防御
过滤 \r 、\n之类的换行符,避免输入的数据污染到其他HTTP头。
所以这个过滤也应该添加到 XSS FILTER 中。
项目
通过模糊测试检查是否有CRLF然后人判定
参考
https://houbb.github.io/2020/08/09/web-safe-03-crlf
https://codeantenna.com/a/qDHFQzTzR6
URL重定向
解析
描述
url重定向漏洞也称url任意跳转漏洞
攻击者可通过将跳转地址修改为指向恶意站点,即可发起网络钓鱼、诈骗甚至窃取用户凭证等。
跳转中最常见的跳转在登陆口,支付口,也就是一旦登陆将会跳转任意自己构造的网站,如果设置成自己的url则会造成钓鱼。
原理

假设有一个正规网站http://nerddinner.com/,还有一个恶意网站或钓鱼网站http://nerddiner.com/(注意:这里少了个n)。
一天,小白收到了别人发的链接:http://nerddinner.com/Account/LogOn?returnUrl=http://nerddiner.com。
- 打开链接后进入了登录界面,小白输入了自己的帐号名密码进行登录。
- 登录成功后重定向到了恶意网站。
- 恶意网站是一个仿造正规网站的登录页面,并在上面提示用户名或密码错误。
- 小白按照提示重新输入了帐号密码信息。
- 恶意网站保存了客户的用户名密码,然后重定向会正规网站。
- 小白继续平时正常的操作。
危害
- 攻击者可能会使用Web服务器攻击其他站点;
- 如果对输出没有做严格限制,将可能导致反射性XSS漏洞;
- 黑产将利用此漏洞,从信任网站跳转到攻击者构造的恶意网站用来进行钓鱼、诈骗等行为;
防御
-
严格控制将要跳转的域名,如果某个业务事先已经确定将要跳转的网站,最稳妥的方式是将其直接编码在源代码中,通过URL中传入的参数来映射跳转网址。
-
严格验证跳转URL参数的有效性、合法性。
-
校验传入的URL参数是否为可信域名。
挖掘技巧
1.谷歌语法
用inurl:{参数名},可以找出可能存在漏洞的页面,然后进行进一步测试。
2.黑盒测试
黑盒测试的话,除了用上面的谷歌语法,还需要我们留意网站跳转的地方。那么根据常识经验以及我的一些收集整理,这里给出可能存在漏洞的一些功能点:
用户登录、统一身份认证处
用户分享、收藏内容处
跨站点认证、授权后
站内点击其它网址链接时
注册、注销、修改密码处
账号切换、保存设置处
3.白盒审计
如果是审计代码,那么下面给出的是我收集的不同语言可能产生漏洞的地方
java
response.sendRedirect(request.getParameter("url"));
PHP
$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);
.NET
string url = request.QueryString["url"];
Response.Redirect(url);
Rails
redirect_to params[:url]
Django
redirect_url = request.GET.get("url")HttpResponseRedirect(redirect_url)
Flask
redirect\_url = request.form\['url'\] redirect(redirect\_url)
4.fuzz测试
可以用下面提供的payload进行测试,注意使用的时候需要修改一下相关url
https://github.com/cujanovic/Open-Redirect-Payloads/blob/master/Open-Redirect-payloads.txt
参考
https://houbb.github.io/2020/08/09/web-safe-06-redirect
https://www.freebuf.com/articles/web/286334.html
https://juejin.cn/post/6940962209933557796
https://www.jianshu.com/p/6ecff0722c56
web拒绝服务
https://websec.readthedocs.io/zh/latest/misc/dos.html
解压炸弹制作方法

浙公网安备 33010602011771号