8.29任务
- 总结反射型、存储型、DOM型XSS特点和区别
- 上网搜索一份XSS 的fuzz字典或字典生成工具(可选)
- 到XSS挑战靶场打靶,要求通过5关以上,通关越多,加分越多。(https://xss.tesla-space.com/)
- 总结浏览器解析机制,若不能理解,解释《漏洞利用之XSS注入》中15条中,至少5条执行成功或不成功的原因。(可选)
网安实习日志4
一、XSS
1、XSS
2、XSS分类
3、反射型、存储型、DOM型的特点
- 反射型XSS:攻击者构造一个参数包含恶意js代码的URL,诱骗用户点击,用户访问后向服务器发送请求,服务器响应包含恶意代码的页面,并在客户端执行。
- 存储型XSS:攻击者通过网页的留言、评论等交互处将恶意代码注入到服务器数据库中,用户请求后响应包含恶意代码的页面。
- DOM型XSS:攻击者构造一个参数包含恶意js代码的URL,诱骗用户点击,用户访问后向服务器发送请求,服务器的响应并不包含恶意代码,而是URL中的代码直接在本地浏览器由js执行。
4、区别
1.被攻击对象的不同
- 反射型XSS的被攻击对象一般是攻击者去寻找的。
- 存储型XSS是广撒网的方式或者指定的方式。
- DOM型XSS的被攻击对象和反射型XSS被攻击对象差不多,就是给攻击对象放送URL。
2.解析位置不同
- 反射型XSS的脚本被解析的地方是浏览器,而存储型XSS的脚本被解析的地方是服务器,DOM型XSS也是浏览器。但是反射型XSS需要联网,而DOM型不需要。
3.存储时间不同
- 反射型XSS是既有即用,没有持久性,而存储型XSS是存储在服务器上,只要服务器不挂机或者是被干掉,就一直会有,DOM型XSS和反射型差不多。
4.允许输入点不同
- 一般情况下,反射型XSS在搜索框,或者是页面跳转啊这些地方,而存储型XSS一般是留言,或者用户存储的地方,而DOM,是在DOM位置上,不取决于输入环境上。
二、XSS 的fuzz字典
1、fuzz字典
Fuzz字典(Fuzzing Dictionary) 是在进行模糊测试(Fuzz Testing)或密码破解等安全评估活动中使用的一种工具或资源,它包含了一系列预定义的字符串、单词、短语或模式,这些元素被用来生成测试数据或尝试猜测密码。
Fuzz字典可以是手动创建的,也可以使用专门的工具或软件自动生成。手动创建的Fuzz字典通常基于测试人员的经验和对目标系统的了解,而自动生成的Fuzz字典则可能包含随机生成的字符串、词汇组合或基于特定模式的变体。
需要注意的是,虽然Fuzz字典是安全评估中的有力工具,但其使用必须遵守相关的法律法规和道德规范。未经授权的攻击行为是违法的,并可能导致严重的法律后果。因此,在使用Fuzz字典进行安全评估时,必须确保测试行为是合法和合规的。
2、推荐的fuzz字典下载地址
3、fuzz字典生成工具
上网的时候发现了一款不错的fuzz字典生成小工具
工具地址:https://github.com/c0ny1/upload-fuzz-dic-builder
使用方法:
-n 上传文件名
-a 允许上传的后缀
-l 后端语言
-m 中间件
-os 操作系统
-d 是否加入双后缀
-o 输出的字典文件名
三、XSS挑战靶场打靶
第1关
把网页url里的test修改为
<script>alert()</script>
第2关
test被绑定给了页面的输入框
"> <script>alert()</script> <"
上述代码输入进输入框,成功通关
第3关
试试上一关的代码,发现不能通过
只用单引号,利用onmouseover函数构建一个新的测试代码
' onmouseover=javascript:alert() '
成功过关
第4关
发现源代码的try harder!为输入框内容,会被h2打印出,使用了双引号
可以构建和第三关类似的代码
" onmouseover=javascript:alert() "
第5关
先试试第4关的代码,发现失败了
查看源代码可知写入的onmouseover函数被添加一个下划线屏蔽了
换一种方法插入代码
"> <a href=javascript:alert()>xss</a> <"
利用a标签的herf属性,点击到a标签时就访问对应herf网址
点击xss,通关
四、总结浏览器解析机制
解析html以构建dom树 -> 构建render树 -> 布局render树 -> 绘制render树
不理解浏览器解析机制