0x01 前言
学习Django没多久,我发现微服务用Flask写非常简便~~
在此之前,我并没有对 Flask 的安全问题有太多想法。
直到有一天,我尝试对部署在公司的 Flask 网站进行渗透测试,我发现,它没那么安全。
网站是我写的~哈!
0x02 构造攻击数据
我尝试在外网进行了一次恶意请求,发现防火墙能够成功识别并拦截它。
实际上这是在我意料之中,这么直白的攻击手段如果不能拦截说明防火墙该下岗了。
于是我在内网进行了一次恶意请求,于是,代码被成功注入。
0x03 说明
这一次的恶意攻击其实并没有达到理想值,这个恶意攻击最终导致了拒绝服务的攻击效果。
因为 Flask 在从数据库读取数据并进行模板渲染时因为特殊字符报错了,返回浏览器 500 错误。
0x04 防御import cgi
cgi.escape(string) #string 你要过滤的字符
# datastr = cgi.escape(request.form['data'])
0x05 结尾
我个人比较喜欢这种方法过滤,简单直接!至于会不会有更深层次的注入漏洞,有兴致再搞。