游戏迷提供最新游戏下载和手游攻略!

黑客入门-命令执行漏洞详解黑客入门电子版

发布时间:2024-06-21浏览:6

本文只关注命令执行,与代码执行不同

1. 命令执行漏洞介绍

当应用程序需要调用一些外部程序来处理内容时,会用到一些执行系统命令的函数,比如PHP中的system、exec、shell_exec等。当用户可以控制命令执行函数中的参数时,就可以将恶意的系统命令注入到正常命令中,造成命令执行攻击。

2.命令执行漏洞:直接调用操作系统命令

给出例子并贴出代码

这里我们发现con_fuction中有exec,那么exec()函数是起什么作用的呢?

接下来我来简单介绍一下PHP中可以导致命令执行的函数。

系统函数----字符串系统(字符串命令,int [return_var]);

示例代码:$last_line = system('ls', $retval);

exec 函数----string exec(string 命令,string [数组],int [返回变量]);

示例代码:echo exec("whoami");

popen函数----int popen(字符串命令,字符串模式);

示例代码

$fp = popen( “/bin/ls”, “r” ) ;

这里的函数比较多,由于我不写PHP,所以上面的可能不是很专业。

以下是这个exec引起的问题

他使用了exec,也就是说他可以执行系统命令,所以我们就尝试去执行一下吧。

一般我们的POC是calc,所以这是最简单的命令执行漏洞。

那么下面我们就来为大家演示一下命令注入

首先,在学习命令注入之前,我们需要了解

1.Linux 管道符号

2. 一些简单的 Linux 命令

3. 绕过本地身份验证

接下来我来向你介绍一下Linux管道符号

互联网上有各种各样的内容

我个人认为“&”和“|”更有用。

让我们看看如何使用它

在Windows中执行如下

命令是whoami&ipconfig。如果我们换个命令会怎么样?

更改为 whoami|ipconfig

这时候我们发现使用“&”作为管道符的命令成功执行了前后两个命令,而“|”命令却只执行了后面的ipconfig,因此管道符的用途也浮出水面。

接下来我们在Linux下也执行一下

我们的“&”符号表示前后两个命令按顺序执行

“|”符号是将命令1的正确输出作为命令2的输出对象。

让我们从命令注入开始

这是一个靶场,介绍上说是“内部人员为了方便运维工作而留下的ping命令页面”,所以它执行ping命令,我们可以尝试通过管道符让目标执行系统命令。

如果他的命令是ping ip,那么我可以使用ping ip|any命令来执行系统命令。

让我们尝试一下

这里js弹窗说ip格式不正确,他有本地js检查

黑客入门基础知识_黑客入门电子版_黑客入门

让我们看看源代码

函数 f_check_IP()

{ var ip = document.getElementById('reg_ip').value;

var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;

如果(重新测试(ip))

如果(正则表达式.$1

返回 true;

警报(“IP\\u683C\\u5F0F\\u4E0D\\u6B63\\u786E”);

返回 false;

这段js代码是检查ip是什么

那么如何绕过 js 验证

我们可以使用 Firefox 插件 noscript。我这里没有使用 noscript,而是使用 js switch

安装插件之后我们直接点击红色的js

然后刷新页面

输入 127.0.0.1|whoami

系统命令已成功执行

我们获取 flag 的方式无非就是这么几个,先 ls

成功回显目标目录中的文件

我们正常阅读的文件是 cat xxxx

所以现在我们尝试 cat key_227.php

但没有回音

我们找到了 cat key_227.php

中间有一个空格,所以我得出结论,问题是由空格引起的

这里要介绍的是Linux下,空间{IFS}

在 bash 中,IFS 是内部字段分隔符。

也就是说空格的意思就是我们可以将命令修改为cat{IFS}key_227.php

但是并没有回显成功,一开始目标机器执行了cat{IFS}key_227.php,回显正常,但是可能出了什么问题,我们来想个办法。

这里还有另一个技巧:在 Linux 中我们执行 cat

和 cat xxx 一样

例如

这也是可能的

让我们尝试一下

成功返回 flag

这是一个命令注入的姿势。

3、总结:在实际的漏洞挖掘过程中,我们很少碰到这样的接口,大部分都是某些框架、中间件的漏洞。

例如strust2 weblogic jboss,我们需要在github或者exploit-db中找exp来测试

最后感谢大家的阅读,谢谢!!

热点资讯