前言
最近打算接触一下内网相关的知识 ,所以借着空余的时间简单学习了一下提权相关,肯定说的不全,后面陆陆续续添加吧!
Linux
系统常见命令
uname -a 显示服务器即操作系统相关信息
netstat -anltp|more 查看是否有可疑网络连接
ps -aux 查看是否有可疑进程
top 显示系统实时资源占用情况,如有挖矿木马的话cpu会有非常高的一个占比
ls -l /proc/pid号/exe 查看直接执行的二进制文件的符号链接
crontab -l 查看定时任务
crontab -r 删除定时任务,注意执行该命令后所有用户下的定时任务都会被删除
lastb 记录错误登陆
lastlog 用户登陆情况
kill pid号 关闭 pid 号对应进程
lsattr 显示文件属性
lsof -i:80 查看占用80端口的服务
chattr +i xxx 修改文件属性,通常用 +i 可使文件无法被删除,可用 chattr -i 来去掉该属性
sed -i 's/xxx/yyy/g' demo.txt 将demo.txt 中的 xxx 替换为 yyy
chmod 777 文件 对文件授予权限 r:4 w:2 x:1 对应进行赋予
nohup python2 Gscan.py > res.txt 2>&1 & 这里举个例子,& 代表后台执行,nohup代表不间断执行(ps:当前用户非正常推出或结束的时候nohup起的进程也会结束,正常退出即指 exit)
ln -s /var/www/test test 软连接可以理解为 windows 的快捷方式
useradd -m demo 添加 demo 的用户,利用 passwd 设置密码
userdel -r demo 删除demo用户
目录
这里简单说一下比较常见的目录
/bin: 里面存的都是比较基本的系统二进制命令类似 ls rm 等
/etc:其中基本都是文本文件用来设置我们的系统的,例如常见的 /etc/passwd /etc/shadow ,在 /etc/shadow 中用户的账号密码
/proc:并不存在硬盘上而是在内存中,其中记录了系统内核运行的一些信息
/usr/bin:一些应用程序的可执行部分
/usr/local/bin: 本地增加的命令,例如:python pip 等
/var/log:各种程序的日志,之前说的 apache nginx 日志就在这里面
/tmp:存放临时文件
.ssh:id_rsa.pub 公钥,id_rsa 私钥,authorized_keys授权文件,将公钥添加到 authorized_keys 中就可以不利用密码进行连接了, rsa_id.pub 和 id_rsa.pub 一般为 644 ,但是 id_rsa 一定要为 600
前期工作
参考链接:https://xz.aliyun.com/t/7924#toc-1
在提权之前最好先进行充分的信息搜集
- 查看内核版本,发行版本等
根据内核版本判断是否有受影响的内核提权漏洞例如脏牛
uname -a 打印所有可用的系统信息
uname -r 内核版本
uname -n 系统主机名。
uname -m 查看系统内核架构(64位/32位)
hostname 系统主机名
cat /etc/*-release
cat /proc/version 内核信息
cat /etc/*-release 分发信息
cat /etc/issue 分发信息
cat /proc/cpuinfo CPU信息
cat /etc/lsb-release # Debian
cat /etc/redhat-release # Redhat
....
- 进程服务等
ps aux
ps -ef
top
cat /etc/services
查找 root 运行的进程
ps aux | grep root
ps -ef | grep root
....
- 日志历史命令环境信息等
日志通常在 /var/log 下 按需进行查看即可
历史命令,从历史命令中有可能会获取一些密码,例如mysql的然后有可能利用mysql进行udf提权
history
cat ~/.bash_history
环境变量
cat /etc/profile 显示默认系统变量
cat /etc/shells 显示可用的shellrc
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
....
- 用户
whoami
id 显示用户群组
sudo -l 当前用户可以以root身份执行操作
cat /etc/passwd 列出系统上的所有用户
cat /var/mail/root
cat /var/spool/mail/root
cat /etc/group 列出系统上的所有组
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' 列出所有的超级用户账户
whoami 查看当前用户
w 谁目前已登录,他们正在做什么
last 最后登录用户的列表
lastlog 所有用户上次登录的信息
lastlog –u %username% 有关指定用户上次登录的信息
lastlog |grep -v "Never" 以前登录用户的完
查看有无明文存放的用户密码
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find , -name "*.php" -print0 | xargs -0 grep -i -n "var $password"
....
一些提权辅助的脚本
https://github.com/rebootuser/LinEnum
https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite
....
提权
suid 提权
p 牛的文章 https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html
suid 其实就是该程序所有者给可执行文件添加的一个属性,那么在该程序运行期间就会是程序所有者的权限,这里 root 用户给 ping 添加了 s 位,那么当我们普通用户运行 ping 的时候 对应的 uid 也为 0
常见的可用来提权的Linux 可执行文件有:
Nmap, Vim, find, bash, more, less, nano, cp
查找可以 suid 提权的文件
find / -perm -u=s -type f 2>/dev/null
由于我这里没有脏牛所以我手动设置一下
chmod u+s /usr/bin/find
find ps -exec "whoami" \;
脏牛提权
漏洞影响版本:Linux kernel >= 2.6.22
exp:https://github.com/FireFart/dirtycow
然后 su firefart就行了
Windows
系统常见命令
参考链接:https://www.cnblogs.com/kekec/p/3662125.html
ipconfig /all 查询网络配置
dir 列出当前目录下的文件以及文件夹
whoami 显示当前用户
cd /d d: 进入d盘
md test 创建名为test的文件夹
copy nul 1.txt 创建空文件
type 1.txt 查看文件内容
del 1.txt 删除文件
del /f test 删除 test 文件夹下的所有文件
copy 1.txt d:\doc 将1.txt复制到 d:\doc 下
net user 查看所有用户
net user test 查看test用户信息
net user test password /add 添加用户
net user test /delete 删除 test 用户
net user test newPassword 重置 test 用户密码
tasklist 显示当前的进程信息
taskkill /im notedpad.exe 结束名为 notepad 的进程
taskkill /pid 1234 /t 结束pid为1234的进程以及其子进程
taskkill /f /im notepad.exe /t 强制结束名为 notepad 的进程及其子进程
wmic process where Caption="notepad.exe" get commandline,executablepath,processid /value 获取进程名为 notepad.exe 的命令行,exe 全路径,pid 号
netstat -ano 查看开启的端口连接情况
findstr /i "hello" 1.txt 忽略大小写在 1.txt 中寻找 hello 字符串
sc delete 服务名 删除服务
systeminfo 查看操作系统等版本信息
netstat -ano 查看端口列表
set 环境变量
提权
前戏
例如我们现在通过文件上传将我们的马子传到了 IIS 上面 ,但是我们的权限只有 iis
低权限的话局限太多了 ,所以我们得想办法进行权限提升
直接哥斯拉上线 cs
接下来需要寻找能够上传文件的目录 ,这样才可以把我们的一些提权脚本给传上去,这里我们找到了 temp 目录下
内核溢出漏洞提权
systeminfo 根据缺失补丁进行判断
提权辅助页面:https://i.hacking8.com/tiquan/
将补丁号输入,查询可利用的 windows 提权
利用 windows-Exploit Suggester 进行检测
https://github.com/AonCyberLabs/Windows-Exploit-Suggester
MS16-032
补丁:KB3139914
exp:https://raw.githubusercontent.com/FuzzySecurity/PowerShell-Suite/master/Invoke-MS16-032.ps1
注意这里是 .空格.\xxx.ps1
在弹出来的 cmd 中执行 whoami 发现成功提权
服务权限配置错误
当碰到无法通过内核溢出漏洞来提权的时候可以尝试利用系统中的错误配置来进行提权,例如管理员配置错误,服务器凭证配置错误等
PowerUp
地址:https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1
powershell.exe -exec bypass -Command "& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}"
由于我这个虚拟机比较干净所以并没有检查出来问题2333
注册表键 AlwaysInstallElevated
AlwaysInstallElevated是一个策略设置项,Windows 允许低权限用户以 system 权限运行安装文件,如果开启了这个策略的话那么任何权限的用户都能以 system权限来安装恶意 MSI
当设置了该项之后,注册表的这里会置1
可信服务路径漏洞
简介:如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的。
原理:对于C:\Program Files\Some Folder\Service.exe文件路径中的每一个空格,windows都会尝试寻找并执行名字与空格前的名字向匹配的程序。操作系统会对文件路径中空格的所有可能进行尝试,直到找到一个匹配的程序。以上面的例子为例,windows会依次尝试确定和执行下面的程序:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
所以如果我们能够上传一个适当命名的恶意可执行程序在受影响的目录,比如这里我把木马名字改了Program.exe,放在c盘小,一旦此服务重启,因为优先级的缘故,服务会优先选择我们木马Program.exe,而不是C:\Program Files\Some Folder\Service.exe,那么我们的恶意程序就会以system权限运行(大多数情况下)
可以利用如下命令来进行检测
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" | findstr /i /v "C:\Windows\\" |findstr /i /v """
令牌窃取
令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动
SweetPotato
编译好的版本:https://github.com/lengjibo/RedTeamTools/tree/master/windows/SweetPotato
BypassUAC
bypassUAC已经是老生长谈的话题了,用户帐户控制(UAC),它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改
msf 的payload 中有对应的 bypass 模块
由于对内网渗透不熟悉,所以这部分写的较为含糊,后面会陆陆续续扩充进来。。