81backdoor
8.1.0 php后门
一个简单的复现
利用docker搭建起来后只有一句话
抓个包看看有没有什么东西
丢到repeater后发包也没看到有什么
根据提示,可以在请求头部加User-Agentt: zerodiumvar_dump(2*3);
可以远程命令执行
漏洞成因
2021年PHP Git仓库遭到入侵,攻击者在PHP源码中植入了恶意代码,这种恶意代码是被攻击者伪装成开发者或维护者的身份来进行提交,实际效果是植入了一个远程RCE后门。它会通过检查HTTP头中的字符串,如果是以zerodium开头,则会触发后门,执行php代码
1 | { |
这里攻击者用了一个让人混淆的HTTP_USER_AGENTT
头,zend_try
和zend_end_try
用于异常处理,即使执行的代码有问题也不会造成php的崩溃
在strstr(Z_STRVAL_P(enc), "zerodium")
中,strstr()
函数用于查找第一个字符串中是否有包含第二个字符串,如果有,就返回后者在前者第一次出现的位置的指针,没有就返回NULL
;
Z_STRVAL_P(enc)
了解一下就行,它是PHP扩展开发中的一个宏,用于从zval结构体变量中提取字符串
:::info
zval结构体构成比较复杂,感兴趣的可以点击这里
:::
zend_eval_string()
相当于eval()
,第二个变量用于接受执行结果,NULL则表示不关心执行结果
[:heavy_check_mark:get一点]{.label .success}看似代码长,实际上仔细分析之后也就那样,函数执行什么功能一般就会以什么功能的单词命名,还算好理解的