Neos的渗透测试靶机练习——Wakanda


一、实验环境

虚拟机软件:VirtualBox
攻击机:Kali Linux(仅主机模式)
靶机:Wakanda(仅主机模式,共有3个flag)

二、开始渗透(根据流程学习思路)

1.获知本机IP、靶机IP

  1. 切换到root用户(输入sudo su及对应的密码)
  1. 查询本机IP(输入ifconfig)

由eth0中的inet,知本机IP为192.168.56.101。

  1. 扫描靶机IP(输入netdiscover -i eth0)

由以上,知靶机IP为192.168.56.102。输入arp-scan -l亦可

2.靶机端口、协议、前端信息(Nmap)

  1. 查询端口信息(输入Nmap -sS -p- 192.168.56.102)

可以发现,80端口(http服务),3333端口(ssh服务,虽然叫dec-notes)是开放的,有兴趣的同学可以自己去了解一下rpcbind。

  1. 从页面中搜集信息(http://192.168.56.102:80)

发现一个叫mamadou的,留个心眼,点击Learn more没反应,看看源码吧。

标黄处有个注释,a标签,href属性,考虑是个文件包含漏洞。

  1. PHP伪协议

参数lang试了几个,没有可用的,考虑应用php伪协议(是不是自己赶紧去看看这是啥)。
浏览器输入192.168.56.102/?lang=php://filter/convert.base64-encode/resource=index,出来一个长字符串,

把这串字符,用base64解码(自己想办法,我丢到kali自带的burp里去解码)

发现密码!对了,mamadou,你说这是谁的密码呢?

3.进入后台,查看敏感数据

  1. 输入用户名、密码,登录靶机

由上文知,用户名为mamadou,加上刚知晓的密码,通过ssh登录。

  1. 由Python切换到Bash

由上图,发现是python环境,故输入

import pty
pty.spawn("/bin/bash")
  1. 第一个flag

在当前目录中发现第一个flag。

  1. 切换用户权限

输入cat /etc/passwd,看看有没有其他有意思的用户

在最底下发现一个devops,嗯,搞一搞。输入cd /home/devops,ls -al,找到第二个flag。
发现flag2无权限,不可访问。
翻啊翻,找啊找,发现在tmp目录下有东西。

发现test文件的创建时间与其他文件不一样,date查看时间后发现就是刚才创建的,故这里应该是系统中有一个定时运行的程序,每次运行都会创建test文件。继续找啊找,发现srv目录下有关于这个文件创建的信息。

即这个.antivirus.py文件,当前有权限打开,故可写入代码使其运行并反弹shell。

标黄代码为原文件内容,保存后侦听本机的4412端口,等待.antivirus.py运行。

等个几分钟,来了

这时,可以打开flag2.txt了

  1. 通过pip提升到root权限

(1)输入sudo -l,发现devops能使用且不需要root密码的sudo指令只有pip,故可通过pip来提权

(2)输入git clone https://github.com/0x00-0x00/FakePip 下载exp后,编辑其中的setup.py文件

将LHOST改为kali地址,即192.168.56.101,并且可知反弹shell的端口为13372,到时候侦听即可。
PS:这里下载FakePip的时候需要把kali设为桥接模式,下载好后再换回来
(3)将此exp传到靶机中

这里的192.168.1.5ip是因为期间为了下载FakePip,网卡改成了桥接模式,无伤大雅,改回来就行。
(4)执行脚本,获取root权限
先在本机输入nc -lvvp 13372,侦听13372端口。
然后在靶机上输入sudo /usr/bin/pip install . --upgrade --force-reinstall,执行脚本

OK了提权成功。
(5)找到第三个flag
在根目录下找到第三个flag。

至此结束。


三、总结

有一些知识点需要去了解,文件包含漏洞,php伪协议,rpcbind服务,ssh服务,pip提权,Linux文件定时执行。总之这个靶机还是很经典的,并且很有意思,大家照猫画虎,学习一下思路,尽量能举一反三,这对渗透其他系统也能有很大帮助,希望我们能够有所提升。
  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
答案1:这是一个传统的对称性旅行推销员问题,其中有20个城市需要被访问,每个城市之间的距离是已知的。我们需要找到一条最短的路径,使旅行推销员能够访问每个城市一次并返回出发城市。我们可以使用一个20x20的距离矩阵来表示城市之间的距离。 线性规划模型如下: ``` minimize sum{i in 1..n, j in 1..n, i!=j} c[i,j] * x[i,j] subject to sum{j in 1..n, j!=i} x[i,j] = 1 for i in 1..n sum{i in 1..n, i!=j} x[i,j] = 1 for j in 1..n u[i] - u[j] + nx <= (n-1) * (1-x[i,j]) for i in 2..n, j in 2..n, i!=j 0 <= x[i,j] <= 1 for i in 1..n, j in 1..n, i!=j 2 <= u[i] <= n for i in 2..n u[1] = 1 ``` 其中,变量x[i,j]表示从城市i到城市j是否存在路径,c[i,j]表示从城市i到城市j的距离,u[i]表示第i个城市的顺序。目标函数是使得路径长度最短,约束条件分别是每个城市只能被访问一次,路径必须连通,以及顺序必须满足要求。 我们使用NEOS服务器上的Concorde来解决这个问题,得到最优解为26442.0。 然后,我们使用AMPL来解决这个问题,并比较四种启发式算法的表现。这四种算法分别是"two opt"、"nearest insertion"、"cheapest insertion"和"repetitive nn"。每个算法都运行10次,得到的结果如下: | Algorithm | Best | Worst | Average | Std Dev | | :-------: | :--: | :---: | :-----: | :-----: | | two opt | 28350 | 29869 | 29009.7 | 607.54 | | nearest insertion | 28265 | 29976 | 28858.5 | 604.81 | | cheapest insertion | 27692 | 29681 | 28466.3 | 622.18 | | repetitive nn | 28729 | 30163 | 29427.0 | 574.76 | 我们可以看到,最佳的结果是使用"cheapest insertion"算法得到的,其次是"repetitive nn"算法。"two opt"和"nearest insertion"算法的性能稍差。 最后,我们将问题限制为只有4个节点,并使用启发式反转算法来解决。我们得到的最优路径长度为10,最优路径为1-4-2-3-1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值