uWSGIPHP⽬录穿越漏洞(cve-2018-7490)复现(⽬录穿越
漏洞的理解)及we。。。
uWSGI是⼀个,它实现了WSGI协议、uwsgi、http等协议。
⽬录穿越漏洞:⽬录穿越不仅可以访问服务器中的任何⽬录,还可以访问服务器中任何⽂件的内容。例如,攻击者通过浏览器访
问../../../../../../../../../../../../../../etc/passwd(此处较多../),就可以读取Linux服务器根⽬录下的etc⽬录下的passwd⽂件的内容。
⽬录穿越⽐⽬录浏览、⽬录遍历更具破坏性,⽬录穿越不仅可以读取服务器中任何⽬录及任何⽂件的内容,还可以执⾏系统命令。
为了避免使⽤者存取到服务器上未经许可的⽂件,服务器提供两个安全机制:1.根⽬录;2.⽂件存取权限。 服务器限制使⽤者只能存取web 应⽤程序所在的根⽬录以及根⽬录下的⼦⽬录中的⽂件
漏洞复现:
1. 利⽤vulhub编译运⾏环境:(如果出现问题两种解决⽅案:1.前⾯利⽤过docker后没有将docker关闭导致8080端⼝被占⽤,重启⼀
下docker即可 2.如果解决不了,直接重启虚拟机)
docker-compose build
docker-compose up -d
访问界⾯如下,说明配置成功:
经过我的测试时发现,当只有⼀个../时没有界⾯:
⽽当../../即可访问到/etc/passwd:
⽽后⾯⽆论加⼊多少../都可访问到/etc/passwd,说明该phpinfo界⾯距离根⽬录只有两层:
 我们可以将Web服务器安全分为两⼤类:
  第⼀:Web服务器的安全性(Web服务器本⾝安全和软件的配置)。
  第⼆:Web应⽤程序的安全性(⽐如说是在Web服务器上运⾏的、ActiveX、、ASP这些代码的安全性)。
  那么Web服务器将会⾯临什么样的的攻击?
  常见的Web服务器攻击,它是利⽤Web服务器软件和配置中常见的漏洞,这些常见的漏洞是包括以下⼏个:
1.缓冲区溢出
2.⽂件⽬录遍历
3.脚本的权限
4.⽂件⽬录浏览
5.Web服务器软件默认安装的⽰例代码
6.Web服务器上运⾏的其他软件中的漏洞,⽐如SQL软件之间的漏洞
 ⾸先来看⼀下缓冲区溢出
  缓冲区溢出的意思就是说允许⼀些恶意的代码注⼊到应⽤程序,它也是可以是损坏应⽤程序的堆栈——它是内存中存储应⽤程序代码的⼀个地⽅——并⽤不同的代码代替原始代码的⼀部分来实现攻击者的⽬的,⽐如是运⾏特洛伊⽊马程序或远程控制应⽤程序。我们能看到以下是缓冲区溢出漏洞的⼀个简单⽰例代码,那么它是⽤C语⾔编写:
charaTmp[100];
scanf("%s",aTmp);
  我们先看到程序的第⼀⾏中,它是表⽰程序员声明⼀个长度为100的数组aTmp。再来看到在第⼆⾏中,scanf⽅法从控制台读取数据存到aTmp数组。代码不会检查%s变量是否能够容纳输⼊数据的⼤⼩。因为程序员编码过程中是不对输⼊字符串的⼤⼩进⾏检查,如果给定的输⼊超过100个的字符,那么这样将会造成缓冲区的溢出。如果是说⼀个精⼼构造构的输⼊中可能还会是包含汇编代码,这部分汇编代码能够获得源程序的运⾏相应的权限.
 ⽬录的遍历
  我们所说的⽬录遍历它意思是指访问到了不是之前设想或允许的⽬录(也可以是⽂件夹)。⽐如说我们知道的微软IISWeb站点的默认⽂件夹为C:\\inetpub,攻击者可使⽤的⽬录遍历漏洞,它是可以在该⽂件夹之外去读取他们本不该访问的⽂件。相信这样说⼤家还是不明⽩,我们再来进⾏⼀个⽐⽅的说明:假如有⼀个⽹址为“www.bad”的⽹站,其服务器代码中是包含⽬录遍历漏洞。那么⼀些攻击者它是通过输⼊以下URL就可以利⽤该漏洞,我们来看看这个URL的地址是怎样的。
  我们看到的URL中的“.../”它是告诉服务器上溯到⼀个⽬录,也就是“C:\\”⽬录(我们需要了解知道的是Web服务器可以将斜杠转换为反斜杠)。因此的话,如果你的IIS服务器默认⽬录为“c:\\inetpub”,那么这个URL会转到“C:\\”⽬录,那么这样的话攻击者它将能够详细的去看到“c:\\autoexec.bat”⽂件。除⾮⽤户已经是将服务器配置好了避免⽬录遍历,不然的话,所有⽬录可能都是可访问的。那么在这种情况下,Web服务器将显⽰“autoexec.bat”⽂件的内容,或者攻击者⼜可以去选择其他的⽂件!
