前置知识:
漏洞检测:
在了解漏洞概念前,应该先知道一下这个漏洞如何检测的,我们应该或多或少听过白盒测试(白盒),黑盒测试(黑盒)。
白盒测试:
白盒测试是对源代码和内部结构的测试,测试人员是可以知道内部的逻辑和结构的,差不多就是代码审计。
黑盒测试:
黑盒测试是对功能需求的测试,测试人员不知道系统内部如何实现的,只知道相应的功能和性能需求,通过模拟用户使用来进行测试。
了解Windows和Linux基本命令
Windows如
ping #测试连通性
tracert #追踪路由
telnet #远程连接
dir #列出目录
ipconfig #查看 ip
arp -a #查看路由表
calc #打开计算器
regedit #打开注册表
netstat -ano #查看服务器端口信息
Linux如
cd #切换目录
ls #显示当前目录下的文件
ifconfig #查看 IP 地址
cat /etc/passwd #查看 password 文件内容
id #查看当前用户的 id 号
cat /etc/group #查看用户组文件内容
pwd #显示当前目录
uname -a #查看当前系统版本
natstat -pantu #查看当前服务器的端口信息
netstat -nr #查看网关和路由
以及拼接符的使用
| 只执行|后面的语句
|| 如果前面语句是错的就执行后面的语句,否则只执行前面的语句
漏洞产生原理:
有地方可以让攻击者对服务器进行远程的注入操作系统命令或者代码,从而到达控制后台系统的目的。
漏洞产生条件(利用条件):
1.可控变量(别人的一句话:无论是注入还是RCE都有传参数。。
2.对用户的输入过滤不严格。
3.用户的输入内容直接拼接到命令当中。
命令执行:
常见命令执行危险函数
PHP:exec、shell、system、popen 等
ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.Process
StartInfo 等
Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec
等
以上除了PHP的,另外两种我还没有碰到过(抓头)。
讲解一下命令执行函数
system函数
该函数会将执行结果输出并将输出结果最后一行作为字符串返回,执行失败就返回false
<?php
highlight_file(__FILE__);
system('pwd');
?>
exec函数
该函数没有输出结果,但是会将执行结果最后一行返回
<?php
highlight(__FILE__);
exec('pwd',$a);//此处$a存放着命令返回值
var_dump($b);
?>
passthru函数
该函数只调用命令,将运行结果输出,但是没有返回值
<?php
highlight(__FILE__);
passthru('pwd');
?>
shell_exec函数
该函数不会输出结果,但返回执行结果
<?php
highlight_file(__FILE__);
var_dump(shell_exec('pwd'));
?>
标签:函数,查看,命令,漏洞,代码执行,测试,RCE,执行
From: https://www.cnblogs.com/l-xx123/p/18007221