不安全的配置-----从webgoat到nginx的四大漏洞

文章目录

  • webgoat
    • 不安全的配置
      • 总体目标:
    • 不安全的存储
      • 总体目标:
    • 不安全的沟通
      • 总体目标:
  • nginx不安全的配置
    • CRLF注入
    • nginx的目录穿越
    • nginx--add_header被覆盖
    • 不安去的配置导致解析漏洞

webgoat

不安全的配置

攻击如何进行:
强制浏览是攻击者用来获取未引用但仍可访问的资源的技术。 一种技术是通过从末尾删除部分直到找到不受保护的目录来操纵浏览器中的URL。

总体目标:

*您的目标应该是尝试猜测“配置”界面的URL。
*“配置” URL仅对维护人员可用。
*该应用程序不检查横向特权。

不安全的配置-----从webgoat到nginx的四大漏洞_第1张图片

由于不安全的配置,攻击者可通过蛮力破解配置目录并查看敏感信息,无非就是config\configure\conf等等暴力猜解,最后是conf完成本课题

不安全的存储

教学的概念/主题:
出于不同的原因,可以在Web应用程序中使用不同的编码方案。

总体目标:

本课将使用户熟悉不同的编码方案。

1.Base64编码是一种简单的可逆编码,用于将字节编码为ASCII字符。 使字节成为可打印的字符串很有用,但不提供安全性。
2.实体编码对特殊字符使用特殊序列。 这可以防止大多数解释器解释这些字符。
3.基于密码的加密(PBE)是使用文本密码的强加密。没有密码无法解密

4.MD5哈希是一种校验和,可用于验证字符串或字节数组,但不能反向查找原始字符串或字节。出于模糊的原因,如果可以选择,最好使用SHA-256。

5.SHA-256哈希是一种校验和,可用于验证字符串或字节数组,但不能反向查找原始字符串或字节。

6.Unicode编码是一种为支持全世界所使用的各种编写系统而设计的字符编码标准,它采用各种编码方案,其中一些可用于表示web应用程序中的不常见字符

7.URL编码

8.十六进制编码

9.Rot13编码是一种使文本不可读的方法,但是很容易反转并且不提供安全性。

10.具有密码编码的XOR是将密码混入数据中的弱加密方案。

11.双unicode编码

12.Double URL编码

不安全的沟通

课程要求

绝不应该以明文形式发送敏感数据! 授权后,应用程序通常会切换到安全连接。 攻击者可能只是嗅探登录名并使用收集到的信息闯入一个帐户。 一个好的Web应用程序始终会负责加密敏感数据。

总体目标:

看看以纯文本格式嗅探密码有多么容易。
了解加密登录数据的优势!

Stage1:在此阶段,您必须嗅探密码。 并在登录后回答问题。

不安全的配置-----从webgoat到nginx的四大漏洞_第2张图片
调式器下很容易发现密码

Stage2:现在,您必须更改为安全连接。 该URL应该以https://开头。如果您的浏览器抱怨该证书,请忽略它。 再次嗅探并回答问题
不安全的配置-----从webgoat到nginx的四大漏洞_第3张图片
不安全的配置-----从webgoat到nginx的四大漏洞_第4张图片
这里只需要将密码传输修改为非明文传输以及传输协议修改为TLS即可,这里只是告诫我们明文传输的危险性

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

nginx不安全的配置

CRLF注入

CRLF即回车加换行的简称

-----首先是http和https通信之间的转换,比如说之前学习会话管理的时候,在实现登录功能的时候,有些网站会通过302重定向(响应包的location字段)实现HTTP和HTTPS功能的转换。

不安全的配置-----从webgoat到nginx的四大漏洞_第5张图片

因为如上配置,每次访问此网站时会自动重定向到https的网址,而这里的并没有对uri即资源标识符进行过滤的操作,并且$uri是解码后的路径。
不安全的配置-----从webgoat到nginx的四大漏洞_第6张图片
所以这里直接构造一个网址http://192.168.11.147:8080/%0aSet-cookie:a%3D1

不安全的配置-----从webgoat到nginx的四大漏洞_第7张图片

如图,这里实现了换行的目的并对访问者设置了一个cookie,也就是之前学习会话管理的“会话固定”的攻击方式

正如上所诉, u r i 是 解 码 后 的 路 径 , 一 种 方 案 是 将 配 置 文 件 中 uri是解码后的路径,一种方案是将配置文件中 urihost/后设置为request_uri,因为request_uri解码前的。

nginx的目录穿越

nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):

不安全的配置-----从webgoat到nginx的四大漏洞_第8张图片

如图,一般来说只要与文件系统交互的地方都有可能存在目录遍历漏洞,这里的情况是需要nginx做反向代理的情况,动态文件交给后端处理,静态文件自己去处理,而这是不能把敏感文件夹公之于众吧(个人理解不知道是对是错),所以就要为/home文件设置一个别名用files代替,但是这里files没有’/'home却有/,所以当我们访问:http://192.168.11.147:8081/files../

不安全的配置-----从webgoat到nginx的四大漏洞_第9张图片

就会产生任意文件下载漏洞。

nginx–add_header被覆盖

Nginx配置文件子块(server、location、if)中的add_header,将会覆盖父块中的add_header添加的HTTP头,造成一些安全隐患。

不安全的配置-----从webgoat到nginx的四大漏洞_第10张图片

  • CSP(Content-Security-Policy)是一种内容安全策略,这里设置了js的同源策略,但是由于子块中的文件覆盖了此配置,将会导致安全漏洞

  • X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。

  • x-content-type-options–当服务器响应头X-Content-Type-Options:nosniff则script和styleSheet元素会过滤非指定的MIME文件

由于覆盖了CSP策略,xss漏洞也易而实现。


不安去的配置导致解析漏洞

该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。是owasp中不安全的配置漏洞

----查看nginx的配置文件–图一

不安全的配置-----从webgoat到nginx的四大漏洞_第11张图片

nginx支持php文件解析,当我们以http://your-ip/uploadfiles/nginx.png/test.php去访问nginx,nginx获得URI之后识别到是php文件,而nginx本身是不能解析php文件的,此时会交给php-fpm去处理,但是此时并不存在test.php这个文件会丢弃继续识别上一个文件,但上一个文件是png文件所以会返回错误–如图

不安全的配置-----从webgoat到nginx的四大漏洞_第12张图片

当然,这里解析了,是因为在php-fpm中的配置文件修改了–如图

在这里插入图片描述

这里security.limit_extensions = 这里设置了可以解析png文件

还需要提一下的是–如图

不安全的配置-----从webgoat到nginx的四大漏洞_第13张图片

cgi.fix_pathinfo = 1这里默认设置为1,字面上的意思就应该很明确了,是修复其路径使其规范化,它是用来对设置cgi模式下为php是否提供绝对路径信息或PATH_INFO信息。没有这个参数之前PHP设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME,没有PATH_INFO值。设置cgi.fix_pathinfo=1后,cgi设置完整的路径信息PATH_TRANSLATED的值为SCRIPT_FILENAME,并且设置PATH_INFO信息;如果设为cgi.fix_pathinfo=0则只设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME。cgi.fix_pathinfo的默认值是1。nginx默认是不会设置PATH_INFO环境变量的的值,需要通过正则匹配设置SCRIPT_FILENAME,但这样会带来安全隐患。这里参考了https://taobig.org/?p=650

最后可以通过此漏洞上传图片马getshell。

你可能感兴趣的:(WEB漏洞攻击及防御,nginx,安全,webgoat,漏洞复现,解析漏洞)