目录
漏洞复现:
实验环境:
docker-compose build 建立环境
打开浏览器查看
上传木马ant.jsp,这个文件是有的
用“中国蚁剑”进行连接
解决难点
二、Apache漏洞
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
Apache HTTPD 多后缀解析漏洞
反向代理方式其中比较流行的方式是用 nginx 来做负载均衡。我们先简单的介绍一下 nginx 支持的几种策略:轮询、weight、ip_hash 、least_conn 、fair、url_hash
LBSNode1 和 LBSNode2 均存在位置相同的 Shell: ant.jspNode1 和 Node2 均是 tomcat 8 ,在内网中开放了 8080 端口,我们在外部是没法直接访问到的。 我们只能通过 nginx 这台机器访问。nginx 的配置如下:
假设在真实的业务系统上,存在一个RCE漏洞,可以让我们获取 WebShell。
docker-compose up -d 运行
docker ps -a 查看所有的进程,端口号为18080
然后连接目标,因为两台节点都在相同的位置存在 ant.jsp,所以连接的时候也没出现什么异常。
连接后打开我们的虚拟终端:查看IP地址,发现我们的IP进行了漂移;
出现了四个难点
难点一:
我们需要在每一台节点的相同位置都上传相同内容的 WebShell
一旦有一台机器上没有,那么在请求轮到这台机器上的时候,就会出现 404 错误,影响使用。是的,这就是你出现一会儿正常,一会儿错误的原因。
难点二:
我们在执行命令时,无法知道下次的请求交给哪台机器去执行。
我们执行 ip addr 查看当前执行机器的 ip 时,可以看到一直在飘,因为我们用的是轮询的方式,还算能确定,一旦涉及了权重等其它指标,就让你好好体验一波什么叫飘乎不定。
难点三:
当我们需要上传一些工具时,麻烦来了:
由于 antSword 上传文件时,采用的分片上传方式,把一个文件分成了多次HTTP请求发送给了目标,所以尴尬的事情来了,两台节点上,各一半,而且这一半到底是怎么组合的,取决于 LBS 算法
难点四:
由于目标机器不能出外网,想进一步深入,只能使用 reGeorg/HTTPAbs 等 HTTP Tunnel,可在这个场景下,这些 tunnel 脚本全部都失灵了。
1.执行前先判断IP;要不要执行
这样一来,确实是能够保证执行的命令是在我们想要的机器上了,可是这样执行命令,不够丝滑,一点美感都没有。而且HTTP 隧道的问题依旧没有解决.
2.(这里我的IP发生了变化,原因是第一次做实验失败,没有完成,于是重新做了实验 ,测试成功;大家做测试时候,按自己查询的IP做就好)在Web 层做一次 HTTP 流量转发
用 AntSword 没法直接访问 LBSNode1 内网IP(172.24.0.3)的 8080 端口,但是有人能访问呀,除了 nginx 能访问之外,LBSNode2 这台机器也是可以访问 Node1 这台机器的 8080 端口的。
第 1 步,我们请求 /web.jsp,这个请求发给 nginx
nginx 接到数据包之后,会有两种情况:
第 2 步把请求传递给了目标机器,请求了 Node1 机器上的 /web.jsp,接着 第 3 步,/web.jsp 把请求重组之后,传给了 Node1 机器上的 /ant.jsp,成功执行。
第 3 步,Node2 机器上面的 /web.jsp 把请求重组之后,传给了 Node1 的 /ant.jsp,成功执行。
(1)创建 web.jsp 脚本
修改转发地址,转向目标 Node 的 内网IP的 目标脚本 访问地址。
注意:不仅仅是 WebShell 哟,还可以改成 reGeorg 等脚本的访问地址。
我们将 target 指向了 LBSNode1 的 ant.jsp
(2)修改 Shell 配置, 将 URL 部分填写为 web.jsp 的地址,其它配置不变
3. 测试执行命令, 查看 IP
其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A
将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
在1.php后面插入一个\x0A,php会解析成1.php%0a,从而成功解析
Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:
AddType text/html .html
AddLanguage zh-CN .cn
其给.html
后缀增加了media-type,值为text/html
;给.cn
后缀增加了语言,值为zh-CN
。此时,如果用户请求文件index.cn.html
,他将返回一个中文的html页面。
以上就是Apache多后缀的特性。如果运维人员给.php
后缀增加了处理器:
AddHandler application/x-httpd-php .php
那么,在有多个后缀的情况下,只要一个文件含有.php
后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。
环境运行后,访问http://your-ip/uploadfiles/apache.php.jpeg
即可发现,phpinfo被执行了,该文件被解析为php脚本。
http://your-ip/index.php
中是一个白名单检查文件后缀的上传组件,上传完成后并未重命名。我们可以通过上传文件名为xxx.php.jpg
或xxx.php.jpeg
的文件,利用Apache解析漏洞进行getshell。