一、sql注入漏洞原理
产生SQL注入漏洞的根本原因在于代码中没有对用户输入项进行验证和处理便直接拼接
到查询语句中。利用SQL注入漏洞,攻击者可以在应用的查询语句中插入自己的SQL代码并传递
给后台SQL服务器时加以解析并执行。
1、sql注入漏洞的危害
数据库信息泄露
网页篡改
网站被挂马,传播恶意软件
数据库被恶意操作
服务器被植入后门
破坏硬盘或者服务器等硬件设备
2、流量特征
可以在流量中看到关键字 database,version ,union,select等
3、以dvwa为演示过程wireshark抓包
二、xss漏洞原理
通过插入恶意脚本,实现对用户浏览器的攻击
1、xss漏洞危害
盗取用户信息、会话劫持和身份冒用、网站内容篡改、钓鱼攻击
2、流量特征
特殊字符如<script>、关键字检测、url编码%3Cscript%3E、异常请求头如user-agent
3、以dvwa演示
三 、文件上传漏洞原理
由于程序员在对用户文件上传功能实现代码没有严格限制用户上传文件后缀
以及文件类型或者处理缺陷,而导致用户可以越过本身权限向服务器上传木马去控制服务器.
1、文件上传危害
操作木马文件提权 获取网站权限
2、流量特征
异常文件类型、大文件上传、多个文件上传、无效文件内容
3、演示
四、文件包含漏洞原理
代码包含机制:在许多服务器端脚本语言中,开发人员通常会使用诸如 include()
, require()
, 或其他类似函数将外部文件的内容包含到当前运行的脚本中。这些函数的存在使得程序能够复用代码和共享资源。
用户可控参数:当这些包含函数所使用的参数是来自用户的输入时,如果没有对输入进行充分的过滤和验证,攻击者就可以通过修改这些参数值来包含任意文件。
恶意文件包含:如果攻击者成功地将恶意文件的路径传递给包含函数,那么该恶意文件的内容就会被包含并执行。这可能包括恶意脚本、敏感信息泄露等。
远程文件包含:在某些情况下,服务器配置允许从远程 URL 包含文件,这种情况下,攻击者可以利用此功能将恶意代码从远程服务器加载并执行。
本地文件包含:即使远程文件包含被禁用,攻击者仍可能利用本地文件包含漏洞来访问服务器上的敏感文件,例如 /etc/passwd
,或者利用已知的目录遍历技术来访问超出预期的文件。
总的来说就是实现动态包含的参数web端没有严格验证,客户端可以控制被包含文件路径因此就会产生任意文件包含漏洞
1、文件包含漏洞的危害
-
信息泄露:攻击者可以利用文件包含漏洞读取服务器上的敏感文件,如配置文件、源代码、数据库凭据等。这些敏感信息可能会被用于进一步的攻击。
-
远程命令执行:如果服务器允许从远程位置包含文件,并且没有进行充分的安全检查,攻击者可以将恶意脚本或可执行代码上传到一个公共位置,并通过文件包含漏洞将其包含并执行。
-
网站篡改:攻击者可以通过文件包含漏洞来修改网页内容,插入恶意链接或广告,或者对网站进行其他形式的破坏。
2、流量特征
异常文件路径:在请求参数中出现非标准的文件路径,如 ../../../../
或 %2e%2e/%2e%2e/
等用于目录遍历的特殊字符。
远程 URL 包含:尝试包含远程 URL 而不是本地文件,特别是当 URL 指向一个不可信的源时。
敏感信息泄露:请求返回的内容包含敏感信息,如数据库凭据、服务器配置等,这可能表明攻击者正在利用文件包含漏洞读取这些文件。
多次相似请求:短时间内发送大量相似的请求,可能是攻击者在尝试不同的攻击向量。
3、演示
五、文件读取漏洞原理
-
代码执行机制:在许多服务器端脚本语言中,开发人员通常会使用诸如
file_get_contents()
,fopen()
等函数从文件系统中读取数据并将其输出到用户界面。 -
用户可控参数:当这些文件读取函数所使用的参数是来自用户的输入时,如果没有对输入进行充分的过滤和验证,攻击者就可以通过修改这些参数值来读取任意文件。
-
恶意文件读取:如果攻击者成功地将恶意文件的路径传递给文件读取函数,那么该恶意文件的内容就会被读取并显示在用户界面上。这可能包括敏感信息泄露、源代码暴露等
六、ssrf漏洞原理
目标服务的内部调用:在某些情况下,应用程序可能需要从其他服务器或服务获取数据。这可以通过HTTP或其他协议进行,例如通过URL指定源来加载图片或内容。
用户输入与内部请求的结合:如果这个过程中的某个环节使用了用户的输入(如查询参数、表单字段等),并且没有对这些输入进行严格的验证和过滤,攻击者就有可能利用这一点。
总而言之
服务器会根据用户提交的URL 发送一个HTTP 请求。使用用户指定的URL,Web 应用可以获取图片或者文件资源等。典型的例子是百度识图功能。如果没有对用户提交URL 和远端服务器所返回的信息做合适的验证或过滤,就有可能存在“请求伪造”的缺陷。