赞
踩
1.服务器开放端口。
2.服务器根目录下Flag值是多少
3.Webshell连接密码。
一般拿到流量不用乱翻,观察的地方就几个点,一个是导出HTTP的地方,还有就是WireShark的统计模块。
这是统计图中的内容,可以看到有大量的对端口请求的尝试。
这是导出HTTP处的内容,可以看到有大量的对目录的请求。
在导出的结尾还可以看到最后的通信都是和shell.jsp进行的通信,所以大致的恶意流量范围也确定了。
而流量的大致内容就是对端口进行爆破,对目录进行扫描,最后发现漏洞并进行交互。
第一问的内容是找出开放的端口,两种方式
1.了解端口扫描的可以直接根据不同类型下扫描SYN和ACK的值来判定端口是否开放。
2.根据流量图里可以看到80端口是扫描成功了,同样的,其他端口所用的方式应该是相同的
所以关注80端口的扫描结果并作为过滤条件就可以看到哪些端口开放。
两个方法理解不同,但是实际上运用是一样的。
我们主要关注返回包,刚刚80端口扫描的返回包里面,Flags值中有ACK=1 和SYN=1的情况,这里的Flags就是返回相关协议相关的标码,不了解的可以去学习一下三次握手。
选中FLags的值作为过滤条件,得到开放的端口是,80 888 8888
上一问已经知道了Shell.jsp是大概的恶意流量范围,重点观察和Shell.jsp以及附近的交互即可。
在20046的HTTP流里可以看到有一步cat shell.jsp的动作。
这里可以看到Shell.jsp的加密密钥是xc这个值 ==> 748007e861908c03
结合后续的代码可以使用的加密方式为AES加密。
也就是说输入的内容和执行命令返回的内容是经过AES加密返回的。
从这里可以看到发送内容和返回内容是无法直接解析的,并且如果直接复制内容又可能会导致无法识别。
所以将下方的ASCII改成原始数据或者Hex转储能防止遗漏字符。
这里可以看到输入的内容和返回的内容中,要排除掉HTTP的报文头和返回中的报文头。
涉及到两个知识点
一个是原文中的换行是0d0a0d0a
一个是HTTP/1.1的Hex是48 54 54 50这一串,所以只要找好这两个的分界就能知道输入的包和返回的包
上面就是找到的Flag解密方式,在TCP流的20053
第一步,由于是原始数据,所以要先Hex解密一下,或者直接在Input改成Hex输入也行
第二步,AES解密
javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("AES");
这里只使用了AES加密没有指定解密方式,Java中AES加密的默认是ECB所以这里解密选择ECB即可。
第三步 Gunzip解密
可能是Nginx的默认,在前文中的Accept Encoding中可以看到gunzip的方式。
连接密码显然就是刚刚的解密密钥,748007e861908c03
这里只能使用md5爆破
[MD5免费在线解密破解_MD5在线加密-SOMD5](https://www.somd5.com/)
给出一个示例网站
具体的细节方面可能会有误差,如果出现较大误差劳烦师傅加群指正。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。