命令注入
RCE
测试中极少
原理:某些脚本语言中执行系统命令的函数的参数可随意控制
三大类
-
代码过滤不严
-
系统漏洞 bash破壳漏洞(cve-2014-6271)
-
第三方组件 (wordpress中用来处理图片的imagemagick组件)(java命令注入struts2/elasticsearchgroovy)(thinkphp命令注入)
利用手法:红队拿到RCE可以反弹shell,测试中执行whoami即可提交
文件包含
原理:开发者将被包含文件设置为变量,攻击者可以控制执行代码文件路径
本地文件包含 :爆破敏感文件
session文件包含
通过phpinfo中session.save_path拿到session 存储位置
在session可被控制的情况下传入恶意代码,包含可执行
远程文件包含: 钓鱼,包含shell
php配置文件
-
allow_url_fopen = on (是否允许打开远程文件)
-
allow_url_include = on (是否允许include/require远程文件)
PHP伪协议
-
php://input entype="multipart/form-data"时无效
- post传值
');?>
- post传值
-
php://filter/read=convert.base64-encode/resource=/etc/passwd
-
phar://shell.png/shell.php 利用文件上传将恶意代码压缩zip修改后缀为可上传文件,然后利用phar协议解压
-
zip://shell.png#shell.png 和phar一样
文件上传
原理:开发者在上传模块没有做好限制,允许攻击者上传脚本文件
文件上传整体就是绕过
-
改Content-Type
-
图片马利用其它漏洞
-
图像渲染
- 对比渲染前和渲染后16进制哪里不变换哪里
-
条件竞争:先将上传文件存入服务器再判定
- 上传一个生成木马文件,不断请求执行
解析漏洞
-
IIS5.x/6.0
- 目录解析:文件夹是.asp则其中任何文件被IIS做asp解析
- /xx.asp/xx.jpg
- 文件解析:分号后面不解析
- xx.asp;.jpg
- 目录解析:文件夹是.asp则其中任何文件被IIS做asp解析
-
IIS7.0/IIS7.5/Nginx<8.03畸形解析漏洞,默认Fast-CGI开启状态
- 上传xx.jpg
');?> - 访问xx.jpg/.php后,在此目录生成shell.php
- 上传xx.jpg
-
Nginx<8.37零零截断
- xxx.jpg%00.php
-
Apache解析漏洞:从右往左开始判断,可以上传但Apache不可解析
- xxx.php.safj.sdfal
-
Apache中.htaccess可被上传
- 写入
SetHandler application/x-httpd-php - 上传xxx.jpg木马
- 写入
修复:
-
和业务确认用白用黑
-
针对单一文件类型上传严格限制文件类型,同时限制上传目录执行权限
-
重命名上传文件,隐藏上传路径,或者上传到文件服务器
来源地址:https://blog.csdn.net/weixin_53396158/article/details/127468731