精华内容
下载资源
问答
  • 漏洞解决方案-明文传输漏洞

    千次阅读 2020-08-11 09:53:50
    漏洞解决方案-明文传输漏洞漏洞解决方案-明文传输漏洞一、漏洞概述二、利用方法和手段三、漏洞防御解决方法 漏洞解决方案-明文传输漏洞 一、漏洞概述 敏感数据明文传输简单点来说就是当我们在网站上面提交敏感数据...

    漏洞解决方案-明文传输漏洞

    一、漏洞概述

    敏感数据明文传输简单点来说就是当我们在网站上面提交敏感数据到服务器的过程中未进行相关加密处理,导致攻击者通过中间人攻击方式(劫持、嗅探等)即可获取到这些未加密的敏感数据。当攻击者获取到这些数据之后,就可以用这些信息以合法用户的身份进入到应用系统中——甚至可能进入到应用系统后台中,一旦进入到应用系统中那么就可以获取更多的敏感数据,以及更有机会发现更多的漏洞。

    二、利用方法和手段

    1. 方法1:通过中间人攻击方式(劫持、嗅探等)获取未加密的敏感数据
    2. 方法2:根据web用户登陆页面,直接进行暴力破解用户信息。

    三、漏洞防御解决方法

    1. 方法1:使用正规的ca机构颁发的https证书
    2. 方法2:采用非对称加密方式(不可逆的加密方式)
      例如:
      使用md5加盐加密方式。就是在做MD5之前给密码原文加上某个字符串后再做MD5运算。要点在于,这个salt,是每次提交之前跟服务器端实时申请的,而且会在很短的时间内自动过期(因为申请和验证之间的时间间隔只是两次连续http请求的时间,所以这个过期时间可以很短),这个salt只用一次,验证之后无论成功与否都会在服务器端强制作废。这样的话,截获任何一次MD5加密串,都无法用于另一次登录验证。
      在这里插入图片描述
      关注公众号,一起分享实用安全技术,关注安全最新事件,记录工作常见问题,吐槽生活真心操蛋。
      在这里插入图片描述
    展开全文
  • 关键信息明文传输也是一个十分常见的漏洞。在前后端进行交互时,尤其是登录操作,需要注意对密码等关键信息进行加密,因为信息在传输过程中,可能会有被截获的危险。下面就针对扫描工具,给出几种方案。 修复方案 ...

    漏洞说明

    关键信息明文传输也是一个十分常见的漏洞。在前后端进行交互时,尤其是登录操作,需要注意对密码等关键信息进行加密,因为信息在传输过程中,可能会有被截获的危险。下面就针对扫描工具,给出几种方案。

    修复方案

    • 第一种 base64

      严格来说,base64其实算不上加密?毕竟base64只是一种常见的编码格式,但是对于安全性要求不太高的系统,也可以使用base64来避免漏洞扫描工具报出“关键信息明文传输”的漏洞。base64使用简单,直接贴代码如下:
    		//前端进行加密编码
    		var b = new Base64();
    		var password_encode = b.encode(trim(password.value));
    		document.getElementById("password").value=password_encode;
    
    		//后端进行解密编码
    		password = PasswordUtils.getFromBase64(password);
    
    		//解码具体方法
    		public static String getFromBase64(String str)
       	 	{
            	byte[] b = null;
            	String result = null;
            	if (str != null)
            	{
                	BASE64Decoder decoder = new BASE64Decoder();
                	try
               	 	{
                    	b = decoder.decodeBuffer(str);
                    	result = new String(b, "UTF-8");
                	}
                	catch (Exception e)
                	{
                    	e.printStackTrace();
                	}
            	}
            	return result;
        	}
    
    	//前端加密,秘钥长度需为16位,这里我使用当前系统时间+abc构成的16位字符串做秘钥,并将秘钥存入Session中
    	<%
     		String key = Long.toString(new Date().getTime()) + "abc";
     		session.removeAttribute("AESKey");
     		session.setAttribute("AESKey", key);
     	%>
     	var password = document.getElementById("password").value;
     	var aeskey = CryptoJS.enc.Utf8.parse("<%= key%>");
        var srcs = CryptoJS.enc.Utf8.parse(password);  
        var encrypted = CryptoJS.AES.encrypt(srcs, aeskey, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
        document.getElementById("password").value = encrypted.toString();
    
    //后端解密
    	password = PasswordUtils.decryptAES(request, password);
    
    /**
         * AES解密
         * @param req 用户请求,用于获取session中的aeskey
         * @param data 需要解密的数据
         * @return 返回解密的数据
         * @throws Exception
         */
        public static String decryptAES(HttpServletRequest req, String data) throws Exception {
            try {
            	HttpSession session = req.getSession();
            	String key = StringUtil.ob2string(session.getAttribute("AESKey"));
            	
                byte[] encrypted1 = new BASE64Decoder().decodeBuffer(data);
    
                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
                SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
    
                cipher.init(Cipher.DECRYPT_MODE, keyspec);
    
                byte[] original = cipher.doFinal(encrypted1);
                String originalString = new String(original);
                return originalString;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    

    另外补一个注意事项,对于AES三中数据填充方式:

    • PKCS7Padding
      Java不支持此方式
      PKCS7Padding是缺几个字节就补几个字节的0

    • PKCS5Padding
      JS不支持此方式
      PKCS5Padding是缺几个字节就补充几个字节的几,例如缺8个字节,就补充8个字节的8

    • NOPadding
      不补充字节

    • 第三种 Https

      有些时候,不仅仅是密码,很多其它的信息也会被漏洞扫描工具认为是“敏感信息”,在这种情况下一一对这些数据加密显然是不现实的,因此,最好的办法就是关闭http协议通信而采用https通信,保证信道的安全,从而保证关键信息的安全。

    展开全文
  • 网站安全之密码明文传输漏洞

    万次阅读 2017-03-26 17:33:40
    而这个证书是在https中使用的,对于https的地址我们不用担心密码在传输时出现漏洞,也就是被别人强制性拦截然后获取。它在传输时是会加密的。但是对于http的协议就没那么好了,如果你不做一些工作的话,密码在传输的...

    1.  说明问题

         相信关注笔者的读者应该有看过笔者之前写过的一篇文章——《keytool的用法》.这篇博客是介绍了如何生成系统使用的证书。而这个证书是在https中使用的,对于https的地址我们不用担心密码在传输时出现漏洞,也就是被别人强制性拦截然后获取。它在传输时是会加密的。但是对于http的协议就没那么好了,如果你不做一些工作的话,密码在传输的时候,很容易被拦截工具拦截,然后就可以看到密码。比如,我们登录的用户与密码,我们是使用http协议的,那么测试时就可以使用相关的工具,拦截访问的地址,工具就可以显示出用户名与密码。这样的话,问题就会很严重,攻击都就可以轻松拿下你的系统了。为了防止这个问题,我们就需要为系统的登录信息做些加密处理。

    2.  处理问题

    我们可以使用开源框架提供的加密与解决的方法来处理。如果读者有兴趣的话,可以自己去查找,这里读者就不介绍了。这里要介绍的是如何自己写个加解密的方法来实现。

    对于Web的系统,我们要的是前端对用户的登录信息进行加密,这样在传输的时候即使被拦截也只能看到拦截的加密后的信息。同时,我们也需要在后端对传输来的信息进行解密。所以我们需要两个文件,一个是jsp的,一个是java的。

    3.  代码实现

         对于项目中应该怎么处理,读者自己根据实际情况去处理。这里笔者只能给测试的代码,希望对读者可以起到作用吧。

    package com.owen..util;
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.security.Key;
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESedeKeySpec;
    
    import com.sun.org.apache.xml.internal.security.utils.Base64;
    
    /**
     * DESede对称加密算法演示
     * 
     * @author zolly
     * */
    public class DESedeCoder {
        /**
         * 密钥算法
         * */
        public static final String KEY_ALGORITHM = "DESede";
    
        /**
         * 加密/解密算法/工作模式/填充方式
         * */
        public static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";
    
        /**
         * 
         * 生成密钥
         * 
         * @return byte[] 二进制密钥
         * */
        public static byte[] initkey() throws Exception {
    
            // 实例化密钥生成器
            KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
            // 初始化密钥生成器
            kg.init(168);
            // 生成密钥
            SecretKey secretKey = kg.generateKey();
            // 获取二进制密钥编码形式
            
            byte[] key = secretKey.getEncoded();
            BufferedOutputStream keystream = 
                    new BufferedOutputStream(new FileOutputStream("DESedeKey.dat"));
            keystream.write(key, 0, key.length);
            keystream.flush();
            keystream.close();
            
            return key;
        }
    
        /**
         * 转换密钥
         * 
         * @param key
         *            二进制密钥
         * @return Key 密钥
         * */
        public static Key toKey(byte[] key) throws Exception {
            // 实例化Des密钥
            DESedeKeySpec dks = new DESedeKeySpec(key);
            // 实例化密钥工厂
            SecretKeyFactory keyFactory = SecretKeyFactory
                    .getInstance(KEY_ALGORITHM);
            // 生成密钥
            SecretKey secretKey = keyFactory.generateSecret(dks);
            return secretKey;
        }
    
        /**
         * 加密数据
         * 
         * @param data
         *            待加密数据
         * @param key
         *            密钥
         * @return byte[] 加密后的数据
         * */
        public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
            // 还原密钥
            Key k = toKey(key);
            // 实例化
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            // 初始化,设置为加密模式
            cipher.init(Cipher.ENCRYPT_MODE, k);
            // 执行操作
            return cipher.doFinal(data);
        }
    
        /**
         * 解密数据
         * 
         * @param data
         *            待解密数据
         * @param key
         *            密钥
         * @return byte[] 解密后的数据
         * */
        public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
            // 欢迎密钥
            Key k = toKey(key);
            // 实例化
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
            // 初始化,设置为解密模式
            cipher.init(Cipher.DECRYPT_MODE, k);
            // 执行操作
            return cipher.doFinal(data);
        }
    
        /**
         * 进行加解密的测试
         * 
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
            String str = "DESede";
            System.out.println("原文:" + str);
            // 初始化密钥
            byte[] key = DESedeCoder.initkey();
            System.out.println("密钥:" + Base64.encode(key));
            // 加密数据
            byte[] data = DESedeCoder.encrypt(str.getBytes(), key);
            System.out.println("加密后:" + Base64.encode(data));
            // 解密数据
            data = DESedeCoder.decrypt(data, key);
            System.out.println("解密后:" + new String(data));
        }
    }
    

    说明:由于公司的保密性,给出的代码并非笔者项目中使用的。读者只要知道这个算法就行了,知道有这么一回事就行了。



    展开全文
  • 2.密码明文传输漏洞介绍 3.密码明文传输漏洞验证 4.密码明文传输漏洞修复 5.弱口令漏洞介绍 6.弱口令漏洞验证 7.弱口令漏洞修复 1.前言 前几天在对网站进行安全性测试时,在AWVS上扫描出密码明文传输漏洞。...
    展开全文
  • paip 提升安全---网站登录密码明文传输的登录高危漏洞解决方案
  • 关于明文传输的问题

    万次阅读 2018-09-12 00:34:41
    上周拿到一个线上复测的项目,中间有一个明文传输问题,这个问题平时基本不记,客户那测试基本都是内网环境,上线基本都是 https。这个问题之前是这样测试的:抓包,如果内容是明文就记这个问题,这里存在很多的问题...
  • WEB登录密码明文传输的严重性... 1 JS实现 RSA非对称加密算法... 1 加解密及传输流程... 1 后台产生一对公钥下发给WEB页... 2 WEB页JS调用公钥进行加密提交... 2 后台校验密码不能为空... 3
  • 浅谈“密码明文传输

    千次阅读 2020-07-19 10:21:50
    明文传输一般存在于web网站登陆页面,用户名密码采取明文传输并未采取加密(注意:一些软件如BurpSuite带有可加密的暴力破解!)容易被嗅探软件截取(如果加密方式是常见的加密也可以解密的(比如:MD5,RSA等--另外...
  • 所以,很多安全要求较高的网站都不会明文传输密码,它们会使用 https 来确保传输过程的安全, https 是用证书来实现的,证书来自于证书颁发机构,当然了,你也可以自己造一张证书,但这样别人访问你的网站的时候还是...
  • HTTP传输明文带来的窃听   因为localhost是环形链路,所有使用AnyProxy代理 anyproxy HTTP窃听 用户名密码 传输敏感信息 个人资料(银行卡……) HTTP篡改 插入广告 重定向网站 ...
  • 漏洞描述:密码明文传输一般存在与web网站登录页面,用户名或密码(一般为密码)使用明文传输,容易被嗅探软件截取。 检测条件:web网站有登录界面 检测方法:1、找到网站或web登录页面。2、通过使用wireshark等软件...
  • 摘要:本篇教程介绍了JavaScript基础教程 用户登录明文传输密码问题如何解决,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。 本篇教程介绍了JavaScript基础教程 用户登录明文传输密码...
  • 攻击者可通过网络嗅探,可截获正常用户的用户名、密码、cookie等信息。 登录账号信息要求不能明文传输,求加密方案。
  • web常见漏洞分析

    千次阅读 2020-11-18 10:32:58
    web常见漏洞
  • Web应用安全漏洞摘要

    千次阅读 2015-11-10 21:14:38
    Web应用安全漏洞摘要
  • 一.Web安全的两个方面: 1.私密性:不被非法获取和利用 2.可靠性:不丢失不损坏不被篡改 二.Web安全考虑的几个层面: 1.代码层面 2.架构层面 3.运维方面 三.安全问题: 1.用户身份被盗用 2.用户密码泄露 3...
  • 常见Web安全漏洞

    万次阅读 2021-03-07 09:14:37
    常见Web漏洞小结 1越权漏洞 不同权限账户之间的存在越权访问 检测 抓去a用户功能链接,然后登录b用户对此链接进行访问 抓去a用户功能链接,修改id为b的id,查看是否能看b的相关数据 替换不同的cookie进行测试查看 ...
  • 2、对apache中web.xml进行相关设置、 2、弱口令 漏洞描述 由于系统中存在有弱口令,导致攻击者通过弱口令可轻松登录系统中,从而进行下一步的攻 击,如上传webshell,获取敏感数据! 另外攻击者利用弱口令登录网站...
  • 常见Web安全漏洞类型

    2019-09-17 08:46:32
    阅读文本大概需要3分钟。为了对Web安全有个整体的认识,整理一下常见的Web安全漏洞类型,主要参考于OWASP组织历年来所研究发布的项目文档。01:注入漏洞1)SQL注入...
  • Web漏洞学习手册

    千次阅读 2021-03-04 17:36:50
    注入类 XXE漏洞原理 crlf注入漏洞 文件类 文件上传漏洞 跨站 CSRF原理 其他类 会话固定 反序列化漏洞原理 持续更新中.......
  • 然后客户端在需要加密的时候会异步请求服务器端,获取公钥,并利用公钥进行加密操作(加密表单密码元素),服务器端收到加了密的用户密码,再使用私钥进行解密,从而获取加密前的明文密码。由于仅仅有了公钥
  • web扫描漏洞解决办法

    2021-03-25 16:44:54
    漏洞修改: 1. Apache JServ protocol service漏洞(服务器问题) 问题出在Tomcat的8009端口,错误的提示是8009端口上运行着tcp协议。 解决办法:只能是通过关闭8009端口来实现,但是关闭端口之后对Tomcat有影响。...
  • web漏洞检测项

    2021-05-22 15:22:28
    文章目录常规web漏洞检查列表注入漏洞XSS安全配置错误登录认证缺陷敏感信息泄露权限控制不严格跨站请求伪造 (CSRF)使用了存在漏洞的组件其他类型漏洞其他漏洞已公开高危漏洞业务逻辑漏洞检测列表登录注册密码找回...
  • 可以查找到明文传输漏洞。 4.御剑扫描后台 直接输入url既可扫描 5.awvs扫描器直接扫除漏洞复现 通过扫描出的漏洞并进行相关url的验证 6.用户名枚举 用户名枚举可以查看有哪些用户储存在该服务器中。...
  • 常规36个WEB渗透测试漏洞描述及修复方法----很详细

    万次阅读 多人点赞 2018-08-28 15:57:16
    常规WEB渗透测试漏洞描述及修复   --转自:http://www.51testing.com/html/92/n-3723692.html   (1)、 Apache样例文件泄漏  漏洞描述  apache一些样例文件没有删除...
  • Apache样例文件泄漏  漏洞描述  apache一些样例文件没有删除,可能存在cookie、session伪造,进行后台登录操作 ... 2、对apache中web.xml进行相关设置  弱口令  漏洞描述  由于系统中存在有弱口令,导...
  • 需求:NodeJS-&gt;接入层-&gt;... ... ...信息摘要算法(哈希算法) ...这种函数是一种摘要算法,你给他输入一个任意长的数据A他给你返回固定长度的数据B,也称B为“指纹”。...密码传输安全性(明文) 前端加密只能...
  • 2、对apache中web.xml进行相关设置 (2)、弱口令 漏洞描述 由于系统中存在有弱口令,导致攻击者通过弱口令可轻松登录系统中,从而进行下一步的攻击,如上传webshell,获取敏感数据! 另外攻击者利用弱口令登录网站...
  • 文章目录WEB前后端漏洞分析与防御技巧--第二部分第五章 传输安全HTTP窃听HTTP篡改HTTPS中间人攻击如何确定服务器身份第六章 密码安全密码-MD5单向变换单向变换彩虹表密码(加盐和多次哈希)计算盐值和加密密码的方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,879
精华内容 2,751
关键字:

web明文传输漏洞