脚本的⼀些权限
web服务器它为了运⾏通⽤⽹关接⼝(CGI)、Perl或者其他服务端的⼀些应⽤程序,在这样的情况下⾯,那么管理员必须授予对服务器端应⽤程序所在的⽬录的可执⾏权限。通常⼀些管理员给错误位置授予此权限(⼀般是因为他们不明⽩这么做,将会带来什么样的问题)。我们来看⼀下下⾯的⽰例,为⼤家探讨⼀下如果管理员将此权限授予C盘下的所有⽬录,那么将会发⽣什么样的情况:
  看到这样的地址,到底是什么意思呢?⾸先我们来破译这神秘的URL。某些字符如空格和斜杠,不能出现在URL中,因为URL是限于7-bit编码的ASCII码。但是在某些情况下还是会使⽤到这些字符。⼀般来说可⾏的办法是使⽤其⼗六进制的字符来表⽰,⼜是可以或者使⽤类似ASCII的base16编码。Base16使⽤字母a、b、c、d、e和f来表⽰⼤于9的数字。简单的举个例⼦来说,字母a它是表⽰⼗六进制中的数字10,f它是表⽰15,并使⽤10表⽰数字16。因此在前⾯的⽰例中:
1.空格它是使⽤ASCII编码表⽰为⼗进制的32,使⽤⼗六进制则为20,因此变成%20。
2.那么斜杠(/)使⽤ASCII编码表⽰为⼗进制的47,使⽤⼗六进制则为2f,因此变成%2f。
  那么最终经Web服务器解析后,就会变成下⾯的URL:
../winnt//cdir
  这是要执⾏“”并告诉它执⾏“dir”命令。“”它是位于“C:\\winnt\\system32”⽂件夹中的命令外壳。“Dir”命令列出当前⽬录中的所有⽂件,并且是将最后的结果返回给⽤户。这只是⼀个简单的例⼦,通常攻击者可以执⾏更复杂的命令以达到删除、运⾏或修改Web服务器上数据的⽬的,这就是攻击者能⼒所在了!
  我们看到下图是IIS⽬录权限的配置的的⼀个截屏。那么最佳做法是只给包含需要执⾏的服务端应⽤的⽂件夹设置可执⾏的权限,⽽不是包含可被攻击者利⽤的软件的⽂件夹,⽐如⼀些包含“”或者其他内置的命令。
 ⽬录浏览
  在⼀般的情况下,由于⽬录浏览它是禁⽤的,但是如果启⽤它之后,那么它会显⽰该⽬录中的所有⽂件,并允许浏览的⼦⽬录。有时知道⼀个⽂件存在可以帮助攻击者利⽤Web服务器上⽂件和程序的漏洞。所以为了服务器上的安全,不建议启⽤Web服务器上的⽬录浏览。
 ⼀些默认⽰例
  或者你不知道这个概念到底是什么意思,所谓的默认⽰例是包含在Web服务器软件中并在服务器软件安装时默认安装的应⽤程序。⼀些默认安装的⽰例中往往会包含安全的漏洞。⾯对这些事例我们最好的
办法应该就是不要安装⽰例,如果是你已经安装了的话,那么最好把它们删除掉,这样就把安全系数提升到更⾼的⼀个级别!
包括其他的⼀些服务
  ⾼超的⼀些攻击者,它是可以通过攻击在Web服务器上运⾏的其他服务来攻陷Web服务器。这些服务它就包括了常见⽤的FTP、SMTP、POP3、SQL服务器和NetBIOS服务。预防的措施就是减少“受攻击⾯”。⽤户是可以关闭所有运⾏在Web服务器操作系统上不必要的服务并对剩下的服务进⾏安全地配置。
  其中最好的做法就是在Web服务器只有⼀个Web服务程序,并没有其他的服务。当运⾏数据库和其他的软件应部署在单独的服务器上,这样服务器有防⽕墙保护,只有Web服务器易受Web攻击。如果攻击者是想办法去利⽤其他服务的漏洞来攻击服务器,这样的话也是能够⼲扰或攻陷Web站点。
