最近有涉及到第三方安全评测的问题,其中就包含了题目中所说的BashDoor漏洞。
BashDoor是什么?
维基百科:
我的理解是他能通过伪造一些请求头,然后获取到你服务器端的信息,甚至能进入服务器获取最高的权限。
贴一张网图:
可以看到他可以伪造请求头,然后获取到系统的信息。
实际问题:
请求头(其他的无关的都省略了):
Accept: () { <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v <<v;}
Accept-Language: zh-CN,zh;q=0.9
响应:
eyJjbGFzc05hbWUiOiJvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5IdHRwTWVkaWFUeXBlTm90QWNjZXB0YWJsZUV4Y2VwdGlvb
iIsInN0YWNrVHJhY2UiOiJvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5IdHRwTWVkaWFUeXBlTm90QWNjZXB0YWJsZUV4Y2VwdG
lvbjogQ291bGQgbm90IHBhcnNlICdBY2NlcHQnIGhlYWRlciBbKCkgeyA8PHYgPDx2IDw8diA8PHYgPDx2IDw8diA8PHYgPDx
2IDw8diA8PHYgPDx2IDw8diA8PHYgPDx2IDw8diA8PHYgPDx2O31dOiBJbnZhbGlkIG1pbWUgdHlwZSBcIigpIHsgPDx2IDw8
diA8PHY...
是一个Base64的异常信息,系统内部对异常做了加密处理,防止泄露关键代码堆栈。
最后解密出来是:HttpMediaTypeNotAcceptableException
原来是Spring对accpet头进行了处理,而我们系统刚好会吧异常Base64之后输出,导致第三方检测软件认为我们这里有BashDoor的风险。说白了就是一个乌龙事件,但是解决还是要解决的。
解决
在系统里面将这个异常截取下来,不输出该信息,后来检测,就没有这个漏洞了。
题外话
本次这个漏洞是一个第三方系统的误判,一般如果真的有这个漏洞通过更新服务器的Bash就可以了。
参考:https://blog.csdn.net/boboyu1224/article/details/88568059