pikachu靶场-RCE

RCE漏洞概述
可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

远程系统命令执行
命令执行漏洞(Command Execution)即黑客可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权限

更常见的命令执行漏洞是发生在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等

漏洞产生的原因:
1. 由于开发人员编写源码,没有针对代码中可执行的特殊函数(可控制变量)入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。

对用户的输入命令安全检测不足,直接参与到操作系统的交互当中
应用调用执行系统命令的函数
将用户输入作为系统命令的参数拼接到了命令行中


2. 命令注入攻击中WEB服务器没有过滤类似system ( ) ,eval ( ) ,exec( ) 等函数是该漏洞攻击成功的最主要原因。

应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击

在PHP中可以调用外部程序的常见函数:

eval()
assert()
preg_replace() + /e 模式
create_function()
array_map()
call_user_func()/call_user_func_array()
array_filter()
usort(),uasort()
file_put_contents()
fputs()
$_GET[‘a’]($_GET[‘b’]);//a=assert&b=phpinfo()


一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。

但是,如果设计者在完成该功能时, 没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。

1.exec "ping"

后端代码:

远程命令执行ping:

$result.=shell_exec('ping '.$ip);//直接将变量拼接进来,没做处理

ping命令后面拼接出命令即可,用cmd举例

ping命令执行后会跟着执行dir命令,进行一个拼接,一般的网站不做过滤的话,可以尝试各种管道符,如; & && | || 等等

2.exec "eval"

eval,经典的一句话木马函数 

后端代码:

远程代码执行evel:

if(@!eval($_POST['txt']))

可以看出没有做处理,和上面(远程命令执行ping)不同的是,这里是PHP代码,而上面(远程命令执行ping)执行的是命令行。

没有对传入参数进行过滤,直接执行内容,写入一个phpinfo();看看

看到代码被执行

猜你喜欢

转载自blog.csdn.net/qq_29977871/article/details/130356650