web漏洞-必懂知识点
文章目录
前言
介绍了漏洞的危害情况,等级划分及pikachu靶场的搭建。图片来源:https://blog.51cto.com/u_15127653/4523203。
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/1-3.png?raw=true)
漏洞情况
SQL注入
+ 原理:代码将前端输入直接拼接到了SQL语句中,导致可以通过修改前端输入的方式执行其它SQL语句。
+ 危害:能够通过修改输入的方式修改执行的SQL语句,如SQL查询语句时可以查询整个数据库数据。
文件上传
- 原理:文件上传的限制未做好。
- 危害:可以上传任意的文件,包括病毒文件。
XSS跨站
- 原理:当前端页面可以将用户编写的内容显示到网页上,如攻击者评论时输入恶意脚本且前后端未加处理措施,脚本在前端页面渲染时就会被执行,达到攻击目的。
- 危害:用户访问页面时会执行被注入的脚本。
文件包含
- 原理:PHP代码中的文件包含函数包含任意后缀文件都会被当作代码执行。
- 危害:如果有允许用户控制包含文件路径的情况,则可以通过包含文件方式执行代码。
反序列化
- 原理:网站将用户输入的数据进行了反序列化操作。
- 危害:攻击者可以通过修改输入的序列化数据将有害数据传递到网站代码中。
代码执行
- 原理:代码提供了可执行函数的接口但是没有做严格的过滤。
- 危害:攻击者可以通过调用system()之类的直接操作服务器的函数执行任意想要执行的命令。
逻辑安全
- 原理:程序逻辑不严。
- 危害:视具体情况而定。
未授权访问
- 原理:安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问。
- 危害:视具体情况而定。
CSRF(Cross-site Request Forgery,跨站请求伪造)
-
原理:浏览器会自动带上当前域的 cookie,可以通过cookie伪装来自受信任用户的请求去操作受信任的网站。
-
危害:攻击者可以操作受信任网站。
SSRF(Server-Side Request Forgery,服务器端请求伪造)
- 原理:服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。
- 危害:一般情况下,SSRF攻击的目标是从外网无法访问的内部系统,攻击者可以通过伪造好的请求伪造成服务器的身份发送给内网服务器。SSRF可以对外网服务器所在内网、本地进行端口扫描,攻击运行在内网或本地的应用,或者利用File协议读取本地文件。
目录遍历
- 原理:程序代码没有过滤掉请求URL上的 …/ 等目录跳转符。
- 危害:攻击者可以在未经允许的情况下查看服务器上的所有文件。
文件读取
- 原理:程序代码存在以用户输入参数为目标的文件读取函数且校验不严格。
- 危害:攻击者可以读取任意文件。
文件下载
- 原理:网站文件下载时目标文件通过下载链接控制且未做校验。
- 危害:攻击者可以下载任意目标文件。
命令执行
- 原理:代码编写时把用户输入的参数拼接到系统命令执行函数中且限制不严格。
- 危害:攻击者可以在服务器上执行任意命令。
XXE漏洞(XML External Entity,外部实体漏洞)
- 原理:代码引用了外部实体。
- 危害:文件读取、命令执行、内网端口扫描、攻击内网网站等危害
漏洞等级
漏洞等级需要根据漏洞危害情况来判断,并不特定指哪种漏洞属于哪种漏洞等级,可参考:https://blog.csdn.net/qq_38839915/article/details/113243116。
pikachu靶场安装
docker-compose安装
项目地址:https://github.com/zhuifengshaonianhanlu/pikachu,docker安装可参考https://blog.csdn.net/qq_44312640/article/details/127254696?spm=1001.2014.3001.5502。
version: '2.0'
services:
pikachu:
image: area39/pikachu:latest
container_name: pikachu
ports:
- '8081:80'
restart: unless-stopped
初始化
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221028100056598-3.png?raw=true)
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221028100112152-3.png?raw=true)
数据库操作
注意docker exec进入容器后想退出直接关闭终端即可,不要使用exit等退出命令,会将容器一起退出。
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221028100607361-3.png?raw=true)
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221028100628167-3.png?raw=true)
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221028100647412-3.png?raw=true)
![](https://github.com/kouyou-momiji/easyimage-image/blob/master/image-20221028100706559-3.png?raw=true)