1 |
|
一句话木马原理:通过脚本语言的eval函数执行系统操作。
- eval() 函数把字符串按照PHP代码来计算
- 该字符串必须是合法的PHP代码,且必须以分号结尾
寻找上传漏洞一般方法:
- 扫描工具获取上传地址
- 进入后台获取的上传地址(网站编辑器上传文件模块一般不存在漏洞)
- 会员注册、上传图像、网站插件、网站应用等功能
前端JS校验
1 |
|
- 直接修改js代码中的检验部分,如:
checkFile()
或直接修改action=
指向的地址 - 利用Bp绕过:
a.php
改名a.php.jpg
,Bp截获,改名回a.php
后端代码校验
校验header的content-type,通过Bp修改绕过
1 |
|
后缀名黑名单
- 后缀名变大小写
.Php
,后面加空格.php(空格)
,后面加点.php.
,后面加::$DATA.php::$DATA
-
如果是黑名单删除模式并且未循环删除,可以使用嵌套方式
.pphphp
- Apache的
httpd.conf
文件如果定义其他后缀名,直接改后缀名为php5
绕过
1 |
|
- 如果没有定义其他后缀名,如果
http.conf
如下配置开启,可上传.htaccess
。.htaccess
文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess
文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
1 |
|
上传.htaccess
内容为
1 |
|
此时再上传文件名为shell
,内容可被解析为PHP。
上传.htaccess
内容为
1 |
|
此时再上传jpg文件既可被解析为PHP。
后端自动拼接后缀名
1 |
|
%00截断,截断条件:PHP版本<5.3.4,magic_quotes_gpc
为Off
(当其为On时,所有单引号,双引号,反斜线,NULL字符自动加上反斜线进行转义,类似函数addslashes(),mysql_escape_string(),mysql_real_escape_string()
)
a.php
改名a.php.jpg
,Bp截获,hex改:a.php\0jpg
a.php
改名a.php%00.jpg
,Bp截获,Convert Selection->URL->URL-decode
后端图片检测
后端通过unpack(),getimagesize(),exif_imagetype(),imagecreatefromjpeg()
等函数检测图片内容,上传图马:
1 |
|
后端代码逻辑
文件包含
当php.ini
设置allow_url_include=On
时(从PHP5.2开始allow_url_include就默认为Off),include(),require(),file_get_contents()
等函数将包含文件以脚本解析执行。
- 直接包含
1 |
|
将一句话木马改名为hack.txt,访问include.php?i=hack.txt
即可将hack.txt按PHP解析。
1 |
|
1.php压缩成1.zip,重命名为1.jpg上传,得到上传保存路径,然后通过PHP伪协议phar读取:?i=phar://uploads/xxx.jpg/1
,后台会自动拼接.php
。
后端定期删除或重命名
- 条件竞争:用Bp不断上传,再不断访问。上传内容为
1 |
|
如果可以访问到,即会在当前目录写一个shell,下次就不用再条件竞争了。
- 使用
move_uploaded_file
重命名,由于该函数会递归删除文件名后面的/.
1 |
|
因此,POST中设置文件名:save_name=1.php/.
畸形解析
IIS 6.0
- 默认解析格式除了
.asp
还有:.asa
,.cer
,.cdx
- 目录名为
xx.asp或xx.asa
,其目录内任何扩展名文件均被当作ASP解析:/test.asp/1.jpg
- 文件名为
xx.asp;.jpg或xx.asp:.jpg
会被当作ASP解析执行,Bp抓包修改
IIS 7.0/7.5
图片URL后面加/.php,即能将文件按PHP解析。如名为1.jpg的木马,访问/1.jpg/.php
。
Apache
mime.types
配置文件定义了Apache能够解析哪些文件类型(白名单),由于apache从右到左找认识的扩展名,因此xx.php.rar
或者xx.php.111
这些默认没有在mime.types
文件定义的都会解析为PHP文件。
Nginx<8.03
- 同IIS 7.0/7.5
- xx.jpg%00.php
Windows后缀名解析漏洞
Windows会将文件的后缀中的空格以及点进行过滤,如果遇到是黑名单校验的并且目标系统是Windows,可以上传xx.php(空格)
或者xx.php.
。
网站平台信息的获取方式
- 审查元素
- 第三方平台查询(seo.chinaz.com)
- 扫描工具(wwwscan)
- 常用搭配:
PHP+MySQL+Apache
,ASP+Access
,MsSQL+IIS
上传tar
创建软连接读取敏感文件(sample:interesting_web-安恒月赛-2018-11)
1 |
|