1.在vps安装docker和docker-compose
2.上课涉及的vulhub中的漏洞,全部复现,同时说明漏洞成因
第一个:tomcat8
1)存在弱口令
2)登录成功
3)漏洞成因
- 因为网站没有修改tomcat的默认密码。
4)漏洞复现
1.找到文件上传点,发现只能上传war文件,于是使用.jsp的木马
2.上传
3.使用蚁剑连接
4.成功
第二个:Apache HTTPD 换行解析漏洞
1)在vulhub/httpd/CVE-2017-15715目录下输入docker compose build和docker compose up -d启动环境,环境启动后,访问http://your-ip:8080。直接就是非常简洁的文件上传界面,直接上传木马文件1.php提示错误。
2) 在vulhub/httpd/CVE-2017-15715目录下输入docker exec -it <containerID> /bin/bash进入容器,输入cat index.php查看页面源代码
3)在bp重放界面,点击Hex,在evil.php前面(0d 0a)加上0a,然后发送,可以看到没有“bad file”提示,说明1.php上传成功
4)访问访问http://192.168.226.133:8080/evil.php%0A得到phpinfo()信息。
漏洞成因:程序在解析PHP时,如果文件名最后有一个换行符x0A,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。
第三个:weblogic 弱口令/任意文件读取
1)搭建docker环境
2)使用弱口令weblogic:Oracle@123,即可实现登录
漏洞成因:WebLogic服务器在搭建后,管理员未修改后台的默认密码或设置的密码过于简单,导致攻击者可以通过暴力破解、字典攻击等方式轻易获取登录权限,进而对服务器进行进一步的控制和攻击
第四个:apache druid RCE
1)访问IP:8888进入Druid console控制台界面,点击Load data —>Local disk:
2)点击load data->local disk,然后点击connect data准备上传木马
3)添加如下内容
4)抓包并修改post包
5)得到id
漏洞成因:Apache HTTP服务器在处理文件上传或URL请求时,由于配置错误或解析漏洞,导致当文件名中包含换行符(\x0a
)时,服务器可能错误地将文件解析为可执行脚本(如PHP),从而允许执行恶意代码。
3. 总结RCE漏洞的原理和利用条件及解决方案
原理:
1)RCE(远程命令执行)漏洞,一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。如果设计者在完成该功能时,没有做严格的安全控制,测可能会导致攻击者通过该接口提交“意想不到"的命令,从而让后台进行执行,从而控制整个后台服务器。
2)以PHP为例,system、exec、shell_exec、passthu、popen、proc_popen等函数可以执行系统命令。当用户能控制这些函数的参数,并且开发人员对这个参数没有严格的过滤时就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
利用条件:
1)开发人员调用了能够执行系统命令的函数。
2)传入exec()或者ProcessBuilder()的参数用户前端可控。
3)服务端未对传入参数进行检查或过滤不严。
解决方案:
1)实际业务场景中可以使用相关的API代替Runtime和ProcessBuilder执行命令来实现,例如文件的操作可以使用相关的API函数。
2)对输入数据进行净化和检查,例如将任何引起参数或命令结束的字符进行转义,转义参数中所包含的特殊字符,使其无法对其当前执行进行截断,从而实现防范命令注入攻击的目的。
3)使用白名单的方式限制对应的参数值,例如只允许输入字符数字,下划线_,或者仅仅只能是邮箱、IP等。
4)各种框架、插件等位置都有可能出现命令执行,升级到新版本,多打补丁。
5)少用框架/CMS。
6)升级中间件。