RCE漏洞可能出现在哪些地方?
1.URL上
在url参数上,不仅仅可能存在ssrf漏洞,也有很大概率存在命令执行,很大可能调用系统命令如curl。
payload例子:
?id=2;}phpinfo();/*
ttp:///?cmd=phpinfo()
比如访问到如下URL,在jsp后面尝试加参数,比如path(什么参数需要试)
发现存在任意文件读取漏洞,URL:
最初想通过添加双引号闭合if条件判断参数注入命令,没有成功。
payload:/etc/passwd"];ls;thenecho1;fi;if[-e"123.txt;
经过多次测试,最终可用反引号``或者$()进行命令执行,如`ifconfig`:
payload:"`ifconfig|xargs`"
命令结果的回显是因为判断不存在FILA_PATH文件名的文件后,会把变量值返回
echo"thefile($FILE_PATH)dosenotexist!"
拓展知识:Linuxbash中可以使用反引号``、$()等方式将bash命令的执行结果保存到变量中,如a=$(ifconfig):
2.所有变量:所有变量/提交的数据都要尝试
测试payload:
不管前后命令是否执行成功都会执行前后命令
具有短路效果。前面的命令执行成功才能执行后面的命令
|管道符,上一条命令的输出,作为下一条命令参数(输入)。在拼接时,无论左边是false还是true,右边都会执行
||具有短路效果。前面的命令执行不成功才能执行后面的命令
payload例子
在linux系统里执行完前面再去执行后面
;ipconfig在linux中两个**||**=or
|ipconfigkey的形式来指定对象,也可以修改属性值和方法。有了这些基础我们就可以来构造ognl表达式来执行我们的命令
struts2的ognl表达式注入漏洞,原理就是对用户的参数没有进行过滤,导致恶意参数直接传入到ognl的方法中命令执行。paylaod:${dm=@@DEFAULT_MEMBER_ACCESS).(request[''].context).(ct['']).((@@class)).(().clear()).(dm)).(()))}
比如AtlassianConfluence远程代码执行漏洞。payload:${(a))}
SpEL全称是SpringExpressionLanguage是一种强大的表达式语言。在Spring产品组合中,它是表达式计算的基础。它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。
SpEL使用#{…}作为定界符,所有在大括号中的字符都将被认为是SpEL表达式,我们可以在其中使用运算符,变量以及引用bean,属性和方法。spel表达式注入漏洞,将输入的参数直接当作表达式解析的参数,在解析过程中将造成命令执行。
(%22/Applications//Contents/MacOS/Calculator%22).start()
${((newbyte[]{47,65,112,112,108,105,99,97,116,105,111,110,115,47,67,97,108,99,117,108,97,116,111,114,46,97,112,112,47,67,111,110,116,101,110,116,115,47,77,97,99,79,83,47,67,97,108,99,117,108,97,116,111,114})).start()}
比如SpringCloudGateway远程代码执行漏洞
免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系