Web安全攻防

跨站脚本攻击XSS

1.session和cookie

①cookie:客户端访问服务器时,服务器发送给客户端cookie,用来记录客户端用户的信息(比如账户密码等),客户端保存cookie值,以后客户端每次访问服务器时都会携带这份cookie,服务器根据cookie来识别用户

②session:客户端访问服务器时,服务器端创建一个session保存在服务器端,然后给服务器发送一个特殊的cookie(sessionid),客户端器下次访问服务器时,服务器根据客户端cookie中的sessionid来区分不同的用户。

区别:①cookie存在于客户端,可以被伪造;session存在于服务器,不能被伪造

使用:可以将登陆等重要信息放在session中,将其它不重要信息放在cookie中。

1.1JS中操作cookie

①f12打开页面>>控制台>>document.cookie(或者alert(document.cookie)弹窗)

②设置cookie:document.cookie="username=xxx"

1.2 token和session和cookie比较

①token构成:1uid+2当前时间戳+3签名字符串(签名密钥在服务器端)+4其它参数

②token和cookie的比较:token里没有存放用户信息,token无状态,可以跨域

token和session的比较:服务器端不需要存储token,不占内存

cookie中可以存储token,类似于cookie中存储session

一文彻底弄懂cookie、session、token (baidu.com)

2.get和post

①get:参数显示在地址栏;表单内的各个字段和数据直接加在表单的ACTION属性所指的URL中,在URL中可以被看到;传送数据较小;安全性低;get请求的数据不会修改服务器的状态,一般是读取静态文件(比如查看图片,html文件)

②post:参数不显示在地址栏;将表单内的各个字段和内容放在HTML HEADER内传送到表单的ACTION属性所指的URL中;传送数据较大;安全性高;post请求一般会改变服务器状态,比如增加一条数据,更改数据库记录

3.HTTP请求过程

①浏览器根据域名解析ip地址:>>1首先搜索浏览器自身的DNS缓存;>>2如果没有找到就搜索操作系统自身的DNS缓存(windows:windowssystem32driversetchosts);>>3如果没有找到就查找本地域名服务器的缓存;>>4如果本地域名服务器没有找到就向根域名DNS服务器发送请求,根域名服务器返回一个负责该域名主服务器的ip;然后本地服务器拿到ip后进行查询,主服务器如果有则查询完毕,如果没有再查二级域,三级域,直到查到。

注意:主机请求本地域名服务器为递归查询(替主机查找),其余的查询为迭代查询(要么告诉结果,要么告诉下一步去哪里查询)

②然后HTTP客户端在80端口与WEB服务器进行TCP三次握手连接

③客户端与服务器建立好连接以后,客户端向服务器发送一个HTTP报文请求

④服务器收到报文后,进行HTTP解析,然后发送HTTP响应报文。

⑤浏览器获取到了域名的对应消息后,TCP四次挥手断开客户端与服务器的连接。

⑥服务器返回给客户端有HTML代码,CSS、JS代码。浏览器解析这些代码,将其呈现给用户。

3.1 HTTP请求报文格式

image-20211224161037961

①第一行(起始行):请求方法,URL,协议版本;

②第二行(请求头部):首部HEADER

在这里插入图片描述

③空行

④主体内容(body)

3.2HTTP响应报文格式

image-20211224161004923

①状态行:协议版本,状态码(1xx请求正在处理 2xx请求成功 3xx重定向 4xx客户端错误 5xx服务器端错误),状态描述

②响应头部

③空行

④响应body

3.3HTTP特点

①可靠传输(工作在tcp三次握手四次挥手之上)

②请求应答模式

③灵活可扩展

④无状态(每次请求都是独立的,因为每次请求完都要四次挥手)

4.XSS攻击

4.1定义

黑客向HTML内注入恶意的代码,当用户在访问网页时,控制用户(不用用户密码,就登陆了账号)

4.2分类

①反射型XSS:黑客向HTML页面插入恶意代码,然后将链接发给用户,用户点击链接,浏览器请求服务器,服务端响应这样的资源,变成一个网页发给客户端,客户端点击,执行了恶意的代码,受到攻击。

我请求,你响应,我受到攻击。

②持久型XSS:黑客通过表单提交恶意代码,保存至数据库中;用户正常查询;从数据库中查询到恶意代码,返回给用户浏览器;浏览器解析恶意代码,执行

③DOM型XSS:本质是反射型XSS,通过url传参实现攻击,但是它不经过服务器,只在前端完成。

4.3攻击结果

①获取cookie②重定向,网站钓鱼③注入客户端脚本代码

4.4防御

①cookie头加上httponly

②针对输入:利用正则表达式匹配恶意脚本 (把识别出来的用'' ''或者_替换)

>>>识别恶意脚本,定义恶意脚本的模式

>>>对脚本的各种变形也要识别:比如大小写,复写

③针对输出:对前端的js代码,html代码进行转义处理,比如< >;";';%等,否则它是一个脚本文件,出来后就还是一个脚本文件

④白名单规则过滤

(79条消息) XSS攻击_Adrenaline630的博客-CSDN博客_xss攻击


跨站请求伪造CSRF

