会话劫持

保护你的会话令牌

独自空忆成欢 提交于 2020-03-26 04:24:35
保护你的会话令牌 通常我们会采取以下的措施来保护会话。 1.采用强算法生成Session ID 正如我们前面用Web Scrab分析的那样,会话ID必须具有随机性和不可预测性。一般来说,会话ID的长度至少为128位。下面我们就拿常见的应用服务器Tomcat来说明如何配置会话ID的长度和生成算法。 首先我们找到{TOMCAT_HOME}\conf\context.xml,然后加入下面一段设置 <Manager sessionIdLength="20" ➊ secureRandomAlgorithm="SHA1PRNG" ➋ secureRandomClass="java.security.SecureRandom" ➌ /> ➊ 定义会话ID 的长度,如果我们这里不声明的话,默认是16字节。可能有读者会纳闷,怎么平时我看到的会话ID都是很长的呀?我们就拿这里的20个字节来讲吧,我们在浏览器发送请求时会发现这样的会话ID: JSESSIONID=90503B6BE403D4AB6164A311E167CF1F6F3F2BD0 仔细看会发现ID的长度为40,因为这里显示的是十六进制,每两个字符代表一个字节。 ➋ 定义随机数算法,默认的是SHA1PRNG,你也可以换成自己的算法。 ➌ 定义随机数类,默认的是java.security.SecureRandom

[红日安全]Web安全Day12 – 会话安全实战攻防

杀马特。学长 韩版系。学妹 提交于 2020-03-18 17:23:58
本文由红日安全成员: ruanruan 编写,如有不当,还望斧正。 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。 1.会话安全概述 1.1 什么是会话 session会话机制是一种服务器端机制,它使用类似于哈希表(可能还有哈希表)的结构来保存信息。当程序需要为客户端的请求创建会话时,服务器首先检查客户端的请求是否包含会话标识符(称为会话ID)。如果包含它,它先前已为此客户端创建了一个会话。服务器根据会话ID检索会话(无法检索,将创建新会话),如果客户端请求不包含会话ID,则为客户端创建会话并生成与会话关联的会话ID。 session id应该是一个既不重复也不容易被复制的字符串。会话ID将返回给客户端以保存此响应。 1.2常见会话问题 1.2

OWASP TOP 10

我们两清 提交于 2020-03-08 08:35:07
TOP1-注入 注入往往是应用程序缺少对输入进行安全型检查引起的,攻击者把一些包含指令的数据发送给解释器,解释器收到数据后转换成指令执行,常见的注入包括SQL注入、系统命令注入、IDAP注入,xpath注入等 危害: 注入可以导致数据的丢失,或者敏感数据的泄露,有时注入漏洞可以导致主机完全失陷。 防范: 1、使用安全的API,避免使用解释器 2、对输入的特殊字符进行转义处理 3、利用白名单来规范输入验证 TOP2-失效的身份认证和会话管理 开发者通常会建立自定义的认证和会话管理方案。但与身份认证和回话管理相关的应用程序功能往往得不到正确的实现,要正确实现这些方案却很难,结果在退出、密码管理、超时、密码找回、帐户更新等方面存在漏洞,这就导致了攻击者破坏密码、密钥、会话令牌或攻击其他的漏洞去冒充其他用户的身份 危害: 可能导致部分甚至全部账户遭到攻击,一旦攻击成功,攻击者就能执行合法的任何操作 检测: 用户身份验证凭证没有使用哈希或加密保护 认证凭证可猜测,或者能够通过薄弱的的帐户管理功能(例如账户创建、密码修改、密码恢复, 弱会话ID)重写 会话ID暴露在URL里 (例如URL重写) 会话ID容易受到会话固定(session fixation)的攻击 会话ID没有超时限制,或者用户会话或身份验证令牌特别是单点登录令牌在用户注销时没有失效 成功注册后,会话ID没有轮转 密码

内网会话劫持

