阿里云云盾发现WebShell处理过程
2016-09-29 by dongnan
问题描述
触发报警
检查文件
file 172*
17285897515.jpg: PHP script text
17290674875.jpg: ASCII text, with very long lines, with no line terminators
紧急处理
- 移除该
web
目录,外部无法访问。 - 使用脚本遍历日志,没有找到相关访问记录。
- 检查业务系统,没有发现异常登陆信息。
- 遍历上传目录所有图片,发现其它异常文件移除。
shell命令
find ./ -type f > files.txt
while read line ;do file $line >> upload.txt ;done < files.txt
awk '!/csv|PNG image data,|JPEG image data,|GIF image data,|conclusion.txt/ && /text/ {print $1}' upload.txt
后续处理
这是一个比较老的 php
解析漏洞 ,经和开发同学确认,是做安全渗透测试时上传的测试文件,测试结束后没有删除它。接下来验证下这个 php
木马程序是否能够执行。
开始之前
阿里云.云盾发现了一个伪装图片的后门文件,虽然是 php
木马程序,但是被 php
拒绝执行。
环境描述
- php-5.6.x
- 使用
docker
创建一个测试用的容器在其内部进行测试操作。
测试
第1次测试,直接访问这个木马程序伪装的图片。
浏览器访问,返回 200
状态码。
curl -IL https://ywwd.net/upload/20160411/17285897515.jpg
HTTP/1.1 200 OK
nginx 日志
10.0.100.9 - - [22/Sep/2016:15:27:25 +0800] "GET /upload/20160411/17285897515.jpg HTTP/1.1" 200 0 "-"
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" 123.124.X.X -
注意
nginx
日志中 最后的字段-
这个对应的是$upstream_response_time
变量, 表示上游php-fpm
执行的时间。- 如果是
-
则表示非php
文件,也就是代表这请求没有到达php
,状态为 200表示 Nginx 成功执行, 浏览器割裂的图片无法显示,这是正常的因为它是伪装的php
木马程序,而非图片。
第2次测试,利用文件类型错误解析漏洞
浏览器访问,返回 403
状态码
curl https://ywwd.net/upload/20160411/17285897515.jpg/1.php
Access denied.
nginx 日志
10.0.100.9 - - [22/Sep/2016:15:21:21 +0800] "GET /upload/20160411/17285897515.jpg/1.php HTTP/1.1" 403 46 "-"
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" 123.124.x.x 0.007
php 日志
[22-Sep-2016 15:21:21] WARNING: [pool www] child 2545 said into stderr:
"NOTICE: Access to the script '/path/upload/20160411/17285897515.jpg'
has been denied (see security.limit_extensions)"
注意
- 在原有
url
的基础上,添加了/1.php
,而 nginx日志最后的字段不再是-
,而是0.007
表示上游的php-fpm
执行时间。 - 返回了
403
与Access denied
关键字。 - 而
php
日志,则提示的更明显php-fpm
拒绝了本次的执行,并要求你查看security.limit_extensions
选项。
第3次测试,抽风模式。
调整 php
配置文件 security.limit_extensions = .php .jpg
如愿以偿,终于执行了php木马程序。
小结
基于上面的3个小测试,如果不是作死,主动配置 php-fpm security.limit_extensions = .jpg
,是无法执行伪这个装图片的 php
木马程序的。