1.命令注入(Command Injection):
是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。从而可以使用系统命令操作,实现使用远程数据来构造要执行的命令的操作。
PHP中可以使用下列四个函数来执行外部的应用程序或函数:system、exec、passthru、shell_exec
2.eval注入(Eval Injection):
eval函数将输入的字符串参数当作PHP程序代码来执行
4.跨网站脚本攻击(Cross Site Scripting, XSS)
跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息 的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇 请求、修改口令和下载非法的内容等请求。
跨站脚本攻击的一般步骤:
5.SQL注入攻击(SQL injection)
6.跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)
攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击。攻击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个链接,由于是用户自己点击的,而他又是合法用户拥有合法权限,所以目标用户能够在网站内执行特定的HTTP链接,从而达到攻击者的目的。
7.Session 会话劫持(Session Hijacking)
这是一种通过获取用户Session ID后,使用该Session ID登录目标账号的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。会话劫持的第一步是取得一个合法的会话标识来伪装成合法用户,因此需要保证会话标识不被泄漏。
一般攻击步骤
1.目标用户需要先登录需要攻击的站点,获取登录站点的sessionID
2.攻击者通过某种手段(暴力破解,计算,窃取)捕获sessionID
3.攻击者通过捕获的sessionID访问站点即可获得合法会话
8.Session 固定攻击(Session Fixation)
是一种诱骗受害者使用攻击者指定的会话标识(SessionID)的攻击手段。这是攻击者获取合法会话标识的最简单的方法。(让合法用户使用黑客预先设置的sessionID进行登录,从而是Web不再进行生成新的sessionID,从而导致黑客设置的sessionId变成了合法桥梁。)
一般攻击步骤
1、 攻击者通过某种手段重置目标用户的SessionID,然后监听用户会话状态;
2、 目标用户携带攻击者设定的Session ID登录站点;
3、 攻击者通过Session ID获得合法会话
防范手段参考博客:https://www.cnblogs.com/phpstudy2015-6/p/6776919.html#_label6
9.HTTP响应拆分攻击(HTTP Response Splitting)
防范方法:替换换行符 ,使用最新版本PHP,因为新版本中已经不允许HTTP表头出现换行符了
10.文件上传漏洞(File Upload Attack)
11.目录穿越漏洞(Directory Traversal)
是指黑客能够在Web应用程序所在的根目录以外的文件夹上,任意的存取被限制的文件夹,执行命令或查找数据。目录穿越攻击,也与人称为Path Traversal攻击
目录穿越绕过方案
进行URL编码:点–>%2e 反斜杠–>%2f 正斜杠–>%5c
进行16为Unicode编码:点–>%u002e 反斜杠–>%u2215 正斜杠–>%u2216
进行双倍URL编码:点–>%252e 反斜杠–>%u252f 正斜杠–>%u255c
进行超长UTF-8 Unicode编码:
点–>%c0%2e %e0$40%ae %c0ae
反斜杠–>%c0af %e0%80af %c0%af
正斜杠–>%c0%5c %c0%80%5c
目录穿越修复方案
1.在URL内不要使用文件名称作为参数
2.检查使用者输入的文件名是否有“…”的目录阶层字符
3.在php.ini文件中设置open_basedir来指定文件的目录
4.使用realpath函数来展开文件路径中的“./”、 “…/”等字符,然后返回绝对路径名称
5.使用basename函数来返回不包含路径的文件名称
参考链接:https://blog.csdn.net/weixin_45007073/article/details/113466902
12.远程文件包含攻击(Remote Inclusion)
其原理就是注入一段用户能控制的脚本或代码,并让服务端执行。文件包含漏洞可能出现在JSP、PHP、 ASP等语言中,原理都是一样的。文件包含漏洞主要可以分为:
一、本地文件包含漏洞(LFI):能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞。利用本地文件包含漏洞,可以查看系统任意文件内容,如果具备一些条件,也可以执行命令
二、远程文件包含漏洞(RFI):如 果php.ini的配置选项allow_url_fopen和allow_url_include为ON的话,则文件包含函数是可以加载远程文件的,这种 漏洞被称为远程文件包含漏洞。利用远程文件包含漏洞,可以直接执行任意命令。在实际渗透攻击过程中,攻击者可以在自己的Web服务器上放一个可执行的恶意 文件,通过目标网站存在的远程文件包含漏洞来加载文件,从而实现执行任意命令的目的。
防范方法参考文献:https://www.cnblogs.com/vo-ov/p/3745638.html
参考文献:
https://www.cnblogs.com/milantgh/category/594436.html