热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【工具DVWA】DVWA渗透系列十四:JavaScript

前言DVWA安装使用介绍,见:【工具-DVWA】DVWA的安装和使用本渗透系列包含最新DVWA的14个渗透测试样例:1.BruteF

前言

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 基础知识


  • Javascript

一种常用于页面代码中,用来实现动态效果的脚本语言。由于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


  • 测试效果:


  • 源码分析:直接一锅端,随便你怎么输入,我都不管,反正你就是不安全,我不相信你!!!

if ( $_COOKIE[ 'security' ] == "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 ... [详细]
  • Java大文件HTTP断点续传到服务器该怎么做?
    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • AFNetwork框架(零)使用NSURLSession进行网络请求
    本文介绍了AFNetwork框架中使用NSURLSession进行网络请求的方法,包括NSURLSession的配置、请求的创建和执行等步骤。同时还介绍了NSURLSessionDelegate和NSURLSessionConfiguration的相关内容。通过本文可以了解到AFNetwork框架中使用NSURLSession进行网络请求的基本流程和注意事项。 ... [详细]
  • 原文转自:http:blog.csdn.netchinasoftosgarticledetails7903045UploadAction.java:packagecr ... [详细]
  • UEditor可以如何直接复制word的图文内容到编辑器中
    这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)j ... [详细]
  • javaftp上传,javaftp下载文件
    本文目录一览:1、javaftp上传5G以上大文件,怎么做 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
  • 加密、解密、揭秘
    谈PHP中信息加密技术同样是一道面试答错的问题,面试官问我非对称加密算法中有哪些经典的算法?当时我愣了一下,因为我把非对称加密与单项散列加 ... [详细]
  • mysql怎样修改my ini_修改mysql里面的my.ini文件后,如果让这个改动生效?
    比如我们修改了my.ini文件的secure_file_priv变量的值如何让其真正生效?现在先看下我们系统中的secure_file_priv变量的值进入mysql ... [详细]
author-avatar
小古
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有