AWD不死马分析

前言

最近在练习AWD的时候遇到了一个很棘手的不死马,功能主要就是删站,于是本文对该不死马进行分析并寻找对策。

场景一 :先手不死马权限维持

对手不死马会在网站根目录下循环生成.xxxxxx.php名称的webshell,同时会循环删除除自身以外的其它所有网站目录及文件。

首先给自己服务器www-data权限在web根目录上个不死马

image-20230701182147014

但是这里有个问题,直接访问shell是404,除了game路由和index其他任何文件/目录访问都是404,第一反应可能是apache配置问题,但是apache配置在AWD环境中无法修改,感觉要考虑htaccess问题。htaccess代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Some servers require this option to be enabled
Options -MultiViews

<IfModule mod_rewrite.c>
RewriteEngine On

# Uncomment two lines below to redirect all non-www traffic to www
# Make sure your baseurl config is set to www. domain
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# Uncomment two lines below to redirect all non-secure traffic to https://
# Make sure you enabled HTTPS in Dashboard / System / System in Subrion CMS
# RewriteCond %{HTTPS} off
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)\.(.*)$
RewriteRule ^(.+[^/])$ http://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
RewriteRule ^(game)($|/) - [L]
# Return default not-found as it's faster
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.(jpg|jpeg|png|gif|bmp|ico|swf|js|css|woff|ttf)$ - [NC,R=404,L]

# Google sitemap controller
RewriteRule ^(tmp/)?sitemap.xml$ tmp/sitemap.xml [L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)(\.php([0-9]*)|\.json|\.xml|\.tpl|\.phtml|\.ini|\.inc|/)$ index.php?_p=$1 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_p=$1 [QSA,L]
</IfModule>

<IfModule mod_deflate.c>
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>

<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE \
text/html text/plain text/xml text/css text/javascript text/xml \
application/xml application/xhtml+xml application/rss+xml \
application/javascript application/x-javascript application/json \
font/opentype application/x-font-ttf font/eot \
image/x-icon image/vnd.microsoft.icon image/svg+xml image/svg+xml
</IfModule>

<IfModule mod_mime.c>
AddEncoding gzip svgz
</IfModule>
</IfModule>

通过向gpt查询可以知道自己上传的任何文件都会被当作传入index.php中,所以直接先把这个删了

image-20230701185159366

然后再次访问自己上传的不死马,成功

image-20230701185411193

下面模拟对手运行上面的shell命令

image-20230701190316490

现在已经是被删站的状态了,所有文件都无法落地。

现在由于先手种植了webshell,所以还有主机www-data权限

恢复主机

在蚁剑中,还是可以使用shell的,首先考虑把www-data用户的apache进程kill掉,这里需要注意,必须是www-data用户才可以,也就是必须通过先手种的内存马执行命令,通过下面命令可以kill www-data用户的所有进程,同时清除内存马

1
2
kill -9 -1
kill `ps -ef | grep apache2 | grep -v grep | awk '{print $2}'`

最后删除对手的php文件,恢复对主机的控制,并将网站备份文件还原

image-20230701192308062

场景二:彻底失去主机权限

该场景对应于没有先手落地不死马,即被攻陷后直接被删站,无法落地文件。

我的评价是寄,开局好好修吧。

延申

RSA不死马 参考https://xz.aliyun.com/t/4640#toc-3 ,暂未复现