1、L003001017HTTP攻击与防范会话劫持攻击 课程编写类别内容实验课题名称Session Hijacking会话劫持攻击实验目的与要求1.了解Session的概念2.了解会话劫特攻击的方式3.掌握防范攻击的方法实验环境VPC1(虚拟PC)Windows server 2003VPC1 连接要求PC 网络接口,本地连接与实验网络直连软件描述1、学生机要求安装java环境2、vpc安装windwos 系统实验环境描述1、 学生机与实验室网络直连;2、 VPC1与实验室网络直连;3、 学生机与VPC1物理链路连通;预备知识什么是Session 服务器端与客户端之间是通过session(会话)来
2、连接沟通的。当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的session。每个用户的session都是独立的,并且由服务器来维护。 每个用户的session是由一个独特的字符串来识别,这个独特的字符串称为session id。当用户从浏览器向服务器发出请求时,所发送的HTTP表头内就包含session id的值。服务器使用HTTP表头内的session id值来识别是由哪一个用户提交的请求。 Session保存的是每个用户个人的数据,例如会员登录时输入的账号和密码。在会员登录时验证账号和密码后,一般的Web应用程序即会使用session来保存通过验证的账号和密码。 在转换不同的网页
3、时如果需要验证用户的身份,就使用session内所保存的账号和密码来比较。因此用户的账号和密码只会在一开始登录时输入一次,在其余的用户登录期间就使用session来比较。 Session的生命周期是从用户自浏览器连接上服务器后开始,在用户关掉浏览器或是注销网站时使用session_destroy函数删除session数据时结束。如果用户在20分钟内没有使用计算机的动作,session也会自动结束。实验内容1.了解Session的概念2.了解会话劫特攻击的方式3.掌握防范攻击的方法实验步骤1、 学生单击实验拓扑按钮,进入实验场景,进入目标主机,(第一次启动目标主机,还需要安装java空间),如图
4、所示:2.打开虚拟机,输入用户名和密码,用户为Adminsitrator 密码为 1234563.打开浏览器,输入http:/localhost:8080/example_code/ 如图:4.点击打开 (7)Session会话劫持攻击(Session hijacking) 如图:5.在PHP应用架构中,在执行session start函数后就会建立一个session。sessionid可以由用户自己来指定,也可以由服务器随机产生一个32个字符长度的字符串,session id的字符串长度是由php.ini设置的。点击演示1 ,如图session-id.php文件会显示当前session的id
5、: (1) session_id函数用来获得或设置当前session的id,用法如下:string session_id ( string id )(2) id是要设置的新session id值。session_id函数返回session id的字符串,session id的字符串只能由az,AZ,或O9的字符所组成。 (3) 图中reset-session-id.php文件会指定当前session的id:注意,session_id函数必须在session_start之前调用,才能设定当前session的id。点击攻击1. reset-session-id.php文件的执行结果如图:6. Se
6、ssion的名称在php.ini设置文件中,session的名称默认是PHPSESSID。session的名称可以由用户自己来指定,或是使用PHP的默认值PHPSESSID。 点击演示2 session-name.php文件会显示当前session的名称: 如图(1) session_name函数用来获得或设置当前session的名称,用法如下:string session_name ( string name )(2) name是要设置的新名称。Session的名称默认是PHPSESSID,用来在cookie或URL中绑定一个session id的值。例如:http:/localhost:8
7、080/example_code/source/code7/session-name.php?PHPSESSID=1234用来指定session id等于1234。(3) reset-session-name.php文件更改当前session的名称:reset-session-name.php7. Session的名称只能由字母或数字组成,而且必须简短易懂。在每次送出HTTP请求时,session的名称会重新设置为默认值PHPSESSID。因此要更改session的名称时,必须在每次发送HTTP请求时都要调用session_name函数。点击演示3 reset-session-name.php
8、文件的执行结果如图。8. PHP的 Session机制 在PHP应用中,当您调用session_start函数来初始化session的数据时,PHP首先会检查在当前的HTTP请求中是否包含session id。如果有session id,PHP就会读取这个session id的session数据。如果在当前的请求中没有包含session id,PHP就会随机产生一个。 要指定session id的方式有以下3种。 (1) URL参数。 (2)表单的隐藏属性的文本框。 (3) cookie。URL参数可以在URL参数中指定session id的值,设置php.ini中的session.use_t
9、rans_sid =1 ,session.use_cookies=0 ,session.use_only_cookies=0 。 如图:修改php.ini文件后,需重启apache服务。点击桌面上的xampp,先点击apache服务的stop按钮,然后再start如图:点击演示4,如图:用来将session id的值指定为1234。set-session-id-url.php文件的内容在c:/wamp/www/ example_code/source/code7/下点击攻击4 执行结果如图:9.表单中隐藏属性的文本框可以在表单的隐藏属性的文本框中设置session id,例如:c:/wamp/
10、www/ example_code/source/code7/set-session-id-hidden.html点击演示6 如图:用来将session id的值指定为5678,执行结果如图:会话劫持攻击 会话劫持( Session Hijacking)攻击是指黑客利用各种手段来获取目标用户的session id。session id是Web应用程序用来识别用户的工具,如果黑客有了目标用户的session id,他就可以存取目标用户在Web应用程序中的session变量值。 这些session变量是相当重要的数据,如购物网站中用户所购买的商品名称、数量和付款方式等都是保存在session变量内
11、。如果黑客使用目标用户的session id来登录网站,他就可以利用目标用户的身份来购买商品。当然最后的账,还是算在目标用户身上。 黑客获取目标用户的session id的方法有以下3种。 (1)暴力破解(Brute force):黑客尝试许多的session id值,直到破解为止。 (2)计算:如果session id是使用非随机的方式产生,那么就有可能计算出来。(3)窃取:使用网络截获、安装病毒或XSS攻击等方法来获得。 攻击的步骤会话劫持攻击的步骤如图所示。 步骤1:目标用户登录有会话劫持漏洞的网站。 步骤2:网站给予目标用户一个session id。 步骤3:黑客使用某种方法来获得目标
12、用户的session id。 步骤4:在目标用户的登录期间,黑客使用目标用户的session id来登录网站。黑客修改目标用户的session变量,来达到攻击的目的。点击打开演示7,现在来看图,这是一个常见的简单形式的会员登录的界面。会员登录的流程是让使用者输入账号和密码来登录网站,入口网页的程序会将来访者输入的账号和密码与数据库中的记录比较,判断来访者的信息是否记录在数据库中。这段程序代码在c:xampphtdocsexample_codesourcecode7ex7-1-login.php中如果登录成功ex7-1-login.php文件会使用下列session变量。 $_SESSIONusername:用来保存用户输入的账号。 $_SESSIONpassword:用来保存用户输入的密码。 $_SESSIONbook:这代表在购物网站内有一样商品的名称是book, $_SESSIONbook是用户所购买的book商品的数量。 现在在图中的“账号”文本框中输入“daniel”,在“密码”文本框中输入“123456”。 然后单击图的【登录】按钮,选择否,就会执行c:/wamp/www/ example_code/source/code7/ex7-l.php文件,如图所示。10、 实验完毕,关闭虚拟机和所有窗口。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1