首页 > 编程语言 >Python XSS

Python XSS

时间:2023-01-23 20:11:29浏览次数:71  
标签:XSS 容器 Python 代码 owasp html xss docker

参考资料:https://owasp-skf.gitbook.io/asvs-write-ups/cross-site-scripting-xss/kbid-3-cross-site-scripting

靶场环境搭建

$ sudo docker pull blabla1337/owasp-skf-lab:xss

一些docker常用命令:
docker search <名称> #搜索镜像
docker pull <名称> #下载镜像
docker run -d -p 80:80 <镜像名称>
-d 后台运行
-p 后跟端口 port1:port2 将容器内部服务器端口port2映射到本地端口port1(如果-p后什么也不写,随机分配端口)
--rm 容器停止之后会自动删除
docker images #查看本地已经下载好的镜像
docker info #查看docker信息
docker ps #查看运行中的docker
docker stop 容器名/id #关闭容器
docker start 容器名/容器id #开启容器
docker rm 容器名/容器id # 删除

跑起来
$ sudo docker run -ti -p 127.0.0.1:5000:5000 blabla1337/owasp-skf-lab:xss
此时可以在虚拟机中访问靶场了
但如果想在物理主机上访问,参考这篇教程:https://www.sohu.com/a/273017267_649850
注意关闭kali的防火墙服务

XSS

输入最常用的语句:><script>alert(1)</script>

成功弹窗
查看源码:

@app.route("/home", methods=['POST'])
def home():
    xss = request.form['string']
    return render_template("index.html",xss = xss)
<center> <p style="font-size:2em;">

<div data-gb-custom-block data-tag="autoescape" data-0='false'>{{xss}}</div>

</p></center>

查了资料之后我才知道,这是flask模板

参考资料:https://www.mianshigee.com/note/detail/228332mqe/

string变量即是输入的字符串,由render_template返回index.html页面时,携带一些变量数据给Jinja2语法进行渲染。
这是一般情况下的显示:↓

如果后台返回给前端的变量为一段html代码,返回给前端经过Jinja2语法渲染后,效果会是:↓

可以看到,返回的变量中包含html代码,但是Jinja2语法并没有对这一小段代码进行渲染,而是直接显示了出来。在flask中,如果确认后台返回给前端进行渲染的变量中包含的HTML代码是安全的,则可以使用一些方法来对这段HTML代码也进行渲染,其中一种就是靶场中用到的autoescape 关闭安全机制,即设置为false,这就造成了xss可利用的点

用burpsuite抓包看看内容(系统重装了,burp还没来得及下,借用指南里的一张图)

有的时候xss触发可能还和浏览器有关,不同浏览器之间存在差距,并且代码作者可能作出一些限制,这也决定了xss能否成功

还有就是网站可能对html代码的输入做了限制,但可能并没过滤其编码形式,可以尝试用编码形式来绕过

补充阅读:https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_(OTG-INPVAL-001)

标签:XSS,容器,Python,代码,owasp,html,xss,docker
From: https://www.cnblogs.com/smile2333/p/17057267.html

相关文章

  • Hello, Python
    一、前戏1.编程语言简介在生活中,如果你想和外国人进行交流,你就得懂得他们国家的语言(汉语、英语、德语、法语等等),同样的,编程语言就是人与计算机之间沟通的一门语言,它能够......
  • Anaconda 安装 OpenCV for Python 教程(全平台通用)
    准备工作安装anaconda(均为超链接)Ubuntu安装Windows安装版本信息Python版本3.6OpenCV版本3.4.1.15dlib版本19.6.1开始搭建Anaconda创建Python虚......
  • Python的UDP网络编程
    UDP编程通信协议有,UDP和TCP模式:1、TCP适用于效率较低,精度较高的场景(文件传输、电子邮件)2、UDP适用于效率较高(视频在线点播,网络语音通话等)接下来的代码介绍的是UDP协议......
  • python一个函数简单接收命令行参数
    需要使用sys和getopt库defarg(_,__):#接收命令行参数importsysimportgetopt'''参数:_:短参数str,列如:-f-g-p__:长参数list,列如:['file','......
  • Day1-python基础
    1.认识pythonPython的发音与拼写Python的作者是GuidovanRossum(龟叔)Python正式诞生于1991年Python的解释器如今有多个语言实现,我们常用的是CPython(官方版本的C语言实......
  • 如何用Python实现http客户端和服务器
    功能:客户端可以向服务器发送get,post等请求,而服务器端可以接收这些请求,并返回给客户端消息。客户端:#coding=utf-8importhttp.clientfromurllibimportrequest,pars......
  • python3 获取request 302跳转后最终的URL
    python3获取request302跳转后最终的URL代码:importrequestsresp=requests.get(rtsp_url,timeout=(3,7))iflen(resp.history)>0:location_url=......
  • python 控制鼠标操作
    importtimeimportpyautogui##必须以管理员身份运行此程序,不然鼠标点击会没有效果!!!defmoveAndClick():print("startapp")x,y=976,748#鼠标需要移动到的位......
  • Python语言基础—集合的常见操作方法
    希望本阶段内容可以帮助大家学好Python基础,详情可以关注上方Python专栏!文章目录​​系列文章目录​​​​一、创建集合​​​​二、集合常见操作方法​​​​2.1增加数据​......
  • Python语言基础—列表的常用操作
    希望本阶段内容可以帮助大家学好Python基础,详情可以关注上方Python专栏!文章目录​​系列文章目录​​​​一、列表的应用场景​​​​二、列表的格式​​​​三、列表的常用......