只谈情不闲聊 提交于 2020-03-03 04:57:30
会话劫持 环境:一台kali虚拟机(攻击者,IP:192.168.41.140) 一台win7虚拟机(用户,IP:192.168.41.129) 网关IP:192.168.41.2 第一步 使用 nmap 扫描局域网内活动的主机,确定攻击目标,这里的 192.168.41.129 就是要进行劫持的目标。 第二步 使用 arpspoof 命令进行arp欺骗攻击。 先打开kali的转发功能,否则用户端不能正常上网。 第三步 重新打开一个窗口使用 tcpdump 进行抓包。 第四步 这时我在win7上进行一次账号密码的登录。 第五步 在kali上停止抓包,同时停止arp欺骗。 第六步 安装 ferret 用来分析数据。 安装步骤: dpkg --add-architecture i386 . apt-get update . apt-get install ferret-sidejack:i386 . 安装完成之后就可以用它来分析刚刚抓取的数据包了。 分析完成之后会生成一个叫 hamster.txt 的文档。 第七步 使用 hamster 登录会话,首先打开 hamster . 根据给出的代理配置来配置浏览器。 接着就是打开浏览器进行访问。 点击 192.168.41.129 ,就可以在左边的窗口处看到抓取到的cookies. 点击之后即可使用他人的cookies访问。 来源:

会话劫持漏洞小结——cookie劫持的方式、属性、原理、危害及防御

戏子无情 提交于 2019-12-29 22:37:09
会话劫持 概念 会话劫持(Session hijacking)是一种通过获取用户Session ID后,使用该Session ID登录目标账号的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。会话劫持的第一步是取得一个合法的会话标识来伪装成合法用户。 注:Session ID一般都设置在cookie 步骤 目标用户需要先登录站点 登录成功后,该用户会得到站点提供的一个会话标识SessionID 攻击者通过某种攻击手段捕获Session ID 攻击者通过捕获到的Session ID访问站点即可获得目标用户合法会话 原理图 获取cookie 了解cookie接口:找到Session ID位置进行破解 暴力破解:尝试各种Session ID,直到破解为止 预测:如果Session ID使用非随机的方式产生,那么就有可能计算出来 窃取:XSS攻击、使用网络嗅探(中间人攻击)等方法获得 XSS攻击劫持cookie 中间人攻击劫持cookie 危害 冒充其他人做事情:被冒充的人的权限越大,可以做的事情越多,比如:更改用户信息、进行转账、购买物品 对网站的影响:因为投诉等原因,会出现信誉下降、客户认为网站本身不可信 cookie机制 在动态网页语言中,某个用户(浏览器)访问(登陆)后,可以一直记录状态。这种状态浏览器使用Cookie来保存。

Java Web 学习与总结(三)会话跟踪

夙愿已清 提交于 2019-12-26 01:00:07
  何为会话跟踪?举个简单的例子,比如登陆到某购物网站后,在一定时间内无论你在这个网站中切换到任意的网页,只要不执行退出操作,一直保持着你账号的登录状态。   那么在Java Web中我们应当如何去实现这一操作呢?这里给大家介绍三种技术:cookie、session和URL重写技术。   首先是cookie技术,cookie在平时我们的使用时经常可以在安全设置中看到,它其实是服务器段在客户端本地保存的一些数据,同之前我们学到的Arribute一样,也是由key-value结构组成的。它是一种在客户端保持绘画跟踪的解决方案。在用户第一次访问服务器时,由服务器通过响应头的方式发送给客户端浏览器;当用户再次向服务器发送请求时会附带上这些文本信息。通过cookie,服务器在手收到来自客户端浏览器的请求时,能够通过分析请求头的内容而得到客户端特有的信息,从而动态的生成与该客户端相对应的内容,比如在很多网站登录时我们会看到类似“记住我”的选项,其实选中了就是把你的登陆信息保存在本地了,下次访问网站时自然而然的就附带了上次的登陆信息,从而达到免再次登陆的功能。   cookie在javax.servlet.http内的源码: // // Source code recreated from a .class file by IntelliJ IDEA // (powered by

会话攻击

我是研究僧i 提交于 2019-12-06 06:33:34
一、会话攻击主要类型 1. 会话固化 (图来自《PHP应用程序安全编程》) 攻击者首先构造一个值,然后以某种方式引导用户以该值作为会话ID去请求目标网站,例如点击一个链接...?PHPSESSID=123456,如果用户登录时网站直接使用这个值作为登录后的会话ID,那么黑客就可以使用这个值作为会话ID请求目标网站,从而得到用户的信息数据,并可以利用合法用户的身份做一些事情。 2. 会话劫持 (图来自《PHP应用程序安全编程》) 攻击者通过一些非常规手段获取合法用户的会话ID,比如XSS,然后使用合法用户的会话ID访问目标网站。 3. 会话注入 如果目标网站允许将用户输入保存在会话变量中,而又没有做足够安全的输入验证,则会引发注入攻击。 二、会话攻击防御 1. 设置只能通过cookie传递会话ID,预防基于URL的攻击。这样可以防止黑客引导用户通过链接传递会话ID,进行会话固化攻击。(PHP设置为session.use_only_cookie=1) 2. 设置cookie的http_only为true,不允许通过客户端脚本访问cookie,防止cookie被XSS读取从而引起会话劫持。 3. 当用户登录的时候,重新生成新的会话ID,创建一个新的会话文件并删除旧的会话文件。这样可以预防会话固化攻击。(PHP调用session_regenerate_id()函数) 4. 加入会话过期机制

