WEB攻防-通用漏洞&CRLF注入&URL重定向&资源处理拒绝服务
目录
WEB攻防-通用漏洞&CRLF注入&URL重定向&资源处理拒绝服务
#知识点:
1、CRLF注入-原理&检测&利用
2、URL重定向-原理&检测&利用
3、Web拒绝服务-原理&检测&利用
#详细点:
1.CRLF注入漏洞,是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞。
如何检测安全问题:CRLFuzz
CRLF注入-原理&检测&利用
对于这个CRLF注入,我觉得小迪没有下面这个链接讲的好,可以看一下,主要是这个漏洞比较鸡肋,没啥用,很多地方都不收这个漏洞。
CRLF注入漏洞(响应截断)攻击实战_crlf漏洞_归去来兮-zangcc的博客-CSDN博客
案例:
首先我们打开vulhub这个靶场,来到vulhub-master/nginx/insecure-configuration这个目录下,先进行编译然后打开靶场,到浏览器访问ip加8080端口即可。
正常访问这个靶场进行抓包,可以看到右边有location这个属性,该属性表示该网页的跳转网址,也被称为重定向网址。当网页中包含该属性后,浏览器会自动从当前网页跳转到location中指定的网址。对应的显示过滤器为http.location。
那么我们在后面输入aaaa,会看到这个重定向的地址就受我们控制了,那么这里可能就存在crlf。
接着我们输入payload来设置cookie的值也是可以的,这个漏洞一般是和xss配合来获取cookie,所以比较鸡肋,没有多大用。
这个就是配合xss,点击这个图片就会触发弹窗。
如何检测这个漏洞呢,可以直接用这个工具CRLFuzz直接检测。
具体使用的方法可以看链接,这个工具还是挺智能的,支持批量化操作,就是把要测试的url放到文本文档里面,加上参数进行检测。
点击开始之后会用工具自带的payload进行测试。如果结果中带32mh那么就代表有这个漏洞,没有的就是没有。
URL重定向跳转
写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;
写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;
原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;
原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致绕过;
案例:
URL重定向&原理&检测&利用
http://xxx/zb_system/login.php?url=http://www.xiaodi8.com/zb_system/login.php
大概意思是讲重定向漏洞的危害:网站接受用户输入的链接,跳转到一个攻击者控制的网站,可能导致跳转过去的用户被精心设置的钓鱼页面骗走自己的个人信息和登录口令。国外大厂的一个任意URL跳转都500$、1000$了,国内看运气~
url重定向常配合钓鱼来获取对方的账号密码或则其他东西。比如攻击者搭建的网站和重定向之前的一模一样。
对方访问下面这个登录地址,以为是自己的登录地址,但其实是攻击者的钓鱼地址,目标在输入账号密码之后,攻击者的服务器就会收到账号密码。
攻击者把login.php中加入几行代码,即可接受账号密码,然后触发x.php。接着x.php再把账号密码储存到users.txt
这里也是成功的接收到了账号密码
在真实环境中,我们可以直接把对方登录的那个页面保存下来,然后放到自己的服务器上,只要跟上面的操作一样加几行代码用来接受账号密码即可。然后利用url重定向来进行钓鱼。
业务:
用户登录、统一身份认证处,认证完后会跳转
用户分享、收藏内容过后,会跳转
跨站点认证、授权后,会跳转
站内点击其它网址链接时,会跳转
黑盒看参数名:
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
link
linkto
domain
白盒看代码块:
Java:response.sendRedirect(request.getParameter("url"))
PHP:
$redirect_url = $_GET['url'];
header("Location: " . $redirect_url)
.NET:
string redirect_url = request.QueryString["url"];
Response.Redirect(redirect_url);
Django:
redirect_url = request.GET.get("url")
HttpResponseRedirect(redirect_url)
Flask:
redirect_url = request.form['url']
redirect(redirect_url)
Rails:
redirect_to params[:url]
1.单斜线"/"绕过 https://www.landgrey.me/redirect.php?url=/www.evil.com
2. 缺少协议绕过 https://www.landgrey.me/redirect.php?url=//www.evil.com
3. 多斜线"/"前缀绕过 https://www.landgrey.me/redirect.php?url=///www.evil.com https://www.landgrey.me/redirect.php?url=www.evil.com
4. 利用"@"符号绕过 https://www.landgrey.me/redirect.php?url=https://www.landgrey.me@www.evil.com
5. 利用反斜线"\"绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
6. 利用"#"符号绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com#www.landgrey.me
7. 利用"?"号绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com?www.landgrey.me
8. 利用"\\"绕过 https://www.landgrey.me/redirect.php?url=https://www.evil.com\\www.landgrey.me
9. 利用"."绕过 https://www.landgrey.me/redirect.php?url=.evil (可能会跳转到www.landgrey.me.evil域名)
https://www.landgrey.me/redirect.php?url=.evil.com (可能会跳转到evil.com域名)
10.重复特殊字符绕过 https://www.landgrey.me/redirect.php?url=///www.evil.com//..
https://www.landgrey.me/redirect.php?url=www.evil.com//..
Web拒绝服务
现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风险,导致服务器处理不过来或占用资源去处理。
WEB拒绝服务-原理&检测&利用
1、验证码或图片显示自定义大小
2、上传压缩包解压循环资源占用
这个就是说服务器处理一个文件,而处理过程由你来决定,那么就会造成下面这两个结果。
这个也不算是漏洞,应该算是缺陷,比如我们访问一个图片资源,当我们可以自定义这个图片的大小的时候,那我们可以把参数调到很大很大,直接无限长无限宽。直接把cpu拉满,服务器干崩。
而有的网站你上传个压缩包,它会提供解压的服务,如果说你上传一个压缩包解压之后还是压缩包,无线套娃,那么服务器就会无限解压,把服务器干崩。
这个42.zip看着只有42kb,但是它是无线套娃,如果解压完成的话是一共42tb。可以直接把磁盘占满,把服务器干崩,在本地我们可以模拟一下,这个index.php可以进行解压这个功能的实现。如果说访问这个index.php,就会解压42.zip。瞬间就会把cpu拉满。建议不用轻易尝试。