自动化命令注入工具-commix分析

操作符

重定向<,>,>>
管道|
链式命令;
逻辑运算&&,||
子命令’,$()
新一行\n,%0a

技术分类

  • 基于结果的命令注入:应用程序直接输出注入命令的结果
    • 经典基于结果的:利用常见的操作符进行连接
    • 动态代码赋值:应用程序使用eval函数(java,python,php等)
  • 盲注入:应用程序不输出注入命令的结果
    • 时间盲注:通过评估应用程序响应返回的时间,判断命令是否成功执行。逐字母判断输出,sleep不同的时间
    • 文件半盲注:将执行结果写入web目录文本文件,再请求读取。(需要有写入权限)
    • 临时文件半盲注:写入tmp目录,结合时间盲注来读取内容

commix架构

  1. 攻击向量生成模块
    生成攻击payload,由命令注入分隔符列表与命令注入类型生成
  2. 漏洞检测模块
    对HTTP参数执行命令注入
  3. 漏洞利用模块
    与成功检测到注入的payload相同,由用户指定执行的命令

解决误报

误报情况1

存在一个问题,你使用随机字符串作为payload,但是会直接返回回来。直接判断会导致误报。

随机字符串即使不被执行,也有可能被应用程序直接返回。所以采用启发式方法,执行响应预先已知的命令,例如:echo NTAVG$((28+50))$(echo NTAVG)NTAVG,回显中应当有78

误报情况2

基于响应延迟不准确

盲注入由于响应延迟误报多,计算目标主机平均响应时间,来作为默认延迟。

一些特性

  1. 支持身份验证
  2. 支持修改http header字段
  3. 支持代理
  4. 支持固定前缀和后缀
  5. 可扩展
  6. 支持icmp外带
  7. 支持读取写入文件等

源码

入口

src/core/main.py
测试连通性,初始化配置和参数
检查请求header是否需要注入
初始化注入参数
初始化注入技术
初始化文件的绝对路径
初始化是否爬取网站

启动注入

src/core/injections/controller/controller.py
controller.do_check(url, http_request_method, filename)
url:注入url
http请求方法
日志文件名
perform_checks
injection_proccess:对指定参数执行注入过程
注入技术
dynamic_code_evaluation_technique:基于结果的动态代码执行
classic_command_injection_technique
timebased_command_injection_technique

真正执行命令注入:
src/core/injections/results_based/techniques/eval_based/eb_handler.py
eb_handler.exploitation:需要传入注入类型和技术

cb_handler.exploitation(url, timesec, filename, http_request_method)
src.core.injections.results_based.techniques.classic

cb_injector.injection_test:执行注入
获得页面结果
用正则去匹配页面内容,寻找echo出来的东西

具体例子

payload生成:separator+echo+RANDOM STRING+randv1+randv2
加前缀后缀
加tamper

时间盲注:127.0.0.1; str=$(echo EVDZQP); str1=${#str}; if [ "6" != ${str1} ]; then sleep 0; else sleep 1; fi

文件半盲注,写入一个随机串到随机文件,检查文件存在,需要提供web目录127.0.0.1;$(whoami)> UVlLSE5S.txt

临时文件盲注payload:127.0.0.1; str=$(whoami >’/tmp/ UVlLSE5S.txt ’); str=$(cat ’/tmp/ UVlLSE5S.txt ’); str1=${#str}; if [ "1" -ne ${str1} ]; then sleep 0; else sleep 1; fi

修复建议

  1. 输入验证:过滤,去除危险字符。黑白名单。腾讯代码安全指南\n&;|’"$()`-"做转义
  2. 转义输入数据:危险字符render为简单文本,而不是shell可以解释的特殊字符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏打呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值