作者:小仙人
介绍:安全武器库运营团队核心成员,享受星球原创文章待遇
声明
本篇文章为星球团队成员原创文章,已申请原创权限,如其他公众号有需要转文,请联系信安旅程运营人员。
引言
开篇之前,我想和大家说一下我的学习思路,我记得在刚入行网络安全的那会,看到的前辈写的一篇学习心得,对我影响颇深。再加之我的一位好友指引,使得我养成一个记笔记的习惯。毕竟,好记性不如烂笔头嘛,知识点这么多,即使我第一次看的印象再深刻也好,若是隔一段时间没利用,那么,我一样也会忘记,所以像我这样的老人家,这样的记性,只好这样记录了。
所以现在我每研究一个漏洞/攻击手段,我都会按照以下思路去进行。
1. 什么是XXX漏洞?漏洞的原理是什么?
2. 为什么会产生这个漏洞?根本的原因是什么?
3. 怎么挖掘这个漏洞?怎么验证漏洞是否存在?怎么利用这个漏洞?
4. 漏洞利用的前提条件是什么?漏洞影响的范围?漏洞造成的危害有多大?
5. 如果在甲方公司,自己公司站点受到此攻击,我应该如何应急响应修复?
6. 如何提前防范这个漏洞?如何进行加固?
所以以前上学的时候体育老师说的好,只要搞懂What、Why、How,语文考试随便高分。
1. 什么是远程代码执行漏洞
远程命令/代码执行漏洞,简称RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。RCE分为远程命令执行ping和远程代码执行evel。
2. 漏洞产生的根本原因
服务器没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。
3. 如何挖掘RCE漏洞
黑盒测试:网站中有特殊功能,比如Ping、数据库备份等等。
白盒测试:查看命令执行函数是否做过滤。命令执行函数如下:
PHP代码执行函数:eval()、assert()、preg_replace()、create_function()、array_map()、call_user_func()、call_user_func_array()、array_filter()、uasort()
PHP命令执行函数:system()、exec()、shell_exec()、pcntl_exec()、popen()、proc_popen()、passthru()
4. 挖到这个漏洞能做什么
- 远程命令、代码执行(单凭这一点能做的事情就不少,如下)
- 获取敏感数据、文件、服务器信息
- 写入恶意文件Getshell
5. 如何利用此漏洞
在网上你会发现有很多关于RCE的文章基本都是白盒检测出来的,但是往往渗透测试过程中,我们都是黑盒测试的。但是黑盒挖掘RCE漏洞太难了,很少有特征点,要理解参数的意义才有可能黑盒测试到。留意下一章......
6. 漏洞造成的危害
RCE漏洞造成的危害不言而喻,高危漏洞。能直接获取服务器的控制权(既然服务器都拿下了,为所欲为。)
7. 发现此漏洞,该怎么修复
- 通用的修复方案,升级插件/框架/服务最新版。
- 如若必须使用危险函数,那么针对危险函数进行过滤。
8. 如何防范此漏洞
- 在进入执行命令函数前进行严格的检测和过滤;
- 尽量不要使用命令执行函数,不能完全控制的危险函数最好不使用;
- 对于eval函数,一定要保证用户不能轻易接触eval的参数或者用正则严格判断输入的数据格式;
- 上云WAF当然最稳,哈哈哈。
注:漏洞的影响范围和利用的前提条件要视情况而定,例如Struts2著名的RCE漏洞,直至现在2020年,以前很多一些旧的漏洞已经不复存在,我们只好理解其中的原理即可。
若感兴趣的可以去了解一下由深信服千里日安全实验室写的这篇文章。
传送:https://www.freebuf.com/vuls/168609.html