与XSS的区别:①XSS需要在一个网站上注入HTML代码,然后获取用户的cookie,然后实现一些攻击。②CSRF不用获取用户的cooike,就可以冒充用户的身份,进行一些操作。

1.CSRF定义

服务器对用户的审核不严格,简单地说就是黑客伪造用户的身份做一些违法的事情。

2.CSRF攻击过程

用户访问一个网站A,网站A服务器会给用户浏览器发送cookie;用户没退出这个网站,在同一浏览器中,访问了恶意的网站B;网站B接受了请求后,返回给用户一些恶意的代码,并要求它访问网站A(有可能用户访问了网站B的什么图片);浏览器根据网站B返回的代码,在用户不知情的情况下访问了网站A(由于还是用户的cookie所以可以访问),网站B的恶意代码被执行。

3.典型CSRF攻击

①WeiboCSRF漏洞:你登陆了微博,没有退出登录,然后你点了一个链接,你可能就会自动关注一些账号,或者自动发一些微博。

②GmailCSRF漏洞:你登陆了邮箱,点了一个链接,然后有可能自动对Gmai服务器发送一个请求,比如转发规则,转到别的邮箱里,有可能你的一些验证码就转走了。

4.CSRF漏洞危害

①修改账户信息

②上传木马文件

③传播蠕虫病毒(比如微博,发了条链接的微博,别人打开,也中了病毒)

④和别的攻击手段结合,比如XSS

5.CSRF与XSS的区别

①CSRF借用用户的cookie,拿不到明文cookie;XSS直接拿走明文cookie。

②CSRF在第三方网站发起被攻击网站的请求(跨域),不是直接在浏览器上访问目标网站;XSS是直接把脚本代码注入到被攻击网站

③XSS有两个角色,浏览器+被攻击网站 ,XSS攻击是从被攻击的网站发起的,比如说我要盗取你xx的cookie,我就将代码注入到xx网站;CSRF多了个第三方网站,攻击是由第三方网站发起的

6.CSRF payload

①利用图片的img src属性

②构建一个超链接,用户点击,发起get请求,遭受攻击

③ 构建一个自动提交的隐藏表单,用户点击,发起get请求

7.CSRF的防御

7.1同源策略

同源:URL由协议,域名,端口,路径组成;如果两个URL的协议,域名,端口相同,则认为它们是同源的。

同源策略:浏览器的一个安全策略,限制了不同域的数据交互;如果非同源,浏览器在请求数据时,控制台就会报一个错误,提示拒绝访问,cookie无法获取,dom无法获得,ajax请求无法发送。

7.2防御

①referer:区分请求是从自己的前端页面发起的还是从第三方网站跳转的 //绕过:在http请求里加一个referer字段

②对cookie进行加密,客户端计算cookie的哈希,将cookie和哈希值一起发给服务端,服务端收到后进行计算比较。(因为第三方网站是拿不到用户的cookie的) //绕过:和XSS结合,XSS拿到cookie

③token:用户登陆以后服务端下发一个随机的token字段,并保存在session中>>客户端把token保存起来放在隐藏字段>>用户在第一次访问之后的每一次访问,都要携带token>>服务器端拿出token值进行比对,如果比对一致说明请求合法 //绕过:和XSS结合拿到token值,但因为有时间戳,还得保证速度。

④验证码


文件上传

(79条消息) 太厉害了,终于有人能把文件上传漏洞讲的明明白白了_在下小黄的博客-CSDN博客_文件上传漏洞

1.定义

用户在网站上传了一个可以执行的脚本文件,通过这个脚本获得了可以执行服务器端命令的能力。这个网站就可以被控制,称为所谓的“肉鸡”。

2.一句话木马

一个html代码上传一个php文件

一般页面的PHP代码

一句话木马代码

①post表示获取数据库中wuya后面的value值;

②eval表示把()里的内容作为代码执行

③@放在表达式前,该表达产生的错误有可能被忽略

④可以在上传的文件里写入操作操作系统的代码,php代码里有system函数可以操作操作系统

3.危害

①挂黑链接(让一些网站的排名在前)

②植入挖矿代码(替别人赚钱)

4.防御

①白名单只允许上传特定类型的文件

>>>在前端校验文件类型 //绕过:直接改js前端代码,使得可以上传php文件

>>>在后端也进行校验(摘取了http请求头里的content_type/accept里用来指定的数据类型)

//绕过:先上传php文件(理论上上传不成功);然后打开Burp suite中间抓包,在中间更改http请求包里的content_type格式;上传成功了

②黑名单不允许上传特定类型的文件 //绕过:>>>php等价扩展名 php3,php4,php5,phps,phtml >>>将php改成jpg,上传jpg文件,同时上传编译好的.htacess文件

5.流程

①找到上传的位置

②尝试绕过校验,上传文件(非常关键一步)

③获得文件位置

④蚁剑连接,管理文件

在上传成功以后,使用蚁剑工具链接上传以后的网址,然后在蚁剑内实施攻击(对后台数据库进行操作),因此文件上传相当于种植后门

原文链接:https://blog.csdn.net/weixin_46554184/article/details/124145038

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17825

(0)
上一篇 2023年2月14日
下一篇 2023年2月15日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml