实验场景:已通过XSS漏洞获取包含会话令牌及Cookie的HTTP请求;
实验环境:Windows XP Professional;IP:192.168.0.104;
受攻击的Web应用程序:DVWA(Windows 10/XAMPP环境);IP:192.168.0.102;
实验工具:BurpSuite Professional;
实验过程:
1.获取的Cookie为DVWA会话管理机制的令牌,其参数与值为:security=impossible; PHPSESSID=odrrsh7c51qttcefgvoddmech2;
2.在实验环境中(从未登录该应用程序的主机)构造一个GET请求,请求登陆成功后重定向到的页面:/index.php;
3.如图,将Cookie字段的值更改为:security=impossible;
PHPSESSID=odrrsh7c51qttcefgvoddmech2;
4.向服务器发出请求,可以发现HTTP请求中所有的Cookie值都被改变成我们刚刚制定的内容:
5.我们单击“Forward”向前发送请求,最后成功地绕过登录验证系统,攻破了DVWA应用程序的会话管理系统:
实验总结:本次实验的主要目的是XSS漏洞的利用,即后续的会话劫持(Session Hijacking)工作。一般来说,一个Web应用程序的会话管理机制会为每一个用户产生一个独一无二的会话令牌(session token),并由用户请求验证区域内的页面,这个令牌通常位于用户端的HTTP请求中,少数的Web应用程序也会将会话令牌放在URL中(其实这很危险)。如果一个黑客通过XSS漏洞获取了某一个(或多个)用户的Cookie,只要该Cookie代表的会话令牌在生命周期内,他只要自己构造一个HTTP请求,将自己的Cookie改成受害用户的Cookie,即可完成一次会话劫持攻击。总的来说,XSS漏洞目前比较常见,危害也比较大,为了减少这种危害的发生,我们建议Web前端工程师在设计Web应用程序的交互模块时,尽量过滤用户的危险输入(如:<script>、</script>、<、>、/等用于构造XSS语句的字符),并加强会话令牌的安全性。
Safesonic网络安全团队实验室2016年08月09日