- eval
- php4,5,7
- evaluate string as php code
- 一句话
<?php @eval($_POST['hacker']); ?>
- 通过curl执行”一句话”(bwapp)
- curl -d “hacker=echo get_current_user();” http:127.0.0.1/images/shell.php
- -d:(–data)HTTP post data
IIS5.X/6.0解析漏洞
- 1、当创建.asp的文件目录时,在此目录下的任意文件,服务器都解析为asp文件
- 2、服务器默认不解析分号”;”后的内容
- 利用形式
- 在低版本Nginx中存在 PHP-CGI 导致的解析漏洞
- php.ini中的cgi.fix_pathinfo是默认开启的
- 当URL中有不存在的文件时,php就会默认向前解析
- 利用形式
- apache在1.x和2.x版本中存在解析漏洞
- apache从右至左判断后缀,路过非可识别后缀
- 利用形式
- 上传 shell.php.test
- 访问 shell.php.test,服务器会解析shell.php.test文件,按照php文件格式解析
前端验证绕过
- 网站在前端用javascript来做校验
- 利用形式
- 通过burp suite抓包,然后修改放行
- 或 ,删除,禁止js代码
.htaccess绕过
- 分布式配置文件,使得配置文件可以随文件夹不同而不同
- 启用了.htaccess文件的网站,使用此文件类型来绕过限制较全的 黑名单 过滤
- 利用形式
- 上传一个.htaccess文件,文件内容设置为 AddType application/x-httpd-php .test
- 上传一句话,文件名设置为shell.test
- 在浏览器访问shell.test即可执行
大小写绕过
- 比较简单的绕过方式,针对黑名单
- 和windows大小写不敏感有关
- linux平台为了用户体验,配置了大小不敏感
windows文件流特性绕过
- NTFS实现了多文件流特性
- 默认使用未命名的文件流
- 默认不显示文件的命名文件流
- 命名的文件流在功能上和默认使用的未命名文件流一致,甚至可以用来启动程序
- 测试
- echo 111 > test.txt:111.txt
- 将111写入test.txt,指定文件流是111.txt
- echo test > test.txt
- echo 222 > test.txt::$data
- 利用形式
- 利用文件流特性构建一个文件类型符合我们要求,又能达到解析目的的文件
%00截断绕过
- 属于编码绕过
- 路径以拼接的形式从前端获取,我们就可以在路径上截断
- %00是URL的结尾符,如果不是通过URL传输,则写成其它形式
- 截断攻击生效的原因
- 利用形式
- 设置save_path=../upload/a.php%00
- 上传内容为”一句话”的jpg文件
文件头检测绕过
- 工具:UltraEdit
- 常见图片文件头
- png: 89 50 4E 47
- jpg: FF D8 FF DB
- gif: 47 49 46 38
- 将代码聚合到图片中
源代码审计
- 代码逻辑是否足够严谨
- 函数调用是否足够安全