Web服务器软件的本⾝的漏洞
其实在每个Web服务器软件,包括了常见的IIS和Apache等这些⼤型的服务器,由于缺乏安全的编码技术,该软件的程序员已经提供了内置漏洞。
那么Web服务器的保护呢?
  我们可以是针对上述漏洞最佳做法是遵循以下建议搭建并运⾏Web服务器。并且是采取以下列措施将提⾼Web服务器的安全性。
1.给Web服务器服务或守护程序配置能够使它正常运⾏最少的权限。通过这样的设置的话即使攻击者控制了Web服务器,他们只能获得运⾏该软件对应的⽤户账户的权限。所以的话攻击计算机或⽹络上的其他软件可⾏⽅案这样将⾮常的狭窄有限了!
2.及时的去安装最新的安全补丁并时刻关注漏洞的最新动态。
3.删除默认⽰例并避免安装类似的⽰例。
4.⽤户是可以通过删除不需要的应⽤程序,安全配置同⼀台计算机上的其他⽹络服务,确保操作系统已安装最新的安全补丁来保证承载Web 服务器的计算机的安全。
5.确保只给需要执⾏的脚本单独的⽬录运⾏的相关的⼀个权限。
6.在Web服务器上每个⽬录中,都提供⼀个index.html⽂件,这样以避免需要⽬录的浏览。
可以使⽤第三⽅安全产品
  使⽤商业和免费的产品也可以帮助抵御与Web服务器相关的不同漏洞,主要是有以下的⼀些相关的产品:
1.软硬件防⽕墙
2.Web应⽤防⽕墙(WAFs)
cve漏洞库
3.病毒防御软件
4.基于ISAPI的安全产品
5.安全⽇志
6.反馈分析的软件
7.⼊侵检测系统(IDS)和⼊侵检测防御系统(IPS)
8.漏洞扫描相关的软件
9.输⼊验证
 我们再来看看这些产品具体的⼀些解释:
  软硬件防⽕墙。防⽕墙过滤掉不属于正常Web会话的流量。所有Web服务器都应配备技术先进的第四代防⽕墙。第四代防⽕墙可以区分出普通的Web浏览器合法的流量和攻击者的恶意攻击流量。直接部署在Web服务器上的防⽕墙软件可以为服务器提供⼀些额外的保护,这是我们常⽤的操作!
Web应⽤防⽕墙,所谓的Web应⽤防⽕墙(WAFs)是具有Web流量深度检查功能的设备。WAFs能够提供基于内容的攻击的良好保护,它们是会解析HTTP会话的实际内容,寻与正常使⽤模式不匹配的已知错误或异常⾏为。使⽤这些设备是可以防范⾮常有效的攻击!
  病毒防御软件。在Web服务器上应该要去安装防御毒软件。如果攻击者利⽤安全漏洞企图控制Web服务器,并且是漏洞已经知道的话,那么病毒防御软件能够检测到并阻⽌它的攻击!
  但是的话基于ISAPI的安全产品。此类产品截取URL请求,过滤掉可能的攻击,⽐如缓冲区的溢出。Web服务器供应商通常会免费提供基于ISAPI的安全产品。
  反馈分析软件。⼀些反馈分析软件解析Web服务器的响应并与已知的正常⽹站响应进⾏⽐较。如果⽹站含有恶意代码或者被修改,响应将不匹配原始的已知的正常响应,通过这样能够检测出未经授权的⽹站的更改。
  ⼊侵检测与防御。我们都知道⼊侵检测系统(IDS)⼀般⽤于⼊侵的后期处理,因为系统保留事件的详细记录。⽽⼊侵预防系统(IDP)能够阻⽌某些已知的不良⾏为。
  漏洞扫描软件。管理员应运⾏漏洞扫描程序定期来测试Web服务器的安全性,因为假如扫描仪发现了安全漏洞,攻击者很可能也会发现同样的漏洞。有很多免费或商业的漏洞扫描软件。其中有些是基于Web,有些是硬件程序,那么剩下的就是⼀些纯软件。
  输⼊验证。通过去输⼊验证产品检查提交到Web站点每个数据是否存在异常、SQL注⼊命令或缓冲区溢出攻击代码。
  安全⽇志。使⽤安全⽇志可以提供Web服务器攻击⼊侵的证据。⽤户除了存放在在Web服务器上,还可以将它们存储⽹络上安全的位置以防⽌攻击者更改⽇志或删除记录。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。