GraphQL注入攻击
GraphQL API通常与作为数据源的数据库管理系统相连接 。 API后端的Resolver在收到请求后 , 会根据操作集来区分查询 。 在Resolver查询数据库时 , 如果其操作涉及到数据的提取 , 那么就会直接执行相应的获取操作 。 可见 , 如果来自API客户端的数据 , 在未被适当清理的情况下 , 执行任何受信的操作 , 那么黑客就可以通过编排SQL/NoSQL , 来实施注入攻击 。 同样 , 如果对输入的清理不够充分 , 攻击者还会执行诸如LDAP注入、以及命令注入等其他形式的注入攻击 。
GraphQL CSRF攻击
跨站请求伪造(CSRF)攻击是指 , 在合法用户不知情时 , 强迫Web服务器运行那些不必要的操作 。 当存在CSRF漏洞时 , 攻击者会在当前登录用户的上下文 , 发送经过身份验证的请求 。 而GraphQL类型的应用极易受到CSRF攻击 , 毕竟API在接收浏览器的请求时 , 会自动接受所有的cookie(其中就包括了会话cookie) 。
目前 , 主要有两种类型的GraphQL CSRF攻击:基于Post和基于Get的CSRF 。 由于GraphQL使用多个API层来转换传入的多格式请求 , 而且能够影响到GraphQL应用的状态 , 因此大多数CSRF攻击通常以POST请求为目标 。 通常 , 许多开发人员会只接受设置为application/json的Content-Type标头 。 例如 , 以下POST请求可用于发出有效的GraphQL查询:
- POST /GraphQLHTTP/1.1
- Host: redacted
- Connection: close
- Content-Length: 100
- accept: */*
- User-Agent: ...
- content-type: application/json
- Referer: https://redacted/
- Accept-Encoding: gzip, deflate
- Accept-Language: en-US,en;q=0.9
- Cookie: ...
- {"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"}
- POST /GraphQLHTTP/1.1
- Host: redacted
- Connection: close
- Content-Length: 72
- accept: */*
- User-Agent: Mozilla/5.0(Macintosh; Intel Mac OS X 11_2_2)AppleWebKit/537.36(KHTML, like Gecko)Chrome/89.0.4389.82 Safari/537.36
- Content-Type: application/x-www-form-urlencoded
- Referer: https://redacted
- Accept-Encoding: gzip, deflate
- Accept-Language: en-US,en;q=0.9
- Cookie: ...
- query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
- <html>
- <!-- CSRF PoC - generated by Burp Suite Professional -->
推荐阅读
- 安全|Redline Stealer恶意软件:窃取浏览器中存储的用户凭证
- 温小姐|全市首台企业信用报告自助查询机在阳东正式投用
- 恶意|圣诞节前收到解雇邮件?新型 Dridex 网络钓鱼攻击曝光,看到勿点
- Microsoft|微软发布安全基线包:可阻止PrintNightmare、恶意攻击等
- 检测|有变化!西安一码通新增核酸结果查询入口
- Google|Google Play商店中发现感染Joker恶意软件的应用 下载量达50万次
- 视点·观察|浑水在恶意打压股价 还是贝壳在编织“谎言”?
- 最新消息|贝壳回应被浑水做空:坚决抵制任何机构的恶意做空行为
- 苹果|中国绿厂造「芯」不输苹果!发布替代手机黑科技眼镜,健康状态、导航、翻译一眼查询...
- 社交|微博回应被网信办约谈处罚:推进软色情和同质化恶意营销专项治理