《小白WEB安全入门》03. 漏洞篇
阅读原文时间:2023年08月29日阅读:2

@

目录


本系列文章只叙述一些超级基础理论知识,极少有实践部分

本文涉及到的语言需自行掌握

SQL注入和简单绕过原理

结构化查询语言 (Structured Query Language)简称SQL

SQL使我们有能力访问数据库

用户提交的数据可以被数据库解析执行

XSS漏洞原理

XSS(Cross Site Script),跨站脚本攻击

网页内嵌入HTML,CSS,JS代码

反射型:前端 -> 后端 -> 前端

存储型:前端 -> 后端 -> 数据库 -> 前端

DOM型:前端

NOSQL注入

NOSQL,指的是非关系型的数据库。NOSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NOSQL用于超大规模数据的存储。

CSRF原理

CSRF(Cross Site Request Forgery),跨站请求伪造。

攻击者盗用了你的身份,以你的名义发送恶意请求。

网络摄像头入侵原理

网络摄像头简称WEBCAM,英文全称为WEB CAMERA,是一种结合传统摄像机与网络技术所产生的新一代摄像机。

查找活跃IP

端口扫描

指纹筛选

暴力破解

字典破解

钟馗之眼

傻蛋

文件包含漏洞原理

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。

本地文件包含

远程文件包含

文件包含漏洞的成因

大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。

但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。

代码审计原理

顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议

熟悉程序语言

熟悉代码风险操作

熟悉设计模式

SSRF漏洞原理

SSRF(Server-Side Request Forgery),服务器端请求伪造。是一种由攻击者构造攻击链传给服务器,服务端执行并发起请求造成安全问题的漏洞,一般用来在外网探测或攻击内网服务。

XXE漏洞原理

什么是XML

  • XML 指可扩展标记语言(Extensible Markup Language)
  • XML 是一种标记语言,类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准

XML语言的作用

  • :特殊的文件,如手机中单机游戏的等级,装备等等。这些数据若是存放在数据库,就会因为数据库太大,普通文件太慢,所以采用xml文件保存软件中的数据。
  • :在网络上传递数据

什么是DTD

  • DTD,Document Type Definition,文档类型定义
  • DTD用于约束xml的文档格式,保证xml是一个有效的xml
  • DTD 包括内部DTD和外部DTD

XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害

反序列化漏洞原理

  • 对象转换成字符串
  • 持久保存
  • 网络传输

漏洞原理总结

  • 敏感信息

  • /index.php?f=php://filter/convert.base64-encode/resource=index.php

  • /index.php?f=file://D://www/html/about.php

  • 账号密码

  • 网站源码

  • 数据库备份

例如:

  • WEB商店:

    • 买1朵玫瑰:10¥
    • 买100朵玫瑰:90¥
    • 买-1朵玫瑰:?¥

绕过:

  • 前端校验
  • 后端校验

文件后缀

文件内容

自定义规则

  • WEB
  • Linux

什么是黑盒测试

黑盒测试法也称功能测试或数据驱动测试。

它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用

在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

什么是模糊测试

模糊测试是黑盒测试技术之一。

模糊测试是一种自动或半自动的测试技术,常被用来发现软件/操作系统/网络的代码中的错误和安全性问题,其中用于输入随机的数据和不合法的数据被称为“FUZZ”。