作者:chenyanni1030_430 | 来源:互联网 | 2023-06-07 10:53
前言
DVWA安装使用介绍,见:【工具-DVWA】DVWA的安装和使用
本渗透系列包含最新DVWA的14个渗透测试样例:
1.Brute Force(暴力破解)
2.Command Injection(命令注入)
3.CSRF(跨站请求伪造)
4.File Inclusion(文件包含)
5.File Upload(文件上传)
6.Insecure CAPTCHA(不安全的验证码)
7.SQL Injection(SQL注入)
8.SQL Injection(Blind)(SQL盲注)
9.Weak Session IDs(有问题的会话ID)
10.XSS(DOM)(DOM型xss)
11.XSS(ref)(反射型xss)
12.XSS(Stored)(存储型xss)
13.CSP Bypass(Content Security Policy内容安全策略,旁路/绕过)
14.Javascript
安全级别分低、中、高、安全四个级别来分析CSP Bypass的渗透测试过程。
1 基础知识
- CSP-Content Security Policy
内容安全策略,以白名单的机制对网站加载或执行的资源起作用。在网页中,这样的策略通过 HTTP 头信息或者 meta 元素定义。简单理解就是,自定义放行脚本规则,感兴趣可以去看:https://content-security-policy.com/。
旁路,也就是绕过CSP规则咯。
2 Low
2.1 渗透测试
- 确认当前CSP规则:发现放行的几个网站,选一个试试:https://pastebin.com
- 访问,并输入alert测试代码,点击raw,得到一个网址:
2.2 源码分析
发现:就是请求头所定义的CSP规则,放行了多个来源网站
$headerCSP = "Content-Security-Policy: script-src 'self' https://pastebin.com example.com code.jquery.com https://ssl.google-analytics.com ;";
3 Medium
3.1 渗透测试
- 访问https://content-security-policy.com/,确认CSP规则含义:script中添加属性norce值,即可放行
3.2 源码分析
发现:添加了放行规则,包含nonce属性值为:TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=
$headerCSP = "Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';";
4 High
4.1 渗透测试
- 观察:没有输入框了,只有一个提交按钮,提示说修改jsonp.php页面,来执行你自己的代码
- 确认CSP级别:仅允许加载当前服务的js,好吧那就只有提示所说的路可走
- 查看页面源码:发现表单内包含一个js文件
- 点击访问:发现与提示中的php页面相关的请求,且返回结果的answer字段,会注入到页面中!
- burpsuite拦截请求,查看:发现可被利用的参数只有一个callback
- 改成alert(1),试试,额,居然就这么成功了......
GET /DVWA-master/vulnerabilities/csp/source/jsonp.php?callback=alert(1) HTTP/1.1
4.2 源码分析
jsonp.php:发现,居然把提交参数返回给前端了,人才!
header("Content-Type: application/json; charset=UTF-8");if (array_key_exists ("callback", $_GET)) {$callback = $_GET['callback'];
} else {return "";
}$outp = array ("answer" => "15");echo $callback . "(".json_encode($outp).")";
?>
5 Impossible
源码分析:
jsonp_impossible.php:不加入前端输入,直接返回结果
header("Content-Type: application/json; charset=UTF-8");$outp = array ("answer" => "15");echo "solveSum (".json_encode($outp).")";
?>
6 总结
CSP,由于许多历史原因,也就是程序允许前端执行各类非安全代码(程序员的锅么?),但是没有足够精力去修改它,所以CSP在有的服务里并没有严格限制,则会存在被绕过的风险。
爱家人,爱生活,爱设计,爱编程,拥抱精彩人生!