学习内容来自哔哩哔哩的up主——网络安全就业推荐
一、xss攻击的分类
xss攻击中文名为:跨站脚本攻击,一般是用脚本语言,如JavaScript在前端的输入框处插入脚本语言,对网站进行攻击的行为,一般会获取网站的cookie。
反射型xss---一次性的
存储型xss---存储在数据库中,非一次性,会广泛传播
Dom(document object model)型xss---通过向前端的HTML代码插入脚本实现攻击
二、攻击流程
反射型:
dvwa的low级直接在输入框输入<script>alert(1)</script>点击提交会有弹窗跳出
防范方法:用str_replace()函数直接替换掉<script>
如:$name=str_replace('<script>',' ',$name); #PHP代码,name是接受输入框的变量
$name=str_replace('<script>',' ',$name);
medium级应该是应用了str_replace(),由于替换为了空格,所以我们在<script>里再插一个<script>让里面的被替换掉,外面的就构成新的<script>了,所以我们插入
<scr<script>ipt>alert(1)</script>成功绕过
当然,我们也可以用大小写的方法绕过,如输入<Script>alert(1)</script>,结果发现也能绕过。
防范方法:用正则替换 preg_replace()函数
/*“i”表示不区分大小写*/
$name=preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i',' ',$name);
high级应该是用了这种方法,由于<script>被替换掉了,我们用还是可以用HTML自带的事件,
我们插入<img src=1 οnerrοr=alert(1)>成功绕过。
所以我们要防范这种攻击,可以将一些预定义的字符转换为HTML实体
用:$name=htmlspecialchars($name); 防范。
$name=htmlspecialchars($name);
具体的含义请自己搜索。
我们还有在url框处插入<img src=1 οnerrοr=eval(一个文件(如PHP文件))>
文件中写了一个新建一个txt文本保存用户的cookie值。
存储型:
存储型与反射型区别在存储型是非一次性的,如以下为dvwa的low级存储型,点击提交后有弹窗弹出,且
提交后的message处不显示是因为插入的语句被当成带码了而不是变量$name的值,所以不显示
点击刷新后弹窗又跳出来了
防范方法和绕过方法和反射型差不多,这里不再赘述。
Dom型:
F12发现这里的if语句里
如果default>=0的话lang就等于什么什么,我们看到有substring是在其他语言里常常是截取字符串里某一段的意思,后面还有一个(“default=”+8),我们大胆猜测是lang的值是等于号后面的8位。
(后来又看了一遍发现是default=这串是8个字符,lang的值应该等与default=后的部分)
第二行的document.write写了
<option value='lang'>decodeURI(lang)</option>,所以不管三七二十一,我们先在URL后面补上 ?default=alert(1)
结果果然弹出了弹窗
三、实际应用:
这里不是让大家攻击别人,而是要明白别人攻击的方式,便与防范。
实际攻击中常常将插入成功的URL发送至受害者,受害者一旦点击链接就会将cookie发送给攻击者,所以不要点击别人发来的网页链接,当然插入的部分一般不会是alert(1),而是其他代码,这里不在赘述。
网络安全的学习一定要配合网络安全法一起学习,以上内容乃作者的网络安全学习笔记,读者所为一切行为均与作者无关,忘牢记网络安全法。