WEB应用漏洞导致的入侵时有发生,扫描器和WAF并不能解决所有的问题,于是尝试在主机侧针对PHP环境做了一个防御方案。很荣幸的邀请到TSRC部分白帽子做了一次对抗演习,本文主要分享一下防御思路。
防御方案主要想解决的问题是getshell、主机敏感文件泄漏等问题。于是乎出了下面这样一个题目:部署了防御方案的Nginx + PHP 的WEB环境,提供一个上传入口,可上传任意文件。找到WEB目录下的一个flag文件读取到内容即算突破。
2 PHP扩展
防御方案使用了PHP扩展来完成阻断。PHP内核支持C/C++开发一些扩展功能,并且提供了一个框架 – ext_skel帮助生成基本的代码简化开发,由于PHP扩展并不涉及底层的资源管理,所以编写一个PHP扩展和编写一个C应用程序是一样的。下图展示了PHP扩展所处的结构层次,扩展位于PHP内核ZEND 和 PHP应用层代码之间,那么利用PHP扩展可以:
1) 监控PHP应用层代码的执行细节,包括执行CGI、函数名、参数等;
2) 调用PHP内核ZEND提供的API接口,包括禁用类、修改配置选项等。
图1 PHP语言的结构
3 相关知识
3.1 HOOKPHP代码
PHP是解释型语言,代码被翻译为中间字节码由ZEND引擎解析执行。PHP把中间字节码称之为OPCODE,每个OPCODE对应ZEND底层的一个处理函数,ZEND引擎最终执行这个处理函数。实现HOOK功能只需要改变HOOK OPCODE对应的处理函数即可,而ZEND预先就提供了一个现成的接口:zend_set_user_opcode_handler。防御方案只需要HOOK以下三个OPCODE:
ZEND_INCLUDE_OR_EVAL — eval、require等
ZEND_DO_FCALL — 函数执行system等
ZEND_DO_FCALL_BY_NAME — 变量函数执行 $func = “system”;$func();
举例:
ZEND_DO_FCALL这个OPCODE对应的功能是函数调用,如果需要HOOK所有的函数调用:
1) 在模块初始化函数中使用zend_set_user_opcode_handler修改ZEND_DO_FCALL新的处理函数为mysub:
PHP_MINIT_FUNCTION(phpips){
zend_set_user_opcode_handler(ZEND_DO_FCALL, mysub);
return SUCCESS;
}
2) 在自定义函数中实现自己需要的功能并返回原来的处理函数:
void mysub(){
自定义功能;
return ZEND_USER_OPCODE_DISPATCH;
}
3.2 ZEND接口
HOOK之外还需要获取一些基本信息或功能,比如:
1) 获取执行的PHP脚本名,可调用ZEND的接口zend_get_executed_filename:
char *cgi_name = (char*)zend_get_executed_filename(TSRMLS_C);
2) 禁用一些类库,可使用zend_disable_class接口;
ZEND提供了很多丰富的接口,可根据需求选择调用。
年终岁末,各路亲朋好友纷纷来京,亦或是在北京的小伙伴开始琢磨着回家,“买点儿啥特产”,最近成了吃喝玩乐在北京后台的热门话题。有经验的都知道,真空包装的全聚德“北京烤鸭”,那是难吃到一定境界,各大景...
黑客技术接单网站(国外黑客技术网站)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络黑客、黑客业...
权力的游戏·凛冬将至是腾讯旗下以传奇史诗巨制电视剧《权力的游戏》为蓝本开发一款手游,无论新老用户通过流动页面介入,只要到达3级(几分钟完成)即可免费领取6米微信红包,亲测秒推送,不活跃微信号就别去了!...
本文导读目录: 1、黑客可以通过手机摄像头,看见你在做什么吗? 2、qq四国军棋怎么看对方的牌 3、黑客是怎么看别人的资料的 4、为什么QQ游戏里斗地主有时候会看不到对方、连别人出的牌都看...
一、淘宝改评价怎么找黑客 1、黑客网站黑客们建造了美国。淘宝改评价盗号对于你的问题,你的90平方米的材料是否正在使用,如果不是,面积可能只有70平方米左右。为什么会被攻击黑客网站它非常强大和灵活,适合...
本文目录一览: 1、《仙界黑客》txt下载在线阅读全文,求百度网盘云资源 《仙界黑客》txt下载在线阅读全文,求百度网盘云资源 《仙界黑客》百度网盘txt最新全集下载:链接:?pwd=b6k2 提取...