目录
1、代码执行漏洞
2、命令执行漏洞
3、变量覆盖
4、目录遍历
5、SSRF
6、XXE
7、CRLF
8、CSRF
原理:
将字符串转化成代码去执行的相关函数产生的漏洞
php :eval,assert
利用:
url?x = PHP代码=>>直接将从x接收的数据当成代码执行
(菜刀原理)
原理:
PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
利用:
url?x = cmd命令
补充:
windows或linux下:
command1 && command2 先执行command1后执行command2
command1 | command2 只执行command2
command1 & command2 先执行command2后执行command1
原理:
通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞。经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等。
原理:
web服务器或者web应用程序对用户输入的文件名称的安全性验证不足,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。
利用:
重点观察一下被操作的文件的后缀是否被限制的严格,例如是否可以修改 PHP 文件。再看看跳转符号是否被过滤或者路径有没有被限制,可不可以穿梭任意目录。
正常的url:
http://www.test.com/test.jsp?file=aaa.html
恶意url:
http://www.test.com/test.jsp?file=../../Windows.system.ini
绕过:
(1)加密参数:aaa.jsp?file=base64编码
(2)url编码绕过
(3)目录限定绕过:~
(4)绕过文件后缀过滤:%00
(5)绕过来路验证:判断从哪里出发的这个url
原理:
服务器端请求伪造,伪造服务器端请求,从而突破客户端获取不到数据限制。
危害:
1. 可以对外网、内网、本地进行端口扫描;
2. 攻击运行在内网或本地的有漏洞程序(比如溢出);
3. 可以对内网Web应用进行指纹识别,原理是通过请求默认的文件得到特定的指纹;
4. 攻击内网或外网有漏洞的Web应用;
5. 使用file:///协议读取本地文件。
产生地方:
1)分享:通过URL地址分享网页内容
2)转码服务
3)在线翻译
4)图片加载与下载:通过URL地址加载或下载图片
5)图片、文章收藏功能
6)URL关键字:share,wap,url,link,src,source,target,u,display,sourceURL,imageURL
原理:
XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
利用:
利用一个CTF题讲解: http://web.jarvisoj.com:9882/
原理:
CRLF是”回车+换行”(\r\n)的简称。在HTTP协议中,HTTPHeader与HTTPBody是用两
个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一
旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会
话Cookie或者HTML代码,所以CRLFInjection又叫HTTPResponseSplitting,简称
HRS。
利用:
一般网站会在HTTP头中用Location:URL这种方式来进行302跳转,所以我们能控制的内容就是Location:后面的URL。
原理:
跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。
观察表单中是否存在一个 token 或者验证码来验证请求是正常用户发出的,或者观察程序中是否有对 reference 进行判断
处理,也就是判断请求的来源。如果都没有,恭喜你,这里很可能是一出 CSRF 漏洞。
拿DVWA的LOW做实验
正常URL:
http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#
本地写一个test.html,下面是具体代码:
404
file not found.
当受害者访问test.html时,会遭受CSRF攻击,密码已经被修改为了hack