跳转至

阿里云云盾发现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 执行时间。
  • 返回了 403Access denied 关键字。
  • php 日志,则提示的更明显php-fpm 拒绝了本次的执行,并要求你查看 security.limit_extensions 选项。

第3次测试,抽风模式。

调整 php配置文件 security.limit_extensions = .php .jpg 如愿以偿,终于执行了php木马程序。

小结

基于上面的3个小测试,如果不是作死,主动配置 php-fpm security.limit_extensions = .jpg,是无法执行伪这个装图片的 php木马程序的。

回到页面顶部