Json命令注入保护检查
JSON命令注入检查会检查传入的JSON流量中是否存在破坏系统安全或修改系统的未经授权的命令。检查流量时,如果检测到任何恶意命令,设备将阻止请求或执行配置的操作。
在命令注入攻击中,攻击者的目标是在Citrix ADC操作系统或后端服务器上运行未经授权的命令。为此,攻击者使用易受攻击的应用程序注入操作系统命令。如果设备只是在没有任何安全检查的情况下转发请求,则后端应用程序容易受到注入攻击。因此,配置安全检查非常重要,以便Citrix ADC设备可以通过阻止不安全数据来保护您的网页应用程序。
命令注入保护的工作原理
- 对于传入的json请求,waf会检查流量中的关键字或特殊字符。如果json请求没有与任何被拒绝的关键字或特殊字符匹配的模式,则允许该请求。否则,将根据配置的操作阻止、删除或重定向请求。
- 如果您希望从列表中免除关键字或特殊字符,则可以创建放宽规则以在特定条件下绕过安全检查。
- 您可以启用日志记录以生成日志消息。您可以监控日志,以确定对合法请求的响应是否被阻止。日志消息数量的大幅增加可能表明有人试图发起攻击。
- 您还可以启用统计功能来收集有关违规和日志的统计数据。统计数据计数器出现意外激增可能表明您的应用程序受到攻击。如果合法请求被阻止,您可能需要重新访问配置,以查看是否必须配置新的放宽规则或修改现有放宽规则。
用于命令注入检查的关键字和特殊字符被拒绝
为了检测和阻止json命令注入攻击,设备在默认签名文件中定义了一组模式(关键字和特殊字符)。以下是在命令注入检测期间阻止的关键字列表。
< commandjection > 7z 7za 7zr …
签名文件中定义的特殊字符有:|;& $ > < ' \ !> > #
使用cli配置json命令注入检查
在命令行界面中,您可以使用集appfw概要文件命令或添加一个appfw概要文件命令来配置JSON命令注入设置。您可以启用阻止、日志和统计信息操作。您还必须设置要在有效负载中检测的命令注入类型,例如关键字和字符串字符。
在命令提示符下,键入:
set appfw profile
注意:
默认情况下,命令注入操作设置为“阻止日志统计信息”。此外,默认命令注入类型设置为
CmdSplCharANDKeyWord
。升级后,现有的Web应用程序防火墙配置文件的操作将设置为“无”。
示例:
set appfw profile profile1 -JSONCMDInjectionAction block -JSONCMDInjectionType CmdSplChar
其中,可用的json命令注入操作是:
无-禁用命令注入保护。日志-记录安全检查的命令注入冲突。阻止-阻止违反命令注入安全检查的流量。统计-生成命令注入安全违规的统计信息。
其中,可用的json命令注入类型为:
Cmd SplChar
-检查特殊字符CmdKeyWord
-检查命令注入关键字CmdSplCharANDKeyWord
-这是默认操作。该操作会检查特殊字符和命令注入。只有当关键字和方块都存在时。CmdSplCharORKeyWord
-检查特殊字符和命令注入关键字和块(如果找到其中任何一个)。
为json命令注入保护检查配置放宽规则
如果您的应用程序要求您绕过对有效负载中的特定元素或属性的JSON命令注入检查,则可以配置放宽规则。
Json命令注入检查放宽规则具有以下语法。
绑定appfw profile
标题中正则表达式的放松规则示例
绑定appfw profile abc_json -jsoncmDURL http://1.1.1.1/hello.html
鉴于以下内容放宽了来自1.1.1.1上托管的所有url的请求:
绑定appfw配置文件abc_json -jsoncmDURL http://1.1.1.1/* "
要删除松弛,请使用“取消绑定”。
解绑定appfw profile abc_json -jsoncmDURL " http://1.1.1.1/* "
使用GUI配置json命令注入检查
完成以下步骤以配置json命令注入检查。
- 导航到安全> Citrix Web App Firewall和配置文件。
- 在配置文件页面上,选择一个配置文件,然后单击编辑。
- 在Citrix Web App Firewall配置文件页面上,转到高级设置部分,然后单击安全检查。
- 在“安全检查“部分中,选择”Json命令注入,然后单击"操作设置”。
在Json命令注入设置页面中,设置以下参数
- 操作。选择要对json命令注入安全性检查执行的一个或多个操作。
- 选中请求包含。选择命令注入模式以检查传入请求是否具有该模式。
- 单击确定。
查看命令注入流量和违规统计信息
Citrix Web App Firewall统计信息页面以表格或图形格式显示安全流量和安全违规详细信息。
使用命令界面查看安全统计信息。
在命令提示符下,键入:
统计appfw配置文件profile1
Appfw配置文件流量统计 | 速率(/秒) | 总数 |
---|---|---|
请求 | 0 | 0 |
请求字节(请求字节数) | 0 | 0 |
回应 | 0 | 0 |
响应字节(响应字节数) | 0 | 0 |
中止 | 0 | 0 |
重定向 | 0 | 0 |
长期平均响应时间(毫秒) | - - - - - - | 0 |
- - - - - - | 0 |
Html / xml / json违规统计信息 | 速率(/秒) | 总数 |
---|---|---|
起始url | 0 | 0 |
拒绝url | 0 | 0 |
引荐人标头 | 0 | 0 |
缓冲区溢出 | 0 | 0 |
Cookie一致性 | 0 | 0 |
Cookie劫持 | 0 | 0 |
CSRF表单标签 | 0 | 0 |
HTML跨站点脚本 | 0 | 0 |
HTML SQL注入 | 0 | 0 |
字段格式 | 0 | 0 |
字段一致性 | 0 | 0 |
信用卡 | 0 | 0 |
安全对象 | 0 | 0 |
签名违规 | 0 | 0 |
内容类型 | 0 | 0 |
Json拒绝服务 | 0 | 0 |
JSON SQL | 0 | 0 |
Json跨站点脚本 | 0 | 0 |
文件上传类型 | 0 | 0 |
推断内容类型XML有效负载 | 0 | 0 |
HTML命令行注入 | 0 | 0 |
XML格式 | 0 | 0 |
XML拒绝服务(XDoS) | 0 | 0 |
XML消息验证 | 0 | 0 |
网址服务互操作性 | 0 | 0 |
XML SQL注 | 0 | 0 |
XML跨站点脚本 | 0 | 0 |
XML附件 | 0 | 0 |
肥皂错误违规 | 0 | 0 |
XML通用违规 | 0 | 0 |
违规总数 | 0 | 0 |
Html / xml / json日志统计信息 | 速率(/秒) | 总数 |
---|---|---|
启动url日志 | 0 | 0 |
拒绝url日志 | 0 | 0 |
引用者标头日志 | 0 | 0 |
缓冲区溢出日志 | 0 | 0 |
Cookie一致性日志 | 0 | 0 |
Cookie劫持日志 | 0 | 0 |
来自标签日志的CSRF | 0 | 0 |
HTML跨站脚本日志 | 0 | 0 |
HTML跨站点脚本转换日志 | 0 | 0 |
HTML SQL插入日志 | 0 | 0 |
HTML SQL转换日志 | 0 | 0 |
字段格式日志 | 0 | 0 |
字段一致性日志 | 0 | 0 |
信用卡 | 0 | 0 |
信用卡转换日志 | 0 | 0 |
安全对象日志 | 0 | 0 |
签名日志 | 0 | 0 |
内容类型日志 | 0 | 0 |
Json拒绝服务日志 | 0 | 0 |
Json SQL注入 | 0 | 0 |
Json跨站点脚本日志 | 0 | 0 |
文件上传类型日志 | 0 | 0 |
推断内容类型XML有效负载 | 0 | 0 |
Json CMD注入 | 0 | 0 |
HTML命令注入日志 | 0 | 0 |
XML格式化日志 | 0 | 0 |
XML拒绝服务(XDoS)日志 | 0 | 0 |
XML邮件验证日志 | 0 | 0 |
Wsi日志 | 0 | 0 |
XML SQL注入日 | 0 | 0 |
XML跨站点脚本日志 | 0 | 0 |
XML附件日志 | 0 | 0 |
肥皂错误日志 | 0 | 0 |
XML通用日志 | 0 | 0 |
日志消息总数 | 0 | 0 |
服务器错误响应统计信息速率(/ s) |总数 | |—|–|–| HTTP客户端错误(4 xx重复)| 0 | 0 | HTTP服务器错误(5 xx重复)| 0 | 0 |
Html / xml / json日志统计信息 | 速率(/秒) | 总数 |
---|---|---|
Json命令注入日志 | 0 | 0 |
XML格式化日志 | 0 | 0 |
使用Citrix ADC GUI查看JSON命令注入统计信息
完成以下步骤以查看命令注入统计信息:
- 导航到安全> Citrix Web App Firewall >配置文件。
- 在详细信息窗格中,选择一个Web应用防火墙配置文件,然后单击统计信息。
- Citrix Web App Firewall统计信息页面显示json命令注入流量和违规详细信息。
- 您可以选择”表格视图“或切换到”图形视图,以表格或图形格式显示数据。
Json命令注入流量统计
Json命令注入违规统计信息
为json命令注入配置细粒度松弛
Web应用程序防火墙为您提供了从基于JSON的命令注入检查中放宽特定JSON键或值的选项。通过配置细粒度松弛规则,可以完全绕过对一个或多个场的检查。
以前,为json保护检查配置放宽的唯一方法是指定整个url,这将绕过对整个url的验证。
基于json的命令注入安全保护为以下方面提供了放松:
- 注册表名称
- 注册表值
基于json的命令注入保护使您能够配置放宽以允许特定模式并阻止其余模式。例如,Web应用防火墙当前有一组默认的SQL关键字超过100个。由于黑客可以在命令注入攻击中使用这些关键字,因此Web应用程序防火墙会将所有关键字标记为潜在威胁。如果您想放宽一个或多个被认为对特定位置安全的关键字,则可以配置放宽规则,以绕过安全检查并阻止其余关键字。放宽中使用的命令具有值类型和值表达式的可选参数。您可以指定值表达式是正则表达式还是文字字符串。值类型可以留空,也可以选择关键字或特殊字符串。
注意:
正则表达式非常强大。特别是如果您不太熟悉pcre格式的正则表达式,请仔细检查您编写的任何正则表达式。确保他们准确地定义了要添加为例外的url,而不是别的。粗心使用通配符,尤其是点星号(. *)元字符或通配符组合,可能会产生您不希望的结果,例如阻止对您不打算阻止的网络内容的访问,或者允许JSON SQL注入检查本来会阻止的攻击。
需要考虑的要点
- 值表达式是可选参数。字段名称可能没有任何值表达式。
- 一个注册表名称可以绑定到多个值表达式。
- 必须为值表达式分配值类型.值类型可以是:1)关键字,2)SpecialString。
- 每个键名/ url组合可以有多个放宽规则。
使用命令界面为命令注入攻击配置json细粒度放宽
要配置JSON文件颗粒放宽规则,必须将细粒度松弛实体绑定到Web应用防火墙配置文件。
在命令提示符下,键入:
bind appfw profile -jsoncmdURL -key -valueType
示例:
bind appfw profile appprofile1 -jsoncmdurl www.example.com -key blg_cnt -isRegex NOTREGEX -valueType关键字" cat " -isvalueRegex NOTREGEX . bind appfw profile appprofile1 -jsoncmdurl www.example.com
使用GUI为基于json的命令注入攻击配置精细松弛规则
- 导航到应用程序防火墙 > 配置文件,选择一个配置文件,然后单击编辑。
- 在“高级设置”窗格中,单击”放宽规则”。
- 在放宽规则部分,选择一个Json命令注入记录,然后单击编辑。
- 在Json命令注入放宽规则滑块中,单击添加。
在Json命令注入放宽规则页面中,设置以下参数。
- 已启用
- 是名字正则表达式
- 注册表项名称
- URL
- 值类型
- 注意
- 资源id
- 单击创建。