XSS总结
XSS总结https://blog.csdn.net/weixin_50464560/article/details/120384706测试工具:xsstrikexss-libs靶场练习xssdom型就是构造前端执行代码
反射型post可以构造请求链接 get可以在服务器构造表单请求头,让用户访问我的服务器
存储型可以长久控制,获取用户密码
a标签中的herf属性可以执行js代码js方法中可以闭合构造新的js代码
XSS漏洞的原理:跨站脚本攻击,xss的本质是JavaScript代码执行,原理是攻击者可以控制输入参数构造恶意代码
xss分类:
1、存储型 恶意JS代码直接存储在数据库中,每次调用数据都会执行
2、反射型 一次性JS代码,恶意链接–》服务器–》客户端浏览器
3、DOM型 前端页面构造恶意DOM代码,前端执行
dom文档,在浏览器窗口显示HTML源码的文档对象模型
如何验证xss是否存在?1、寻找用户可控参数输入点(与服务器端有数据交互)2、测试特殊符号,单引号、双引号、尖括号等书否被过滤或者处理 12<script> ...
OWASP top10
owasp总结A01:失效的访问控制(越权)将敏感信息泄露给未经授权的参与者、通过发送的数据泄露敏感信息、跨站请求伪造
风险说明:访问强制实施策略,使用户无法在于其权限之外操作。失败的访问控制通常导致未授权的信息泄露,修改或销毁所有数据,或在用户权限之外执行业务能力。常见的访问控制脆弱点:
违法最小权限原则,即访问权限应只授权特定能力、角色或用户、但实际上任何人都可以访问。
通过修改URL(参数修改或强制浏览),内部应用程序状态或者HTML页面,或者使用修改API请求的攻击工具绕过访问控制检查。
通过提供唯一的识别符允许查看或编辑其他账户。
API没有对POST、PUT和DELETE强制执行访问控制
特权提升,在未登录的情况下假扮用户或以用户身份登入时充当管理员。
预防措施:开发人员和QA人员应进行访问控制功能的单元测试和集成测试
访问控制只在授信服务器端代码或者无服务器API中有效,这样攻击者猜无法修改访问控制检查或元数据
除公有资源外,默认访问拒绝。
使用一次性的访问控制机制,并在整个应用程序中不断重复它们,最小化跨站资源共享(CORS)的使用
建立访问控制模型以强制执行所 ...
文件上传总结
文件上传:常见安全问题:
1、上传脚本文件,服务器web容器解释并执行了脚本,导致代码执行
2、上传病毒、木马文件、引诱用户或管理员下载执行
3、上传钓鱼图片、或者包含了脚本的文件,在某些版本的浏览器中作为脚本执行,或者钓鱼欺诈
客户端检测+绕过:前端验证文件后缀:shell.php.png 但是可以直接修改前端验证代码(png改成php),或者抓包修改文件后缀->shell.php.png->shell.pnp
后端验证:1、白名单校对——%00截断:在C或者PHP语言中0x00被认为是终止符。后缀名可以修改为xxx.php%00.jpg,绕过文件类型验证判断 但在服务器中是xxx.php 因为jpg没有被执行解释。[\0]16进制 原理:URL中%00转换为ASCII字符是0,而ASCII中的0作为特殊字符保留,表示字符串结束。
2、Content-Type:判断类型,也可以抓包直接修改为image/png
3、MIME Sniff功能:读取文件前256个字节判断文件类型
4、黑名单:
4.1 可以文件后缀替换asp 可以用 ...
序列化-python反序列化
序列化-python反序列化(学习中。。。)1、Python反序列化函数使用2、Python反序列化魔术方法3、Python反序列化POP构造4、Python自动化代码审计bandit使用
常用函数pickle dump(obj.file) 将文件序列化后保存在文件pickle load(file)读取文件,将文件中的序列化内容反序列化为对象pickle.dumps(obj)将对象序列化成为字符串格式的字节流pickle.loads(bytes_obj)将字符串格式的字节流反序列化为对象
魔术方法reduce() 反序列化时调用_reduce_ex() 反序列化时调用setstate() 反序列化时调用geststate() 反序列化时调用
各种函数语言函数Java: Serializable Externalizable 接口、fastjson、jackson、gson、ObjectInputStream.read、ObjectObjectInputStream.readUnshared、XMLDecoder.read、ObjectYaml.loadXStream.fromXML、 ...
序列化-PHP
序列化-PHP反序列化 & POP链构造啥是反序列化?
序列化:对象转换为数组或字符串等格式
反序列化:将数组或字符串等格式转换成对象
serialize() //将一个对象转换成一个字符串
unserialize() //将字符串还原成一个对象
eg:
1234567891011<?phpclass test{ public $a; public $b; function __construct(){$this->a = "xiaoshizi";$this->b="laoshizi";} function happy(){return $this->a;}}$a = new test();echo serialize($a);?>
序列化后:
12O:4:"test":2:{s:1:"a";s:9:"xiaoshizi&q ...
序列化-Java反序列化
序列化-Java反序列化BUUCTF中有联系题目山羊靶场
没有源码很难找出漏洞
序列化:把Java对象转换为字节序列反序列化:字节流恢复为对象
对象序列化主要有两种用途:把对象的字节序列永久的保存在硬盘上,通常存放在一个文件中(持久化对象)在网络上传送对象的字节序列。(网络传输对象)
一、序列化和返序列化概念Serialization(序列化):把对象转换为一连串有规律的字节描述的过程。
deserialization(反序列化):把这些字节转换为对象的过程
二、为什么要序列化和反序列化当两个进程进行远程通信时,互相发送数据文本、图片、音频、视频等,都会转换为二进制在网络上传输。Java是面向对象的开发方式,一切都是对象,在网络层传输时,发送方就需要把对象进行序列化,接收方需要反序列化。
Java序列化的好处:
实现了数据持久化,可以把数据永久保存在本地硬盘上(通常是放在文件里)
利用序列化进行远程通讯,即在网络上传送对象的字节序列
在网络中数据的传输必须是序列化形式进行的,其他序列化方式可以使JSON传出,xml传输。
类文件:Person.java123456789101112 ...