文件上传
一句话木马
|
|
webshell
https://github.com/tennc/webshell
网站控制工具
中国菜刀 中国蚁剑 https://github.com/AntSwordProject/antSword
weevely https://github.com/epinna/weevely3
哥斯拉godzila https://github.com/BeichenDream/Godzilla
冰蝎 behinder https://github.com/rebeyond/Behinder
weevely(kali)
生成木马
|
|
连接
|
|
就可以执行命令了
upload-labs靶场练习
pass01
提示不让上传php,猜测是前端验证
禁用js或者
按下上传要检测,我们直接删掉onsubmit
上传直接蚁剑连接
pass02
提示对数据包的MIME检查
MIME
Multipurpose Internet Mail Extensions
多用途互联网邮件扩展类型
客户端使用:
1、GET请求不需要这个字段。
2、POST请求头,放在Content Type字段用来指定上传的文件类型,方便服务器解析。放在Accept,告诉服务端允许接收的响应类型。比如只能接收json或者其他。
服务端使用:
放在响应头里面,Content Type告诉客户端响应的数据类型,方便客户端解析。
官方解释:https://developermozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
所以用bp抓包,在我们上传的一句话木马的content-type中修改成image/jpeg,再放行
蚁剑连接
pass03
黑名单里面有php
等价拓展名
首先要修改apache的配置
加上一行将后面这些拓展识别成php,不知道为什么不行
换一种方式,把后缀名改为.htaccess,也不行
pass04
.htaccess
.htaccess 文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置 。通过 .htaccess 文件,可以实现:网页 301 重定向、自定义404 错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能
先上传图片(shell.php改后缀为jpg)然后上传.htaccess
|
|
或者
|
|
|
|
把图片匹配为php代码
pass05
查看提示存在readme.php
php.ini
是php的一个全局配置文件,对整个web服务起作用
而.user.ini
和.htaccess
一样是目录的配置文件,.user.ini
就是用户自定义的php.ini
|
|
上传要改php.ini
下面那个原来是300秒我们改为10秒
重启服务后
上传两个文件
蚁剑连接的文件要改为readme.php
也可以用 php. . 点空格点 绕过上传
pass06
大小写过滤不全,用PHP就能上传
pass07
没有过滤空格,抓包后在bp里面把文件后缀加空格放行
然后就连接上了
pass08
抓包改为.php.
pass09
后缀名未做去::$DATA
处理
|
|
连接时要把::$DATA去掉
pass10
因为会去掉末尾的点和头尾空格
.php. .(点空格点)
pass11
后缀重写绕过
.pphphp
pass12
需要php的版本号低于5.3.29
,且magic_quotes_gpc
为关闭状态(需要自己关闭)
Content-Disposition
作为对下载文件的一个标识字段
官方解释:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition
文件名截断
截断字符:chr(0) ,类似于C++的"\0"
在url编码里面所以要输入%00
下面那里改成符合条件的后缀名,上面上传路径填写我们的木马然后用%00截断
pass13
现在路径不是url编码,要用16进制,先写个+占位,+的16进制是2b
hex改为00
pass14
要上传图片马,并且利用文件包含漏洞来实现运行图片中的木马
|
|
上传完成后,在include.php后加上传的文件路径
|
|
pass15
这里getimagesize()检查是否为图片文件
|
|
pass16
|
|
跟14一样
pass17
题目用二次渲染把我们图片马里面的马给清除了
gif的解决办法
上传图片然后下载回显图片
用010editor对比,找到相同的地方(上传前和上传后,两张图片Hex仍然保持不变的位置)并插入木马
我们直接用现成的图片马,利用文件包含,连接成功
其他图片格式的办法参考upload-labs之pass 16详细分析 - 先知社区
png脚本
|
|
生成的木马是
|
|
jpg脚本
|
|
运行脚本命令
|
|
pass18
代码审计,传入文件与删除有时间差
思路:
条件竞争代码
|
|
用bp来重复上传
发到intruder模块,payload设置为空,用于无限访问
线程设置大点
开始爆破,同时要手动访问文件
python访问
|
|
pass19
原题有点问题
改myupload的源码
拼接/
利用apach解析漏洞
|
|
然后我们bp不断上传白名单内的后缀
例如shell.php.7z
另一种思路,将上一关重复生成代码的木马做成图片马
反复上传图片马
这里访问的python脚本为:
|
|
直到生成shell.php为止
pass20
利用函数漏洞
|
|
所以我们上传shell.php/.上传后会变成shell.php
pass21
修改content-type 修改POST参数为数组类型,就是save_name[]; 索引[0]为shell.php, 索引[2]为jpg|png|gif。 只要第二个索引不为1,就是不能为save_name[1]; $file[count($file) - 1]就等价于$file[2-1],值为空绕过
漏扫工具
https://github.com/almandin/fuxploider