针对Web的攻击技术

孤街醉人 提交于 2019-12-05 15:08:56
主动攻击 SQL注入攻击 OS命令注入攻击 会话劫持 被动攻击 XSS攻击 CSRF攻击 HTTP首部注入攻击 会话固定攻击 一、主动攻击 1.SQL注入攻击 什么是SQL? SQL是用来操作关系型数据库管理系统的数据库语言,可进行操作数据或定义数据等。 什么是SQL注入? SQL注入是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。如果在调用SQL语句的方式上存在疏漏,就有可能执行被恶意注入非法SQL语句。 SQL案例: SELECT * FROM bookTb1 WHERE author = '作者'--' and flag = 1 SQL语句中的--之后全部视为注释,即and flag = 1就会被忽略。 2.OS命令注入攻击 什么是OS命令注入攻击? OS命令注入攻击是指通过Web应用,执行非法的操作系统命令达到攻击的目的。 如何攻击? 可以从Web应用中通过Shell来调用操作系统命令。如果调用的Shell时存在疏漏,就可以执行插入的非法OS命令。通过OS注入攻击可执行OS上安装的各种程序。 示例: |/usr /sbin /sendmail ; cat /etc / passwd | mail hack@example.jp 攻击者输入值(; cat /etc / passwd | mail hack@example.jp)中含有分号(;)

HTTP知识点总结

£可爱£侵袭症+ 提交于 2019-12-03 11:41:07
概述 1.HTTP协议是一种应用层的传输协议,用于客户端和服务器之间的通信 2.HTTP协议处于TCP/IP模型中的应用层,基于TCP传输协议,常用端口80 3.当使用TLS加密TCP的载荷(即HTTP内容)时,这个就是目前常见的HTTPS,常用端口443 协议栈结构如下 4.HTTP传输的资源:网络上一切内容即资源,包括:html css js 图片 视频等 5.HTTP协议版本历史: HTTP/0.9:这个名字是后来取的,人们把HTTP/1.0之前的版本统称为HTTP/0.9,HTTP/0.9时代并没有作为正式标准被建立。 HTTP/1.0:该版本作为标准正式公布于1996年5月,至今仍广泛用于服务器端。 HTTP/1.1:1997年1月公布,是至今为止最主流的HTTP协议版本。 HTTP/2.0:是HTTP协议自1999年HTTP 1.1发布后的首个更新,主要基于SPDY协议 6.WEB上常见组件: 用户代理(user agent):就是客户端,如浏览器,以及web机器人、爬虫等 源服务器(origin server):就是Web服务器,但不一定时一个服务器,可能是集群 代理(Proxies):代理位于客户端和服务器之间,接收所有客户端的HTTP请求,并把这些请求转发给服务器(可能会对请求进行修改之后转发)。根据不同作用也分为几种代理服务器:缓存,过滤,负载均衡,认证

HTTP下午茶

匿名 (未验证) 提交于 2019-12-03 00:18:01
参考: https://www.kancloud.cn/kancloud/tealeaf-http/43837 目标:理解http协议和web应用,基于python搭建服务器 浏览器充当一个客户端与服务器交互的接口 包括CSS、HTML、Javascript、视频图片等,都是通过传输协议如http从服务器传输到客户端,从而在浏览器中显示 HTTP,即超文本传输协议,用以连接应用程序和超文本文档的传输,定义了一种规则,规定请求和响应的消息格式 互联网,网络连接设备,互联网协议(即IP协议)标志每一个设备或服务器,端口区分交互目标 域名解析系统(即DNS)处理URL和IP之间的对应关系,它是一个分布式的数据库 交互过程:输入网址 -> 网络接口 -> DNS解析 -> 服务器接收请求 -> 服务器响应 -> 浏览器呈现结果 [Scheme]://[host:port][path][?query] Scheme:URL模式,定义web客户端访问资源的方式 host:资源路径或主机,描述资源的确切位置 port:监听请求的端口号,默认端口是80 path:URL路径,定义客户端请求服务器的什么资源 query:查询字符串,格式为key=value,用&连接 URL编码:默认只接受ASCII码,%转义,/?:&保留字 浏览器插件:Chrome Postman、REST HTTP API