大部分初学者会把xss、xxe、csrf、ssrf、crlf搞混,这里说明一下各自的作用攻击类型和现象等,逻辑文字较多,可能比较枯燥,但是想要入门WEB安全这些理论知识是必须要掌握的,尽量写的简单点。
XSS(跨站脚本攻击)-Cross Site Scripting 。是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写u人恶意的脚本代码(HTML, JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行导致用户被攻击。
常见的危害有:cookie窃取,sesssion劫持,钓鱼攻击,蠕虫,DDos
详细信息查看:手把手教你XSS漏洞常见类型挖掘方法
XML外部实体(XML External Entity, XXE),Web应用的脚本代码没有限制XML引入外部实体,从而导致测试者可以创建一个包含外部实体的XML,使得其中的内容会被服务器端执行
常见的危害有:当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害
详细信息查看:XXE 外部实体注入漏洞
CSRF (跨站站点请求伪造)。攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求时完全合法的,但是却完成了攻击者所期望的一个操作。
常见的危害有:比如以你的名义发送邮件,法消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
详细信息查看:CSRF(跨站请求伪造)攻击实战
SSRF(服务端请求伪造) Server-Side Request Forgery ,是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。在一般情况下,SSRF攻击目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统
常见的危害有:利用该漏洞绕过防火墙等访问限制,进而将受感染或存在漏洞的服务器作为代理进行端口扫描,甚至是访问内部系统数据。
CRLF是Carriage-Return Line-Feed的缩写又称为HTTP响应拆分漏洞(HTTP Response Splitting),意思是回车换行,就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。换行在有的ASCII码表也用newline(简nl)来进行表示,这里的lf是line feed的概念,意思是一样的。
常见的危害有:内容较多可以查看CRLF(HTTP响应拆分漏洞)攻击实战
实战
1.攻击流:攻击者----->服务器---->目标地址(内网)
2.使用pikachu的靶机进行演示SSRF漏洞。
靶场搭建查看:中文版Pikachu web靶机平台搭建指南,英语小白的福音
3.查看页面中有一个url点击一下看看。
4.审查url可以看到有点不一样,如果是正常的url这里请求的127.0.0.1应该指的是本机,本机是又没有这些文件的,所以这里的127.0.0.1其实指的是服务器。所以这里就可以以服务器的身份去进行一些攻击,比如访问服务器上的文件,比如利用服务器做为内网探测等。
5.修改url探测22服务是否开启。
6.源码审查,可以看到后台使用curl_exec()函数进行处理。该函数如果使用不当就可以导致SSRF漏洞,可以探测内网服务。
7.源码审查,如果使用了file_get_contents()函数就会导致可以读取任意文件。
8.修改参数读取/etc/passwd文件
总结:上面的例子虽然看起来都和文件包含比较接近,但是还是有点区别的,文件包含是包含的是个文件,而SSRF根据函数的不一样,不仅可以调用远程文件,还可以执行目录或者探测端口等情况。
curl_exec(),PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证
file_get_contents()函数是用于将文件的内容读入到一个字符串中的首选方法。
fsockopen()函数打开一个网络连接或者一个Unix套接字连接,