IIS
IIS
是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。IIS目前只适用于Windows
系统,不适用于其他操作系统。IIS
的安全脆弱性曾长时间被业内诟病,一旦IIS
出现远程执行漏洞威胁将会非常严重。远程执行代码漏洞存在于HTTP
协议堆栈 【HTTP.sys
】中,当HTTP.sys
未正确分析经特殊设计的HTTP
请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码,可以导致IIS
服务器所在机器蓝屏或读取其内存中的机密数据。
PUT任意文件写入(IIS6.0)
IIS Server
在 Web
服务扩展中开启了 webDAV ,配置了可以写入的权限,造成任意文件上传。
利用BurpSute
抓包,将GET
请求改为OPTIONS
,即可成功上传文件。
短文件名猜解漏洞
IIS
的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404
,访问构造的某个不存在的短文件名,返回400
。
-
查看当前文件夹的短文件:在
cmd
中 执行dir /x
-
只显示前6位的字符,后续字符用
~1
代替。其中数字1
是可以递增。如果存在文件名类似的文件,则前面的6个字符是相同的,后面的数字进行递增。
-
后缀名最长只有
3
位,超过3
位的会生成短文件名,且后缀多余的部分会截断。
-
所有小写字母均转换成大写的字母。
-
长文件名中包含多个”
.
”的时候,以文件最后一个”.
”作为短文件名的后缀
-
长文件名前缀/文件夹名字符长度符合
0-9
和A-Z
、a-z
范围且需要大于等于9位才会生成短文件名,如果包含空格或者其他部分特殊字符,不论长度均会生成短文件。
-
目前
IIS
支持短文件名猜测的HTTP
方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、TRACE
六种。IIS 8.0
之后的版本只能通过OPTIONS
和TRACE
方法被猜测成功。IIS8.0
以下版本需要开启ASP.NET
支持。
漏洞利用
1. 猜测文件全名
通过IIS
短文件漏洞猜测出来的短文件名称,需要继续猜测出全名才可以在IIS
上进行访问【即IIS
由于安全原因不支持短文件名访问】
- 通过对目标网站或同类型网站进行爬虫,爬出建立一个字典库,再与得到的短文件名来猜剩下的字符 ;
- 利用
fuzzdb
【一个应用程序模糊测试(fuzzing)数据库】来猜解; - 结合OWASP的
dirbuster
【一款路径及网页暴力破解的工具】
2. 短文件特性软件
例如,backup_20180101.sql
,其短文件是BACKUP~1.SQL
3. 绕过Basic and Windows认证 / 后台
在某些IIS
服务器配置下,可以绕过Basic and Windows
认证,猜解出认证目录下的文件。
修复建议
-
此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解。
-
如果文件名本身小于9位【无短文件名】也是无法猜解的
-
如果文件夹名前6位字符带点“
.
”,扫描程序会认为是文件而不是文件夹,最终出现误报。 -
不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是
IIS
不支持中文猜测。 -
修改注册表即可以不创建短文件名格式。
-
关闭
Web
服务扩展-ASP.NET
。
IIS6.0远程代码执行(CVE-2017-7269)
开启WebDAV
服务的IIS 6.0
存在缓存区溢出漏洞导致远程代码执行,目前针对 Windows Server2003 R2
可以稳定利用。
解析漏洞
Apache
Apache
是世界使用排名第一的Web 服务器软件。它可以运行在几乎所有广泛使用的 计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将 Perl/Python等解释器编译到服务器中。
解析漏洞
目录遍历
由于配置错误,导致程序在实现上没有充分过滤用户输入的../
之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../
,也可是../
的ASCII
编码或者是unicode
编码等。
目录遍历的标志:Index of /
漏洞修复
在httpd.conf
文件中找到Options + Indexes + FollowSymLinks + ExecCGI
并修改成Options -Indexes + FollowSymLinks + ExecCGI
并保存【把+
修改为-
】
HTTP.SYS远程代码执行 (MS15-034)
影响范围:
Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2
漏洞复现
Nginx
文件解析
目录遍历
Nginx
的目录遍历与Apache
一样,属于配置方面的问题,错误的配置可导致目录遍历与源码的泄露。
CRLF注入
CRLF
是“回车+换行”【\r\n
】键的简称,HTTP Header
与HTTP Body
时用两个CRLF
分隔的,浏览器根据两个CRLF
来取出HTTP
内容并显示出来,通过控制HTTP
消息头中的字符,注入恶意换行,就能注入一些会话cookie
或者html
代码,由于Nginx
配置不正确,导致注入的代码会被执行,
目录穿越
漏洞出现在服务器的静态文件中,如果静态文件存储在/home/
目录下,而该目录在url
中名字为files
,那么就需要用alias
设置目录的别名。Nginx
在配置别名的时候,如果忘记加/
,将造成一个目录穿越漏洞。
Tomcat
实际上Tomcat
是Apache
服务器的扩展,但运行时它是独立运行的,所以当运行tomcat
时,它实际上作为一个与Apache
独立的进程单独运行的。
Tomcat 任意文件写入(CVE-2017-12615)
该漏洞的利用场景为当tomcat
运行在windows
下,允许PUT
方式的http
请求并且tomcat
的web.xml
配置文件中readonly
值为false
,攻击者就可以向服务器上传恶意jsp
文件或webshell
文件。tomcat
服务器配置默认情况下readonly
值为true
无法触发漏洞,需要修改为false
才能上传文件。
影响版本: Apache Tomcat >=7.0.0,<=7.0.79
。
Tomcat 远程代码执行(CVE-2019-0232)
-
Tomcat
的Servlet
是在conf/web.xml
配置的,通过配置文件可知,当后缀名为.jsp
和.jspx
的时候,是通过JspServlet
处理请求的,而其他的精通文件是通过DefaultServlet
处理的; -
可以得知:"
1.jsp
"(末尾有一个空格)并不能匹配到JspServlet
,而是会交由DefaultServlet
去处理; -
当处理PUT请求时:
会调用resources.bind:dirContext
为FileDirContext
:调用rebind
创建文件,又由于Windows
不允许" “(空格)作为文件名结尾,所以会创建一个”.jsp
"文件,导致代码执行 -
该漏洞存在于启用了
enableCmdLineArguments
选项的CGI Servlet
中,与JRE
向Windows
传递参数过程中的bug
有关。成功利用此漏洞可允许远程攻击者在目标服务器上执行任意命令,从而导致服务器被完全控制。 -
触发该漏洞需要同时满足以下条件:
系统为
Windows
;启用了
CGI Servlet
【默认为关闭】;启用了
enableCmdLineArguments
【Tomcat 9.0.*
及官方未来发布版本默认为关闭】
影响范围
9.0.0.M1 ~ 9.0.17,
8.5.0 ~ 8.5.39
7.0.0 ~ 7.0.93
漏洞复现
Tomcat + 弱口令 && 后台getshell漏洞
Tomcat
支持在后台部署war
文件,可以直接将webshell
部署到web
目录下。其中,欲访问后台,需要对应用户有相应权限。- Tomcat7+权限分为:
manager(后台管理)
1、manager-gui 拥有html页面权限
2、manager-status 拥有查看status的权限
3、manager-script 拥有text接口的权限,和status权限
4、manager-jmx 拥有jmx权限,和status权限
host-manager(虚拟主机管理)
1、admin-gui 拥有html页面权限
2、admin-script 拥有text接口权限
在conf/tomcat-users.xml文件中配置用户的权限
影响版本
Tomcat8.x,Tomcat7.x
漏洞复现
Tomcat manager App 暴力破解
JBoss
jBoss
是一个基于J2EE
的开发源代码的应用服务器。JBoss
代码遵循LGPL
许可,可以在任何商业应用中免费使用。JBoss
是一个管理EJB
的容器和服务器,支持EJB1.1
、EJB 2.0
和EJB3
的规范。但JBoss
核心服务不包括支持servlet/JSP
的WEB
容器,一般与Tomcat
或Jetty
绑定使用。
默认端口:8080、9990
Windows下Jboss安装:
-
下载
http://jbossas.jboss.org/downloads/
-
解压,我这里解压后的目录为:
C:\jboss-6.1.0.Final
-
新建环境变量:
JBOSS_HOME
值为:C:\jboss-6.1.0.Final
在path
中加入:;%JBOSS_HOME%\bin;
-
打开
C:\jboss-6.1.0.Final\bin
,双击run.bat
。出现info
消息,即配置成功。Note:注意
JDK
版本要在1.6~1.7
之间,1.8
版本jBoss
运行打开JMX Console
会出现500
错误。
jboss默认部署路径:
C:\jboss-6.1.0.Final\server\default\deploy\ROOT.war
设置外网访问,将
C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml
<!-- A HTTP/1.1 Connector on port 8080 -->
<Connector protocol="HTTP/1.1" port="${jboss.web.http.port}" address="${jboss.bind.address}"
redirectPort="${jboss.web.https.port}" />
将address=”${jboss.bind.address}”
设置为address=”0.0.0.0”
,并重启JBoss
。
JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
war后门文件部署
weblogic
WebLogic
是美国Oracle公司出品的一个applicationserver,确切的说是一个基于JAVAEE
架构的中间件,WebLogic
是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
默认端口:7001
下载地址:
https://download.oracle.com/otn/nt/middleware/11g/wls/1036/wls1036_win32.exe?AuthParam=1559386164_88cf328d83f60337f08c2c94ee292954
下载完成后双击运行,一直点下一步就ok了。
安装完成之后,在
C:\Oracle\Middleware\user_projects\domains\base_domain
这个目录双击startWebLogic.cmd
启动Weblogic
服务。
浏览器访问:http://127.0.0.1:7001/
, 界面上出现Error 404–Not Found
,即启动成功。
设置外网访问,在 域结构 -> 环境 -> 服务器
右边选择相应的Server(管理服务器),打开进行编辑,在监听地址:中填入0.0.0.0
,保存后,重启Weblogic
服务器即可。
XMLDecoder 反序列化漏洞(CVE-2017-10271)
Weblogic 反序列化远程代码执行漏洞(CVE-2019-2725)
Weblogic 反序列化命令执行漏洞(CVE-2018-2628)
Weblogic 任意文件上传漏洞(CVE-2018-2894)
Weblogic SSRF漏洞 (CVE-2014-4210)
Weblogic 弱口令
weblogic
的后台登录界面存在弱口令。