背景
接到项目,要求对某公司资产进行渗透测试,尽量扩大成果,子公司同样在测试范围内,既然如此,先天眼查爬一波资产信息吧,这里推荐一个工具。
IEYES:https://github.com/SiJiDo/IEyes
在有天眼查账号的情况下,将登陆后的auth_token填入配置文件,即可根据需要收集目标公司的信息,收集内容包括备案域名、公众号、APP,以及其子公司,投资公司的信息,支持递归深度搜索子公司。
渗透过程
1、访问其中一个子公司资产,是一个登录窗口
2、随便输入个弱口令试一下,结果跳转到了另一个登录口,域名和公司也变了
3、查了一下该公司的信息,为上一个公司的供应商,且子域名是上一家公司名的缩写,怀疑是供应商提供的云服务。
试着登录一下,看响应包看到了rememberMe,试一试shiro还真成了,一点防护都没有,写个jsp一句话木马直接写上去了,我都怀疑是蜜罐了。
4、连上蚁剑看一眼,还真都是目标公司的文件
5、不过没有内网,数据库配置文件也做了加密
6、本来想就做到这样交上去吧,想起客户说尽量扩大成果,还是再搞一搞,既然数据库配置文件被加密了,肯定有个函数对文件中内容加密了,而且肯定会有解密函数,在连接数据库的时候将字符串解密,找到这个函数就好了,由于我java是个半吊子,就只能靠文件名去猜了,类似decrypt.class、3DES.class之类的,终于在我的瞎猫碰死耗子中发现了加密函数。
7、看肯定是看不懂的,单纯靠猜和百度来看,用的3des加密,在翻代码的时候,把看上去是解密的函数复制出来,在代码能跑的前提下拼出了这么一段代码
import java.security.Security;
import java.io.IOException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.crypto.NoSuchPaddingException;
import java.security.NoSuchAlgorithmException;
public class getkey {
public static byte[] hex()
{
//String key = "test";
String f = "8a86f8a60xxxxxxxxxxa157627311422";
byte bkeys[] = (new String(f)).getBytes();
byte enk[] = new byte[24];
for(int i = 0; i < 24; i++)
enk[i] = bkeys[i];
//System.out.println(enk);
return enk;
}
public static byte[] decryptMode(byte keybyte[], byte src[])
{
try
{
javax.crypto.SecretKey deskey = new SecretKeySpec(keybyte, "DESede");
Cipher c1 = Cipher.getInstance("DESede");
c1.init(2, deskey);
return c1.doFinal(src);
}
catch(NoSuchAlgorithmException e1)
{
e1.printStackTrace();
}
catch(NoSuchPaddingException e2)
{
e2.printStackTrace();
}
catch(Exception e3)
{
e3.printStackTrace();
}
return null;
}
public static String decrypt(String desContent)
{
byte enk[] = hex();
Security.addProvider(new com.sun.crypto.provider.SunJCE());
byte reqPassword[] = null;
try
{
reqPassword = (new BASE64Decoder()).decodeBuffer(desContent);
}
catch(IOException e)
{
e.printStackTrace();
}
byte srcBytes[] = decryptMode(enk, reqPassword);
return new String(srcBytes);
}
public static void main(String[] args){
System.out.println(decrypt("fEHldNxxxxxxxxxxxxxxxxxxxMflwXr"));
//user:R9uxxxxxxxxx
//pass:fEHldNxxxxxxxxxxxxxxxxxxxMflwXrJ
}
}
接下来就是赌狗时刻
内心激动无比,表情极其淡定,连上数据库,截图写报告,收工
后续还有一些后台账号密码,和后台的功能点比如摄像头之类的就不展示了
END
• 往期精选
下方点击关注发现更多精彩