前言

各位师傅们好,在正式写文章前啰嗦几句,很早以前就想搭一个内网渗透的靶场来练习了,不过因为一些原因一直在往后推迟(主要是因为太懒)。这段时间发生了一些事情让我坚定了搞搞内网渗透的信念,目前来说事请还是挺不好的,跟一位最近朋友说过以后他跟我讲以后更大的坎还多着呢,他也跟我说了下自己的心酸往事,听过以后自己也有了些许感触,而这件事请对于我来说到底是好是坏待以后时间证明(至少目前是感觉挺失落的)。还有就是有一个姐姐真好,也正是她一直以来的安慰才能让我调整这么快,不管是这次还是从前或以后兜希望老姐一直能陪着我。
靶场呢是一个朋友之前推荐的,然后就来练习了,这次是最简单的,当然后面也会陆续练习。由于没有内网渗透的经验,练习过程中也时常碰壁,过程中我也参考了一些其他师傅的文章,结合了一下还是想自己写一篇文章记录一下。文中也有个人的一些疑惑,还请各位师傅们能够答疑,感激不尽。

正文

信息收集&漏洞利用

靶机下载之后虚拟机设置为NAT模式,由于没有账号密码无法进入系统,其他什么信息都不知道,那么就先用nmap扫一下靶机IP。

nmap

图中可以看到,第一个靶机是物理机IP,还有一些IP都是其他虚拟机的这里就没有在截图里显示出来,可以看到扫描出了目标靶机IP,而且还开放了80端口,下面直接访问一下靶机服务。

drupal

可以看到是一个Drupal的框架,网上找了一下有许多drupal的历史漏洞,这里直接用msfconsole搜索了一下,没想到payload还挺多

search_drupal

刚开始我用的19年那个payload,但是最后没有成功,又试了18年那个直接就getshell了,后来看其他师傅的文章之所以19年的不可以用是因为版本问题。

meterpreter

msf使用方法这里就不再细说了,百度文章一大堆,可以看到直接进入meterpreter。刚开始感觉meterpreter连的shell不舒服,我就自己写进去了一个一句话木马然后用蚁剑连了,也是白折腾不少。后来看了其他师傅博客可以用python获得标准shell,代码如下:

1
python -c "import pty;pty.spawn('/bin/bash')"

但是这个语句我只能看懂大致意思,具体模块功能,为什么这么用还是不了解,所以也还请各位师傅帮忙解惑,后续我知道的话也会再这里解释。

shell

果然还是标准shell舒服啊,下面就开始信息搜集,这个一定要仔细,刚开始我就是没有自己找导致忽略了一些重要信息。

flag1

网站根目录下有一个flag1.txt文件,但是查看以后发现并不是flag(emmmm想想就肯定不是)。既然自己的文章我就按照当时我自己的步骤来写,后来看其他师傅的文章,师傅们都是从flag1按顺序找到最后,好家伙我是看过flag1以后先找到了flag4

flag4

因为当时没自己看网站根目录的文件就直接到系统根目录下面找了,然后就找到了flag4(手动滑稽)。后来学长给我提示了一下,发现网站根目录sites目录的default目录下面有配置文件,打开以后发现了flag2还有mysql数据库的用户名和密码

flag2

长文件还是用more查看比较好,不然直接cat会容易忽略重要信息emmmm。直接登录数据库,这里需要说一下的是刚开始没有用标准shell的时候登录mysql一直报错,百度也找到了解决办法:修改mysql配置文件。但是mysql配置文件没有权限无法修改,后来使用标准shell之后直接就进去了(玄学)。

user

怎么找用户表的步骤我就不再罗嗦了,后面看大佬们的博客用户表里都是两条数据,我的不知道怎么多了一条我自己邮箱的数据emmmm。可以看到密码是经过hash加密的,后来在网站根目录下发现了一个scripts目录,里面有hash密码加密脚本

password_hash

但是我运行的时候报错了,好像是因为php环境问题,看了大佬的文章后发现还有一个方法。kali里面有一个searchsploit工具,这个工具是查找Exploit-DB的漏洞库,具体使用方法还请师傅们自行百度,这里可以看到找到了drupal的sql注入利用模块,而且还是增加管理员的。先让命令放一下:

1
2
3
searchsploit drupal
searchsploit -p 34992.py
python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.16.130 -u adm1n -p 123123

searchsploit_drupal

此模块利用版本为7.0<7.31的,查看一下drupal的版本

view_version

刚好可以利用,然后接下来就是利用模块添加管理员,直接看图

add_admin

admin_complete

由于完整图片太长,我就只放利用成功后的图片,然后就用创建的管理员账号登录就好啦

flag3

登录进去以后还需要在content里面找到flag3的页面才能查看。接下来就找最后的flag了,而根据前面flag4的提示会发现flag在root目录下面,接下来就需要提权了。

提权

前面也已经说过了,因为我以前没有练习过内网渗透,所以也就没有进行过提权,一开始的时候我找了一下脏牛的提权exp,但是由于版本问题没有利用成功。后来看了许多师傅们的文章后知道了利用SUID提权的方法,我们找一下系统中有SUID的命令:

1
2
3
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

这三个中的任何一个都可以,至于为什么要看具有SUID权限的命令和上面三个命令的原理还请了解一下find命令的用法和Linux下的用户、组和权限,而2>/dev/null这部分是为了隐藏错误信息,不明白的请看find提权的拆分讲解

view_suid

可以看到这些命令都是有SUID权限的,常用的就是用find命令提权,我们先来测试一下

1
find flag1.txt -exec whoami \;

flag1.txt也可以换成其他存在的文件,不过千万不要用/根目录代替(自己体会)

whoami

可以看到使用find执行一个系统命令的权限就是root,那下面就用find命令执行一个nc反弹shell,也就是以root的身份给我们反弹一个具有root权限的shell

1
find flag1.txt -exec nc -lvp 6666 -e /bin/sh \;

nc_shell

可以看到已经成功反弹shell,并且用户已经是root了,那么就直接到root目录下查看

final_flag

大功告成,刚看到的时候还是有点激动滴,那么这次内网渗透练习也已经结束了,后面会让这次练习过程中没有完全理解的地方再查资料给弄明白,也会再练习其他难度的靶机,欢迎各位师傅们指导交流哦。

结语

写完这篇文章,此刻已是深夜,禁不住会回想过往。刚开始学习网安的时候还时不时会有些犹豫,也曾动过学习其他专业的想法,但是一路坚持到现在也已经有了热爱,也感谢身边所有朋友的陪伴,每天有小伙伴一起学习也是很快乐的,加油!

这才不是结束,正相反,这只是开始!

It’s not the end, it’s just the beginning……