作者:小古 | 来源:互联网 | 2023-09-12 17:48
前言 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
安全级别分低、中、高、安全四个级别来分析Javascript的渗透测试过程。
1 基础知识 一种常用于页面代码中,用来实现动态效果的脚本语言。由于JS是存储在客户端,所以过分依赖JS代码逻辑,容易被攻击者获取代码后,进行数据伪造。
2 Low 2.1 渗透测试 说提交success就能成功?试一下,结果说错误!
F12查看页面代码,发现生成token函数,加个断点发现,原来每次提交的token都是讲ChangeMe进行加密,与我们提交的success无关!
右键保存页面,修改页面代码,利用弹框获取success的计算(token)值
设置burpsuite代理,修改提交数据:修改token,与success对应上
2.2 源码分析 low.php:发现只有前端逻辑展示,并没有判断成功的逻辑
index.php:发现需要token值与success的变化字符串的md5值相同。
if ($token == md5(str_rot13("success"))) {$message = "Well done!
"; } else {$message = "Invalid token.
"; }
3 Medium 3.1 渗透测试 先查看源代码:发现没有token生成的方法,多了一个medium.js文件,,
直接访问,返回NotFound:
修改URL,再次访问:获取代码
function do_something(e){for(var t="",n=e.length-1;n>=0;n--)t+=e[n];return t } setTimeout(function(){do_elsesomething("XX")},300); function do_elsesomething(e){document.getElementById("token").value=do_something(e+document.getElementById("phrase").value+"XX") }
分析js代码逻辑,得出,token是由do_something(e+document.getElementById("phrase").value+"XX")产生,自己写一段JS去获取token: function do_something(e){for(var t="",n=e.length-1;n>=0;n--)t+=e[n];return t } alert(do_something("XX"+'success'+"XX"));
设置burpsuite代理,修改提交数据:修改token,与success对应上
3.2 源码分析 medium.js:和我们刚刚分析的一毛一样,主要就是token生成。
index.php:效验算法和前端一致
if ($token == strrev("XXsuccessXX")) {$message = "Well done!
"; } else {$message = "Invalid token.
"; }
4 High 4.1 渗透测试 照旧,发现多了一个high.js,可是这次的文件是加密的:
找个JS解密网站,解密:http://deobfuscateJavascript.com/# 分析:上面SHA加密代码不看,直接看最下方的具体加密过程:
同理将js修改后写入到自定义页面中,SHA加密相关代码要完整拷贝: ......省略加密代码 function do_something(e) {for (var t = "", n = e.length - 1; n >= 0; n--) t += e[n];return t } var token; function token_part_3(t, y = "ZZ") {token = sha256(token + y);alert('token_part_3_final-----'+token); } function token_part_2(e) {token = sha256(e + token);alert('token_part_2-----'+token); } function token_part_1(a, b) {token= do_something("success");alert('token_part_1-----'+token); } token_part_1("ABCD", 44);//模拟加载时执行 token_part_2("XX")//模拟过300ms,其实就是页面渲染完成后执行 token_part_3()//模拟提交时执行
打开页面,获取token:
设置burpsuite代理,修改提交数据:修改token,与success对应上
4.2 源码分析 high.js:和我们刚刚分析的一毛一样,主要就是token生成。
index.php:效验算法和前端一致
if ($token == hash("sha256", hash("sha256", "XX" . strrev("success")) . "ZZ")) {$message = "Well done!
"; } else {$message = "Invalid token...
"; }
5 Impossible
源码分析&#xff1a;直接一锅端&#xff0c;随便你怎么输入&#xff0c;我都不管&#xff0c;反正你就是不安全&#xff0c;我不相信你&#xff01;&#xff01;&#xff01; if ( $_COOKIE[ &#39;security&#39; ] &#61;&#61; "impossible" ) { $page[ &#39;body&#39; ] &#61; <<Vulnerability: Javascript Attacks You can never trust anything that comes from the user or prevent them from messing with it and so there is no impossible level.
EOF;
}
6 总结 前端所有输入都不能相信&#xff01; 但是呢&#xff1f;后台要全部验证&#xff0c;代码逻辑太多&#xff0c;写不过来&#xff01;所以&#xff0c;可被利用的漏洞还是很多的&#xff01;
爱家人&#xff0c;爱生活&#xff0c;爱设计&#xff0c;爱编程&#xff0c;拥抱精彩人生&#xff01;
推荐阅读
fileuploadJS@sectionscripts{<scriptsrc~Contentjsfileuploadvendorjquery.ui.widget.js ...
[详细]
蜡笔小新 2023-10-17 13:40:24
最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ...
[详细]
蜡笔小新 2023-10-17 11:10:27
本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ...
[详细]
蜡笔小新 2023-12-14 15:25:15
本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ...
[详细]
蜡笔小新 2023-12-12 15:58:44
本文介绍了AFNetwork框架中使用NSURLSession进行网络请求的方法,包括NSURLSession的配置、请求的创建和执行等步骤。同时还介绍了NSURLSessionDelegate和NSURLSessionConfiguration的相关内容。通过本文可以了解到AFNetwork框架中使用NSURLSession进行网络请求的基本流程和注意事项。 ...
[详细]
蜡笔小新 2023-12-10 02:03:27
原文转自:http:blog.csdn.netchinasoftosgarticledetails7903045UploadAction.java:packagecr ...
[详细]
蜡笔小新 2023-10-16 18:51:01
这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)j ...
[详细]
蜡笔小新 2023-10-16 18:29:59
本文目录一览:1、javaftp上传5G以上大文件,怎么做 ...
[详细]
蜡笔小新 2023-10-16 18:12:51
本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ...
[详细]
蜡笔小新 2023-12-14 11:31:05
本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ...
[详细]
蜡笔小新 2023-12-11 19:55:40
本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ...
[详细]
蜡笔小新 2023-12-11 18:32:44
本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ...
[详细]
蜡笔小新 2023-12-11 16:20:50
一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ...
[详细]
蜡笔小新 2023-10-17 18:06:55
谈PHP中信息加密技术同样是一道面试答错的问题,面试官问我非对称加密算法中有哪些经典的算法?当时我愣了一下,因为我把非对称加密与单项散列加 ...
[详细]
蜡笔小新 2023-10-16 20:20:32
比如我们修改了my.ini文件的secure_file_priv变量的值如何让其真正生效?现在先看下我们系统中的secure_file_priv变量的值进入mysql ...
[详细]
蜡笔小新 2023-10-16 14:50:11