当前位置: 首页 > 技术干货 > 实战篇——PHP命令注入攻击

实战篇——PHP命令注入攻击

发表于:2021-02-22 11:29 作者: mtr 阅读数(1417人)

你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,点击获取免费靶场>>


今天要介绍的使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。如果使用了被污染数据,命令注入漏洞就产生了。

命令注入攻击是指黑客通过利用HTML代码输入机制缺陷(例如缺乏有效验证限制的表格域)来改变网页的动态生成的内容。从而可以使用系统命令操作,实现使用远程数据来构造要执行的命令的操作。

PHP中可以使用下列四个函数来执行外部的应用程序或函数:system、exec、passthru、shell_exec,四个函数的原型如下:

string system(string command, int &return_var)

command 要执行的命令; return_var 存放执行命令的执行后的状态值。

string exec (string command, array &output, int &return_var)

command 要执行的命令,output 获得执行命令输出的每一行字符串,return_var 存放执行命令后的状态值。

void passthru (string command, int &return_var)

command 要执行的命令,return_var 存放执行命令后的状态值。

string shell_exec (string command)

command 要执行的命令,如下例所示,表示通过提交http://www.sectop.com/ex1.php?dir=| cat /etc/passwd操作,执行命令变成了system("ls -al | cat /etc/passwd"),输出/etc/passwd 文件的具体内容。

//ex1.php

<?php

$dir = $_GET["dir"];

if (isset($dir))

{

echo "";

system("ls -al ".$dir);

echo "";

}

?>

实验内容和步骤

本实验分为两个实列任务:

实例一:你得知道如何在命令行下一箭双雕;

实例二:读懂了header,就ok了;

实例一、使远程服务器执行“whoami”的命令

在蚁景网安实验室(http://www.yijinglab.com/)中搜索《PHP命令注入》,在创建好的实验机中用浏览器打开实验网址(http://10.1.1.11:81),然后找到“命令注入”--“实例1”

关键代码:

1.png

根据前面预备知识的实例分析,构造输入参数让远程服务器执行“whoami”命令。

实例二、使远程服务器执行“ipconfig”的命令

在蚁景网安实验室中收索PHP命令注入,在创建好的实验机中用浏览器打开实验网址(http://10.1.1.11:81),然后找到“命令注入”--“实例3”

关键代码:

2.png

preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。preg_match() 匹配成功一次后就会停止匹配,如果要实现全部结果的匹配,则需使用 preg_match_all() 函数。header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔。

本次实验今天就介绍到这里了,实验内容虽然不多,但是要理解清楚还是要多花时间,表面上看只有2个实验,但是操作起来还是有很多步骤呢!

命令/代码注入作为一种危害性极大的漏洞,应该引起我们的重视。本实验也只是总结了一些常见的命令/代码注入问题,至于潜藏在代码深处的漏洞,还要靠自己多多挖掘。

如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。

靶场.png